<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Receive Valuable Information from Our Blog Page on JetThoughts</title><link>https://jetthoughts.com/blog/</link><description>Recent content in Receive Valuable Information from Our Blog Page on JetThoughts</description><generator>Hugo</generator><language>en-us</language><copyright>This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.</copyright><lastBuildDate>Sun, 04 Oct 2026 05:21:41 +0200</lastBuildDate><atom:link href="https://jetthoughts.com/blog/index.xml" rel="self" type="application/rss+xml"/><item><title>Should You Let Them Build It in Rails?</title><link>https://jetthoughts.com/blog/should-you-build-it-in-rails/</link><pubDate>Wed, 23 Sep 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/should-you-build-it-in-rails/</guid><description>&lt;p&gt;Somebody has proposed building your product in Ruby on Rails. You cannot evaluate that recommendation yourself, and the person making it has an interest in your saying yes.&lt;/p&gt;&#10;&lt;p&gt;We are a Rails shop, so we have that interest too. Here is the answer we would give you anyway.&lt;/p&gt;&#10;&lt;p&gt;You are not going to be able to judge the framework. Nobody sells you a stack decision you can verify, and the comparisons that circulate are mostly unusable, including the ones that favour us.&lt;/p&gt;</description></item><item><title>Autonomous Agent Teams Are Real. Measured Success Runs 13% to 59%.</title><link>https://jetthoughts.com/blog/agent-team-success-rate/</link><pubDate>Wed, 09 Sep 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/agent-team-success-rate/</guid><description>&lt;p&gt;You can stand up a team of autonomous agents this afternoon. Whether it produces anything you would ship is a separate question.&lt;/p&gt;&#10;&lt;p&gt;A group at UC Berkeley collected execution traces from seven multi-agent frameworks and published how often each one finished its task correctly. Six of them, on their own benchmarks:&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Framework&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th style="text-align: right"&gt;Success on its own benchmark&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;AG2&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;59.0%&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;MetaGPT&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;40.0%&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Magentic-One&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;38.0%&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;ChatDev&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;33.3%&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;HyperAgent&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;25.3%&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;AppWorld&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td style="text-align: right"&gt;13.3%&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;If you go and check that figure, it is captioned &amp;ldquo;Failure rates&amp;rdquo; - I have flipped it, because the chart&amp;rsquo;s own legend labels those segments Success. The caption warns against reading it as a ranking: &amp;ldquo;Performances are measured on different benchmarks, therefore they are not directly comparable.&amp;rdquo; AppWorld and AG2 are not attempting the same thing. The caption also names the models, GPT-4o and Claude-3.7-Sonnet, which is not what you would wire up today. Whether the failures got better when the models did is unmeasured.&lt;/p&gt;</description></item><item><title>Have an App Idea? Here's Where to Start</title><link>https://jetthoughts.com/blog/app-idea-where-to-start/</link><pubDate>Wed, 09 Sep 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/app-idea-where-to-start/</guid><description>&lt;p&gt;You have an app idea, but you&amp;rsquo;re stuck before the first step. Should you find a developer, learn an AI tool, or write down everything the app needs to do?&lt;/p&gt;&#10;&lt;p&gt;Start by describing one task someone should be able to complete. A request like &amp;ldquo;build an app for freelancers&amp;rdquo; leaves too much undecided: which freelancer, what problem, and what should happen when they open it?&lt;/p&gt;&#10;&lt;p&gt;You can work through those decisions in ordinary language. For your first attempt, aim for a short description of the problem and a few rough screens for the approach you choose, then use an AI builder to turn them into a clickable demo.&lt;/p&gt;</description></item><item><title>"Generate Then Verify" Moved Your Work. It Didn't Remove It.</title><link>https://jetthoughts.com/blog/generate-then-verify-moved-the-work/</link><pubDate>Wed, 02 Sep 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/generate-then-verify-moved-the-work/</guid><description>&lt;p&gt;Let the model write the code, then you check it. That is the advice, and four out of five teams who took it now spend more time in review than they did before.&lt;/p&gt;&#10;&lt;h2 id="somebody-measured-where-the-hours-went"&gt;Somebody measured where the hours went &lt;a class="hlink" href="#somebody-measured-where-the-hours-went" aria-label="Link to Somebody measured where the hours went"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Harness surveyed 700 engineering practitioners and managers at large enterprises across five countries this April, through Sapio Research:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;81% say developers spend more time in code review since adopting AI coding tools, with 28% reporting a significant increase of more than 30%.&lt;/p&gt;</description></item><item><title>Your AI Reviewer Approved It. Did It Read Its Own Report?</title><link>https://jetthoughts.com/blog/ai-powered-code-reviews-transforming-development-workflows/</link><pubDate>Fri, 28 Aug 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ai-powered-code-reviews-transforming-development-workflows/</guid><description>&lt;p&gt;We built a code reviewer out of AI agents. Three specialists read a change in parallel, one for security, one for performance, one for style, and a fourth agent merges what they found into a single review.&lt;/p&gt;&#10;&lt;p&gt;The diff we gave it interpolated a customer name straight into a &lt;code&gt;SELECT&lt;/code&gt;. The reviewer found the injection and described it accurately.&lt;/p&gt;&#10;&lt;p&gt;The same response said &lt;strong&gt;approve&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;If somebody has ever told you the AI reviewed it, the sentence you were handed was the verdict. The verdict is the part that was wrong.&lt;/p&gt;</description></item><item><title>Your Dev Shop Says the Code Was Reviewed. By What?</title><link>https://jetthoughts.com/blog/dev-shop-ai-code-review-what-to-ask/</link><pubDate>Wed, 26 Aug 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/dev-shop-ai-code-review-what-to-ask/</guid><description>&lt;p&gt;&amp;ldquo;It&amp;rsquo;s been reviewed&amp;rdquo; used to mean a person read it.&lt;/p&gt;&#10;&lt;p&gt;That is no longer a safe assumption, and the change happened fast enough that most founders never got told. GitHub published the number in March: Copilot code review usage &amp;ldquo;has grown 10X, now accounting for more than one in five code reviews on GitHub.&amp;rdquo; If your shop works on GitHub, there is a reasonable chance the reviewer on your last release was software.&lt;/p&gt;</description></item><item><title>How to Audit Content You Didn't Write</title><link>https://jetthoughts.com/blog/how-to-audit-content-you-didnt-write/</link><pubDate>Sat, 22 Aug 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-to-audit-content-you-didnt-write/</guid><description>&lt;p&gt;There is no Hanover Institute for Public Policy. There is a website carrying more than a hundred reports under that name - footnotes, tables of contents, the flat neutral register that policy writing has - and behind it a marketing firm working on a government contract.&lt;/p&gt;&#10;&lt;p&gt;NewsGuard analyst Alice Lee connected it to Piro, Inc., &lt;a href="https://responsiblestatecraft.org/israel-influence-chatgpt/"&gt;reported by Responsible Statecraft&lt;/a&gt;; Politico first reported the Department of Justice filing, under which Piro has received $900,000 from the Israeli government for its work. GPTZero flagged all twelve sampled articles as AI-written - eleven with high confidence, one moderate.&lt;/p&gt;</description></item><item><title>What Senior Devs Catch That AI Misses</title><link>https://jetthoughts.com/blog/what-senior-developers-catch-that-ai-misses/</link><pubDate>Sat, 22 Aug 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/what-senior-developers-catch-that-ai-misses/</guid><description>&lt;p&gt;Here is a change we caught before it merged. It is small, it is plausible, and it is wrong in a way you cannot see without knowing Rails.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-diff" data-lang="diff"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ffa198;background-color:#490202"&gt;- Propshaft replaces Sprockets as the default asset pipeline in Rails 8, and the&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ffa198;background-color:#490202"&gt;- difference is dramatic: in our experience, build times drop from 45-60 seconds&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ffa198;background-color:#490202"&gt;- to under 5 seconds for medium-sized apps.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56d364;background-color:#0f5323"&gt;+ Propshaft replaces Sprockets as the default asset pipeline in Rails 8. It drops&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56d364;background-color:#0f5323"&gt;+ the transpilation and concatenation stages entirely, so asset precompilation&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#56d364;background-color:#0f5323"&gt;+ stops being a build step that scales with your asset count.&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;The deletion is correct. That timing figure had no measurement behind it and deserved to go.&lt;/p&gt;</description></item><item><title>Your Link Checker Is Probably Checking Nothing</title><link>https://jetthoughts.com/blog/when-did-a-test-last-fail-on-purpose/</link><pubDate>Sat, 22 Aug 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/when-did-a-test-last-fail-on-purpose/</guid><description>&lt;p&gt;A link checker reporting zero broken links is telling you one of two things, and the output looks identical either way: it inspected everything and found nothing, or it inspected almost nothing. Ours had been doing the second since the day it shipped.&lt;/p&gt;&#10;&lt;p&gt;Here is the run that caught it:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;🔍 149516 Total 🔗 31937 Unique ✅ 15642 OK 🚫 0 Errors 👻 133874 Excluded&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;133,874 excluded&lt;/strong&gt; of 149,516. Only 15,642 links were ever looked at, and the gate had been reporting that as a pass on every pull request since the day it shipped.&lt;/p&gt;</description></item><item><title>RubyLLM vs Langchainrb for Rails</title><link>https://jetthoughts.com/blog/rubyllm-vs-langchainrb-rails-llm-stack/</link><pubDate>Fri, 21 Aug 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rubyllm-vs-langchainrb-rails-llm-stack/</guid><description>&lt;p&gt;&lt;code&gt;ruby_llm&lt;/code&gt; 1.16.0 ships &lt;code&gt;chat.rb&lt;/code&gt;, &lt;code&gt;agent.rb&lt;/code&gt;, &lt;code&gt;embedding.rb&lt;/code&gt;, &lt;code&gt;cost.rb&lt;/code&gt;, a model registry and an ActiveRecord integration. &lt;code&gt;langchainrb&lt;/code&gt; 0.19.5 ships &lt;code&gt;vectorsearch/&lt;/code&gt;, &lt;code&gt;chunker/&lt;/code&gt;, &lt;code&gt;loader.rb&lt;/code&gt;, &lt;code&gt;output_parsers/&lt;/code&gt; and &lt;code&gt;evals/&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;ruby_llm&lt;/code&gt; talks to models. &lt;code&gt;langchainrb&lt;/code&gt; finds your documents first, then hands them to a model. Work out which of those you need and the rest of the choice gets easy.&lt;/p&gt;&#10;&lt;div class="mermaid" data-processed="true" data-prerendered="true"&gt;&lt;svg id="my-svg" width="100%" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" class="flowchart" style="max-width: 272px; background-color: transparent;" viewBox="0 0 272 540" role="graphics-document document" aria-roledescription="flowchart-v2"&gt;&lt;style&gt;#my-svg{font-family:'Caveat','Patrick Hand','Comic Sans MS',cursive;font-size:20px;fill:#1a1a1a;}@keyframes edge-animation-frame{from{stroke-dashoffset:0;}}@keyframes dash{to{stroke-dashoffset:0;}}#my-svg .edge-animation-slow{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 50s linear infinite;stroke-linecap:round;}#my-svg .edge-animation-fast{stroke-dasharray:9,5!important;stroke-dashoffset:900;animation:dash 20s linear infinite;stroke-linecap:round;}#my-svg .error-icon{fill:hsl(180, 100%, 100%);}#my-svg .error-text{fill:#000000;stroke:#000000;}#my-svg .edge-thickness-normal{stroke-width:1px;}#my-svg .edge-thickness-thick{stroke-width:3.5px;}#my-svg .edge-pattern-solid{stroke-dasharray:0;}#my-svg .edge-thickness-invisible{stroke-width:0;fill:none;}#my-svg .edge-pattern-dashed{stroke-dasharray:3;}#my-svg .edge-pattern-dotted{stroke-dasharray:2;}#my-svg .marker{fill:#333;stroke:#333;}#my-svg .marker.cross{stroke:#333;}#my-svg svg{font-family:'Caveat','Patrick Hand','Comic Sans MS',cursive;font-size:20px;}#my-svg p{margin:0;}#my-svg .label{font-family:'Caveat','Patrick Hand','Comic Sans MS',cursive;color:#1a1a1a;}#my-svg .cluster-label text{fill:#000000;}#my-svg .cluster-label span{color:#000000;}#my-svg .cluster-label span p{background-color:transparent;}#my-svg .label text,#my-svg span{fill:#1a1a1a;color:#1a1a1a;}#my-svg .node rect,#my-svg .node circle,#my-svg .node ellipse,#my-svg .node polygon,#my-svg .node path{fill:#fff5f5;stroke:#cc342d;stroke-width:1px;}#my-svg .rough-node .label text,#my-svg .node .label text,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-anchor:middle;}#my-svg .node .katex path{fill:#000;stroke:#000;stroke-width:1px;}#my-svg .rough-node .label,#my-svg .node .label,#my-svg .image-shape .label,#my-svg .icon-shape .label{text-align:center;}#my-svg .node.clickable{cursor:pointer;}#my-svg .root .anchor path{fill:#333!important;stroke-width:0;stroke:#333;}#my-svg .arrowheadPath{fill:#0b0b0b;}#my-svg .edgePath .path{stroke:#333;stroke-width:1px;}#my-svg .flowchart-link{stroke:#333;fill:none;}#my-svg .edgeLabel{background-color:#faf7f2;text-align:center;}#my-svg .edgeLabel p{background-color:#faf7f2;}#my-svg .edgeLabel rect{opacity:0.5;background-color:#faf7f2;fill:#faf7f2;}#my-svg .labelBkg{background-color:rgba(250, 247, 242, 0.5);}#my-svg .cluster rect{fill:hsl(180, 100%, 100%);stroke:hsl(180, 60%, 90%);stroke-width:1px;}#my-svg .cluster text{fill:#000000;}#my-svg .cluster span{color:#000000;}#my-svg .node .collapsed-indicator{fill:hsl(180, 60%, 90%);stroke:none;opacity:0.6;}#my-svg .node .collapsed-separator{stroke:hsl(180, 60%, 90%);stroke-width:0.75px;}#my-svg div.mermaidTooltip{position:absolute;text-align:center;max-width:200px;padding:2px;font-family:'Caveat','Patrick Hand','Comic Sans MS',cursive;font-size:12px;background:hsl(180, 100%, 100%);border:1px solid hsl(180, 60%, 90%);border-radius:2px;pointer-events:none;z-index:100;}#my-svg .flowchartTitleText{text-anchor:middle;font-size:18px;fill:#1a1a1a;}#my-svg rect.text{fill:none;stroke-width:0;}#my-svg .icon-shape,#my-svg .image-shape{background-color:#faf7f2;text-align:center;}#my-svg .icon-shape p,#my-svg .image-shape p{background-color:#faf7f2;padding:2px;}#my-svg .icon-shape .label rect,#my-svg .image-shape .label rect{opacity:0.5;background-color:#faf7f2;fill:#faf7f2;}#my-svg .label-icon{display:inline-block;height:1em;overflow:visible;vertical-align:-0.125em;}#my-svg .node .label-icon path{fill:currentColor;stroke:revert;stroke-width:revert;}#my-svg .node .neo-node{stroke:#cc342d;}#my-svg [data-look="neo"].node rect,#my-svg [data-look="neo"].cluster rect,#my-svg [data-look="neo"].node polygon{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].swimlane.cluster rect{filter:none;}#my-svg [data-look="neo"].node path{stroke:url(#my-svg-gradient);stroke-width:1px;}#my-svg [data-look="neo"].node .outer-path{filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node .neo-line path{stroke:#cc342d;filter:none;}#my-svg [data-look="neo"].node circle{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].node circle .state-start{fill:#000000;}#my-svg [data-look="neo"].icon-shape .icon{fill:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg [data-look="neo"].icon-shape .icon-neo path{stroke:url(#my-svg-gradient);filter:drop-shadow( 1px 2px 2px rgba(185,185,185,1));}#my-svg .edgePaths path{stroke-width:2.25px;}#my-svg .edgeLabel{border-radius:6px;}#my-svg :root{--mermaid-font-family:"trebuchet ms",verdana,arial,sans-serif;}&lt;/style&gt;&lt;g&gt;&lt;marker id="my-svg_flowchart-v2-pointEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 0 L 10 5 L 0 10 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/&gt;&lt;/marker&gt;&lt;marker id="my-svg_flowchart-v2-pointStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="4.5" refY="5" markerUnits="userSpaceOnUse" markerWidth="8" markerHeight="8" orient="auto"&gt;&lt;path d="M 0 5 L 10 10 L 10 0 z" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/&gt;&lt;/marker&gt;&lt;marker id="my-svg_flowchart-v2-pointEnd-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="11.5" refY="7" markerUnits="userSpaceOnUse" markerWidth="10.5" markerHeight="14" orient="auto"&gt;&lt;path d="M 0 0 L 11.5 7 L 0 14 z" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/&gt;&lt;/marker&gt;&lt;marker id="my-svg_flowchart-v2-pointStart-margin" class="marker flowchart-v2" viewBox="0 0 11.5 14" refX="1" refY="7" markerUnits="userSpaceOnUse" markerWidth="11.5" markerHeight="14" orient="auto"&gt;&lt;polygon points="0,7 11.5,14 11.5,0" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/&gt;&lt;/marker&gt;&lt;marker id="my-svg_flowchart-v2-circleEnd" class="marker flowchart-v2" viewBox="0 0 10 10" refX="11" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/&gt;&lt;/marker&gt;&lt;marker id="my-svg_flowchart-v2-circleStart" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-1" refY="5" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 1; stroke-dasharray: 1, 0;"/&gt;&lt;/marker&gt;&lt;marker id="my-svg_flowchart-v2-circleEnd-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refY="5" refX="12.25" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/&gt;&lt;/marker&gt;&lt;marker id="my-svg_flowchart-v2-circleStart-margin" class="marker flowchart-v2" viewBox="0 0 10 10" refX="-2" refY="5" markerUnits="userSpaceOnUse" markerWidth="14" markerHeight="14" orient="auto"&gt;&lt;circle cx="5" cy="5" r="5" class="arrowMarkerPath" style="stroke-width: 0; stroke-dasharray: 1, 0;"/&gt;&lt;/marker&gt;&lt;marker id="my-svg_flowchart-v2-crossEnd" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="12" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/&gt;&lt;/marker&gt;&lt;marker id="my-svg_flowchart-v2-crossStart" class="marker cross flowchart-v2" viewBox="0 0 11 11" refX="-1" refY="5.2" markerUnits="userSpaceOnUse" markerWidth="11" markerHeight="11" orient="auto"&gt;&lt;path d="M 1,1 l 9,9 M 10,1 l -9,9" class="arrowMarkerPath" style="stroke-width: 2; stroke-dasharray: 1, 0;"/&gt;&lt;/marker&gt;&lt;marker id="my-svg_flowchart-v2-crossEnd-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="17.7" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5;"/&gt;&lt;/marker&gt;&lt;marker id="my-svg_flowchart-v2-crossStart-margin" class="marker cross flowchart-v2" viewBox="0 0 15 15" refX="-3.5" refY="7.5" markerUnits="userSpaceOnUse" markerWidth="12" markerHeight="12" orient="auto"&gt;&lt;path d="M 1,1 L 14,14 M 1,14 L 14,1" class="arrowMarkerPath" style="stroke-width: 2.5; stroke-dasharray: 1, 0;"/&gt;&lt;/marker&gt;&lt;g class="root"&gt;&lt;g class="clusters"/&gt;&lt;g class="edgePaths"&gt;&lt;path d="M136,126L136,130.583C136,135.167,136,144.333,136,152.833C136,161.333,136,169.167,136,173.083L136,177" id="my-svg-L_A_B_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_A_B_0" data-points="W3sieCI6MTM2LCJ5IjoxMjZ9LHsieCI6MTM2LCJ5IjoxNTMuNX0seyJ4IjoxMzYsInkiOjE4MX1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/&gt;&lt;path d="M136,359L136,363.583C136,368.167,136,377.333,136,385.833C136,394.333,136,402.167,136,406.083L136,410" id="my-svg-L_B_C_0" class="edge-thickness-normal edge-pattern-solid edge-thickness-normal edge-pattern-solid flowchart-link" style=";" data-edge="true" data-et="edge" data-id="L_B_C_0" data-points="W3sieCI6MTM2LCJ5IjozNTl9LHsieCI6MTM2LCJ5IjozODYuNX0seyJ4IjoxMzYsInkiOjQxNH1d" data-look="classic" marker-end="url(#my-svg_flowchart-v2-pointEnd)"/&gt;&lt;/g&gt;&lt;g class="edgeLabels"&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_A_B_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="edgeLabel"&gt;&lt;g class="label" data-id="L_B_C_0" transform="translate(0, 0)"&gt;&lt;foreignObject width="0" height="0"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" class="labelBkg" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="edgeLabel"&gt;&lt;/span&gt;&lt;/div&gt;&lt;/foreignObject&gt;&lt;/g&gt;&lt;/g&gt;&lt;/g&gt;&lt;g class="nodes"&gt;&lt;g class="node default" id="my-svg-flowchart-A-0" data-look="classic" transform="translate(136, 67)"&gt;&lt;rect class="basic label-container" style="" x="-118.375" y="-59" width="236.75" height="118"/&gt;&lt;g class="label" style="" transform="translate(-90.375, -45)"&gt;&lt;rect/&gt;&lt;foreignObject width="180.75" height="90"&gt;&lt;div xmlns="http://www.w3.org/1999/xhtml" style="display: table-cell; white-space: nowrap; line-height: 1.5; max-width: 200px; text-align: center;"&gt;&lt;span class="nodeLabel"&gt;&lt;p&gt;Searching your own&lt;br /&gt;documents?&lt;br /&gt;langchainrb&lt;/p&gt;</description></item><item><title>What RubyLLM Retries, and For How Long</title><link>https://jetthoughts.com/blog/rubyllm-retries-timeouts-rails/</link><pubDate>Fri, 21 Aug 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rubyllm-retries-timeouts-rails/</guid><description>&lt;p&gt;When a provider starts failing, two things decide what your app does. One is a line in &lt;code&gt;ruby_llm&lt;/code&gt;. The other is a setting &lt;code&gt;ruby_llm&lt;/code&gt; never touches. You will not find either by reading your own code.&lt;/p&gt;&#10;&lt;p&gt;Here is the line, in &lt;code&gt;connection.rb&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;methods: &lt;span style="color:#79c0ff;font-weight:bold"&gt;Faraday&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt;&lt;span style="color:#79c0ff;font-weight:bold"&gt;Retry&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt;&lt;span style="color:#79c0ff;font-weight:bold"&gt;Middleware&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt;&lt;span style="color:#79c0ff;font-weight:bold"&gt;IDEMPOTENT_METHODS&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;+&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;:post&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;]&lt;/span&gt;,&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Faraday&amp;rsquo;s list is &lt;code&gt;delete get head options put&lt;/code&gt;. POST is missing on purpose, because sending a POST twice can do the thing twice. &lt;code&gt;ruby_llm&lt;/code&gt; puts it back, and it has no choice - every chat completion is a POST, so sticking to Faraday&amp;rsquo;s list would mean never retrying a completion at all.&lt;/p&gt;</description></item><item><title>Debugging RubyLLM Agents in Rails</title><link>https://jetthoughts.com/blog/debugging-rubyllm-agents-rails/</link><pubDate>Thu, 20 Aug 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/debugging-rubyllm-agents-rails/</guid><description>&lt;p&gt;Debugging RubyLLM agents in Rails keeps landing me on the same question: what is a green test suite actually asserting when the thing under test lives on someone else&amp;rsquo;s server?&lt;/p&gt;&#10;&lt;p&gt;Last week we moved all nine schemas in the talent-matching pipeline we run onto a different schema library. Every request body we send changed shape. All 1549 tests stayed green, and by the rules they had been given, they were right to.&lt;/p&gt;</description></item><item><title>Evaluating LLM Agents in Rails</title><link>https://jetthoughts.com/blog/evaluating-rubyllm-agents-rails/</link><pubDate>Thu, 20 Aug 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/evaluating-rubyllm-agents-rails/</guid><description>&lt;p&gt;The most useful question about our talent-matching pipeline usually arrives weeks late: why did it stop on this role after two iterations? Today we can answer that by reading one database row, and getting there took more deliberate work than any prompt did.&lt;/p&gt;&#10;&lt;p&gt;Evaluating LLM agents in Rails turned out to be mostly a record-keeping problem. There is a Rails engine for this now - &lt;a href="https://github.com/sinaptia/ruby_llm-evals"&gt;&lt;code&gt;ruby_llm-evals&lt;/code&gt;&lt;/a&gt; mounts a UI that grades prompt outputs against a dataset with exact-match, regex, or human review - and it still would not have answered that question. It grades finished answers. It never sees the iterations.&lt;/p&gt;</description></item><item><title>Multi-Agent LLM Pipelines in Rails</title><link>https://jetthoughts.com/blog/multi-agent-llm-rails-rubyllm/</link><pubDate>Thu, 20 Aug 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/multi-agent-llm-rails-rubyllm/</guid><description>&lt;p&gt;The multi-agent ecosystem wants to sell you an orchestration layer. Agent graphs, message buses, and somewhere a YAML file describing your &amp;ldquo;crew&amp;rdquo;. We run a multi-agent LLM pipeline in Rails, in production, for a talent-matching product, and the entire framework underneath its eight agents is 37 lines of our own code on top of &lt;a href="https://rubyllm.com/agents/"&gt;RubyLLM&lt;/a&gt;: a 21-line base class and a 16-line loop.&lt;/p&gt;&#10;&lt;p&gt;The product matches candidates to open roles. One agent expands the search query, another reranks, a third scores each candidate against the role, and a reflector decides whether another round is worth running. Each of them is a plain Ruby class.&lt;/p&gt;</description></item><item><title>Ruby 4.0 YJIT vs ZJIT: Performance Guide</title><link>https://jetthoughts.com/blog/ruby-3-4-yjit-performance-guide/</link><pubDate>Thu, 20 Aug 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ruby-3-4-yjit-performance-guide/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Updated August 2026.&lt;/strong&gt; This guide originally covered YJIT on Ruby 3.4. &lt;a href="https://www.ruby-lang.org/en/news/2025/12/25/ruby-4-0-0-released/"&gt;Ruby 4.0 shipped on December 25, 2025&lt;/a&gt; with a second JIT compiler, so the advice below now covers both.&lt;/p&gt;&#10;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Ruby 4.0 ships two JIT compilers in the same binary. YJIT is the one your Rails app is probably already running without you having configured anything. ZJIT is its successor, and the release notes that introduce it also tell you not to deploy it.&lt;/p&gt;</description></item><item><title>Ruby Fibers for LLM Streaming in Rails</title><link>https://jetthoughts.com/blog/fibers-async-ruby-llm-streaming-rails/</link><pubDate>Thu, 20 Aug 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/fibers-async-ruby-llm-streaming-rails/</guid><description>&lt;p&gt;A streamed LLM reply takes somewhere between 10 and 60 seconds to finish, and for the whole of that time the Rails thread serving it does almost nothing. It holds the connection open, writes a token whenever the provider sends one, and waits. Ruby fibers exist for exactly this shape of work, which is why LLM streaming in Rails keeps pulling teams toward the &lt;a href="https://github.com/socketry/async"&gt;async&lt;/a&gt; gem and Falcon.&lt;/p&gt;&#10;&lt;p&gt;Before you swap web servers, though, it&amp;rsquo;s worth doing the arithmetic. On plenty of apps the boring answer wins.&lt;/p&gt;</description></item><item><title>RubyLLM in Rails: Chat, Tools, Streaming</title><link>https://jetthoughts.com/blog/rubyllm-rails-getting-started/</link><pubDate>Thu, 20 Aug 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rubyllm-rails-getting-started/</guid><description>&lt;p&gt;Adding a second LLM provider is where the wrapper class dies. The OpenAI client you wrote in an afternoon buries its text under &lt;code&gt;choices[0].message.content&lt;/code&gt;; Anthropic shapes its responses differently and streams differently, so your service object grows a case statement and then a retry matrix. Six months in, you&amp;rsquo;re maintaining a worse version of a gem that already exists.&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://rubyllm.com"&gt;RubyLLM&lt;/a&gt; gives Rails one interface for all of it. &lt;code&gt;RubyLLM.chat&lt;/code&gt; speaks to OpenAI, Anthropic, Gemini, Ollama, and any OpenAI-compatible endpoint through the same handful of methods, and &lt;a href="https://github.com/crmne/ruby_llm"&gt;the dependency list stays deliberately light&lt;/a&gt;: Faraday and its plugins for HTTP, Zeitwerk, Marcel, and a few small support gems - no ML stack riding along.&lt;/p&gt;</description></item><item><title>Migrate a Lovable or Replit App to Rails</title><link>https://jetthoughts.com/blog/migrate-lovable-replit-app-to-rails/</link><pubDate>Sat, 08 Aug 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/migrate-lovable-replit-app-to-rails/</guid><description>&lt;p&gt;The prototype did its job. You described the app, Lovable or Replit built it, real users are in it - and now something is pushing you toward a production stack: paying customers you can&amp;rsquo;t risk, a security scare, or features the tool keeps mangling. The first question of the migration is also the one that sets the budget: what do you get to keep?&lt;/p&gt;&#10;&lt;p&gt;More than you fear, and less than you hope. The database and its data move cleanly, the React front end often comes along, and the two trust-critical pieces - who can see what, and who paid for what - are rebuilds. This guide walks the whole path: what transfers, how to get the data out, and how to rebuild the parts you shouldn&amp;rsquo;t keep.&lt;/p&gt;</description></item><item><title>Rails 7 End of Life: Pick Your Exit</title><link>https://jetthoughts.com/blog/rails-7-eol-unpatched-security-exposure/</link><pubDate>Sat, 08 Aug 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rails-7-eol-unpatched-security-exposure/</guid><description>&lt;p&gt;On July 29 the Rails security team fixed a CVSSv4 9.5 vulnerability in Active Storage - an unauthenticated upload that reads files off your server and &lt;a href="https://github.com/rails/rails/security/advisories/GHSA-xr9x-r78c-5hrm"&gt;may enable code execution&lt;/a&gt;. Three branches got a patched release that day: 7.2, 8.0, and 8.1. One of those three, 7.2, reached the end of its security support on August 9, 2026 - eleven days after carrying the patch, upstream stopped shipping it fixes. Rails 7.1 and everything below it got nothing.&lt;/p&gt;</description></item><item><title>Rails CVE-2026-66066: Patch Isn't Enough</title><link>https://jetthoughts.com/blog/rails-cve-2026-66066-active-storage-rce/</link><pubDate>Sat, 08 Aug 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rails-cve-2026-66066-active-storage-rce/</guid><description>&lt;p&gt;You bumped Rails to 8.1.3.1 on a stock Ubuntu 22.04 image and deployed. The app refused to boot.&lt;/p&gt;&#10;&lt;p&gt;That&amp;rsquo;s the patch working as designed. &lt;strong&gt;CVE-2026-66066&lt;/strong&gt; - the Active Storage bug the researchers at Ethiack named &amp;ldquo;KindaRails2Shell&amp;rdquo; - can&amp;rsquo;t be fixed by the gem alone. The patched releases check your libvips version at boot and raise when the library is too old. The gem bump is half the job. Getting the container&amp;rsquo;s libvips to 8.13 and rotating every secret the process could&amp;rsquo;ve leaked is the rest.&lt;/p&gt;</description></item><item><title>Kamal 2 Multi-Server Deployment Guide</title><link>https://jetthoughts.com/blog/kamal-2-multi-server-deployment-complete-guide/</link><pubDate>Fri, 07 Aug 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/kamal-2-multi-server-deployment-complete-guide/</guid><description>&lt;p&gt;Add a second host under &lt;code&gt;servers:&lt;/code&gt; and run &lt;code&gt;kamal deploy&lt;/code&gt;. If your proxy config has &lt;code&gt;ssl: true&lt;/code&gt;, the deploy dies before Kamal opens a single SSH connection:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;SSL is only supported on a single server unless you provide custom certificates, found 2 servers for role web&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That&amp;rsquo;s a hard &lt;code&gt;ConfigurationError&lt;/code&gt;, raised during validation. It&amp;rsquo;s also the first of several things that were free on one box and aren&amp;rsquo;t on two. Kamal won&amp;rsquo;t warn you about most of the others, and that error gets its answer further down, in the TLS section.&lt;/p&gt;</description></item><item><title>Cheap Developers Are Expensive Without Review</title><link>https://jetthoughts.com/blog/cheap-developers-expensive-without-cto-review/</link><pubDate>Fri, 31 Jul 2026 08:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/cheap-developers-expensive-without-cto-review/</guid><description>&lt;p&gt;The cheap developer isn&amp;rsquo;t the mistake. The mistake is that nobody senior ever reads what they merge - and you find that out in month four, when something breaks and the person who built it can&amp;rsquo;t explain why.&lt;/p&gt;&#10;&lt;p&gt;Maybe you hired a computer science student, or a freelancer a friend vouched for. The demos look fine, the invoices are small, and some quiet evening you catch yourself wondering whether the code behind the demo is as good as the price.&lt;/p&gt;</description></item><item><title>Asked for an Admin Panel, Got a Spaceship</title><link>https://jetthoughts.com/blog/asked-simple-admin-panel-built-spaceship/</link><pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/asked-simple-admin-panel-built-spaceship/</guid><description>&lt;p&gt;Somewhere in your sent folder is the message that started it: &amp;ldquo;we just need a simple admin panel so I can see who signed up.&amp;rdquo; What came back two months later had login roles for a staff you don&amp;rsquo;t have, an audit log (a record of who changed what), a settings page with four tabs, and a chart nobody asked for. And the invoice covered all of it.&lt;/p&gt;&#10;&lt;p&gt;&#10;&lt;img src="https://jetthoughts.com/blog/asked-simple-admin-panel-built-spaceship/blanks-get-filled.svg" alt="Nobody filled your blanks on purpose, and the invoice covers what they imagined. Top card, what you sent: we just need a simple admin panel, so I can see who signed up - with simple admin panel highlighted in amber and marked as having no moment and no finish line. An arrow leads down through a note reading: filled in with whatever the last client got. Bottom card, in red, what came back two months later: login roles for a staff you do not have, an audit log, a settings page with four tabs, and a chart nobody asked for - with an arrow into the list noting that none of it shows you who signed up" width="720" height="570" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Dev Shop Contract: Who Owns the Code?</title><link>https://jetthoughts.com/blog/dev-shop-contract-code-ownership/</link><pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/dev-shop-contract-code-ownership/</guid><description>&lt;p&gt;Under US copyright law, whoever writes the code holds the copyright unless they are an employee of the agency or signed it away. Paying the invoice does not move that ownership to you, and a surprising number of agency contracts never do it properly either.&lt;/p&gt;&#10;&lt;p&gt;Your dev shop contract is the only document that decides who owns the code, and paying every invoice on time does not change what it says. You can have a signed master services agreement and a product your customers open every morning, and still not have the legal right to hand that codebase to a different team next month.&lt;/p&gt;</description></item><item><title>Retros Are Your Transparency Tool</title><link>https://jetthoughts.com/blog/retros-founder-transparency-tool/</link><pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/retros-founder-transparency-tool/</guid><description>&lt;p&gt;&amp;ldquo;We hit a few blockers this sprint but we&amp;rsquo;re back on track.&amp;rdquo; Your project manager has said some version of that on three consecutive Thursday calls, and you have no way to check it.&lt;/p&gt;&#10;&lt;p&gt;Retros for non-technical founders are the cheapest fix for exactly that problem, and your dev shop may not be running them at all. Nobody warns you to ask, because retrospectives get written up as a thing engineers do among themselves.&lt;/p&gt;</description></item><item><title>Switch Dev Shops Without Losing Progress</title><link>https://jetthoughts.com/blog/switch-dev-shops-safely-transition-guide/</link><pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/switch-dev-shops-safely-transition-guide/</guid><description>&lt;p&gt;The termination email is the last step, not the first. Founders send it in the wrong order, usually on a Sunday night after one bad week, and then spend two months paying a new team to rediscover things the old team knew.&lt;/p&gt;&#10;&lt;p&gt;You can survive losing the relationship. What costs you the quarter is losing the deploy process, the environment variables nobody wrote down, and the reason the payment retry logic has that odd 90-second delay.&lt;/p&gt;</description></item><item><title>What SLAs to Require From Your Dev Shop</title><link>https://jetthoughts.com/blog/dev-shop-sla-requirements-checklist/</link><pubDate>Fri, 31 Jul 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/dev-shop-sla-requirements-checklist/</guid><description>&lt;p&gt;Your dev shop has no SLA. That means they have no obligation to fix anything, ever - at least not on any timeline a lawyer could point to.&lt;/p&gt;&#10;&lt;p&gt;Harsh? Pull up your agreement and check. An SLA (service level agreement) is the part of a contract that puts numbers on the service: how fast the team answers when something breaks, how fast they fix it, and - once you have users - how often the app stays up. Most first-time founder contracts skip all of that and promise &amp;ldquo;commercially reasonable efforts&amp;rdquo; instead.&lt;/p&gt;</description></item><item><title>Solid Queue: Retries, Concurrency, Monitoring</title><link>https://jetthoughts.com/blog/solid-queue-advanced-patterns-retries-concurrency/</link><pubDate>Fri, 24 Jul 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/solid-queue-advanced-patterns-retries-concurrency/</guid><description>&lt;p&gt;The Solid Queue migration guide shows you how to switch from DelayedJob or Sidekiq. It stops where the real work starts.&lt;/p&gt;&#10;&lt;p&gt;Once the jobs are running, the questions change. How do you retry a failed job that depends on an external API that&amp;rsquo;s down for 20 minutes, not 20 seconds? How many workers should you actually run? What do you monitor, and what do you alert on?&lt;/p&gt;&#10;&lt;p&gt;These are the patterns we run on production Rails apps since migrating to Solid Queue in Rails 8.&lt;/p&gt;</description></item><item><title>Falcon in Production: Tuning and Benchmarks</title><link>https://jetthoughts.com/blog/falcon-web-server-production-tuning-benchmarks/</link><pubDate>Wed, 22 Jul 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/falcon-web-server-production-tuning-benchmarks/</guid><description>&lt;p&gt;Most Falcon posts tell you it&amp;rsquo;s fast. They show a Hello World benchmark, show a &lt;code&gt;config/falcon.rb&lt;/code&gt;, and stop there.&lt;/p&gt;&#10;&lt;p&gt;Here&amp;rsquo;s what they skip: how many workers you actually need for your workload, what the memory curve looks like after 24 hours under real traffic, which settings matter once you&amp;rsquo;re past the install step, and when Puma genuinely wins.&lt;/p&gt;&#10;&lt;p&gt;We run Falcon on production Rails apps. This is what we tune, how we benchmark, and where we&amp;rsquo;ve rolled back to Puma.&lt;/p&gt;</description></item><item><title>Vibe Coding Is Disposable. Stop Shipping It.</title><link>https://jetthoughts.com/blog/vibe-coding-disposable-by-design/</link><pubDate>Sat, 09 May 2026 08:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/vibe-coding-disposable-by-design/</guid><description>&lt;p&gt;A SaaS founder pinged us in March about a Stripe webhook bug their dev shop had patched twice already. Their largest enterprise customer was on the third double-charge cycle. The dev&amp;rsquo;s last commit message read &amp;ldquo;fixed retry logic.&amp;rdquo; The bug fired again four days later from a different file.&lt;/p&gt;&#10;&lt;p&gt;We read the codebase that week. The same retry-and-charge sequence lived in seven files. The dev had patched file three. Files four through seven kept double-charging the same customer until we deleted them.&lt;/p&gt;</description></item><item><title>AI Code Has an Owner Problem</title><link>https://jetthoughts.com/blog/ai-code-ownership-accountability/</link><pubDate>Thu, 07 May 2026 10:00:00 +0700</pubDate><guid>https://jetthoughts.com/blog/ai-code-ownership-accountability/</guid><description>&lt;p&gt;Linus Torvalds runs the most important codebase on Earth, and he just told the people writing it: if an AI helped you, fine, but a human name goes on the line. The Linux kernel will not accept a patch signed off by a model. Your dev shop probably will. That gap - between code an AI wrote and the human accountable for it - is the AI code ownership responsibility nobody warned you about.&lt;/p&gt;</description></item><item><title>How We Replicated a Full Product Team With Claude Code Agents</title><link>https://jetthoughts.com/blog/claude-code-xp-team-workflow/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/claude-code-xp-team-workflow/</guid><description>&lt;p&gt;A solo Claude Code agent compresses product, design, engineering, and QA into one process. The diff compiles, tests stay green, but the feature solves a problem nobody actually has. We covered this founder pain in &lt;a href="https://jetthoughts.com/blog/vibe-coding-crisis-ai-code-debt/"&gt;Vibe Coding Crisis&lt;/a&gt;. After that we wrapped the agent in the rest of a product team and what got shipped changed.&lt;/p&gt;&#10;&lt;p&gt;&#10;&lt;img src="https://jetthoughts.com/blog/claude-code-xp-team-workflow/pipeline.svg" alt="Capability map of a Claude Code agent team running Shape Up plus XP plus reflection-driven Kaizen" width="720" height="320" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Refactor Without Breaking Tests: The 3-Line Discipline in Ruby</title><link>https://jetthoughts.com/blog/refactor-step-tdd-three-line-discipline-ruby/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/refactor-step-tdd-three-line-discipline-ruby/</guid><description>&lt;p&gt;&#10;&lt;img src="https://jetthoughts.com/blog/refactor-step-tdd-three-line-discipline-ruby/trilogy-nav.svg" alt="TDD trilogy navigation: Step-by-Step, The Overkill Myth, 3-Line Discipline (current)" width="720" height="160" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;The refactor step is where most TDD suites go red. On a Rails 7.1 rescue we picked up in Q1 2026, the engineer who&amp;rsquo;d inherited the model from the prior team finished a feature on cycle 4, saw the bar green, and started &amp;ldquo;cleaning up&amp;rdquo; before opening the PR. Forty minutes later the file had a renamed validator, an extracted &lt;code&gt;OrderTotals&lt;/code&gt; class, and a collapsed &lt;code&gt;TAX_RATE&lt;/code&gt; constant - and 11 red tests with stack traces that pointed at three different files. He unwound changes until something passed, lost track of which version of which method he was on, and shipped the original mess after burning the afternoon.&lt;/p&gt;</description></item><item><title>TDD in Ruby: A Step-by-Step Guide</title><link>https://jetthoughts.com/blog/test-driven-development-tdd-in-ruby-step-by-guide-tutorial-bestpractices/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/test-driven-development-tdd-in-ruby-step-by-guide-tutorial-bestpractices/</guid><description>&lt;p&gt;&#10;&lt;img src="https://jetthoughts.com/blog/test-driven-development-tdd-in-ruby-step-by-guide-tutorial-bestpractices/trilogy-nav.svg" alt="TDD trilogy navigation: Step-by-Step (current), The Overkill Myth, 3-Line Discipline" width="720" height="160" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;You opened this post because you want to try TDD on real Ruby code, and the tutorials you&amp;rsquo;ve seen so far either skipped the rhythm entirely or buried it under three pages of theory. This one shows the loop on a small &lt;code&gt;Order&lt;/code&gt; class you can paste into a Minitest file and follow along with.&lt;/p&gt;&#10;&lt;p&gt;We&amp;rsquo;ll work four rounds in under eight minutes. Each one ends with a green test and a commit, so at any point you can &lt;code&gt;git reset --hard&lt;/code&gt; and you&amp;rsquo;ve lost at most 90 seconds of work. That bounded cost is what makes the whole discipline tractable - and it&amp;rsquo;s the part most TDD intros leave out.&lt;/p&gt;</description></item><item><title>TDD Without the Overkill: Why Lightweight TDD Ships Faster</title><link>https://jetthoughts.com/blog/tdd-overkill-myth-lightweight-ruby/</link><pubDate>Mon, 04 May 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/tdd-overkill-myth-lightweight-ruby/</guid><description>&lt;p&gt;&#10;&lt;img src="https://jetthoughts.com/blog/tdd-overkill-myth-lightweight-ruby/trilogy-nav.svg" alt="TDD trilogy navigation: Step-by-Step, The Overkill Myth (current), 3-Line Discipline" width="720" height="160" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;The senior dev who told you TDD was overkill learned it on a project where the test suite took twenty minutes to run and every PR needed two rounds of mock refactoring. So did we. The &amp;ldquo;TDD is too slow&amp;rdquo; complaints we hear in rescue kickoffs describe a workflow that has nothing to do with the cycle Kent Beck wrote up in 2003.&lt;/p&gt;</description></item><item><title>Rails CVE-2026-41316: Detection and Patch</title><link>https://jetthoughts.com/blog/rails-cve-2026-41316-founder-guide/</link><pubDate>Sat, 02 May 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rails-cve-2026-41316-founder-guide/</guid><description>&lt;p&gt;On April 21, 2026 the Ruby team shipped Ruby 4.0.3, fixing &lt;strong&gt;CVE-2026-41316&lt;/strong&gt; - a CVSS 8.1 universal RCE chain through &lt;code&gt;ERB::DeprecatedInstanceVariableProxy&lt;/code&gt; and &lt;code&gt;Marshal.load&lt;/code&gt;. Advisory: &lt;a href="https://github.com/ruby/erb/security/advisories/GHSA-q339-8rmv-2mhv"&gt;GHSA-q339-8rmv-2mhv&lt;/a&gt;. Every Rails app on 3.2+ is in scope.&lt;/p&gt;&#10;&lt;h2 id="the-gadget-chain"&gt;The gadget chain &lt;a class="hlink" href="#the-gadget-chain" aria-label="Link to The gadget chain"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Marshal.load&lt;/code&gt; deserializes arbitrary Ruby objects. &lt;code&gt;ERB::DeprecatedInstanceVariableProxy&lt;/code&gt; is a wrapper that triggers method dispatch on &lt;code&gt;to_s&lt;/code&gt;. Chain them: an attacker who controls one &lt;code&gt;Marshal&lt;/code&gt;-deserialized value pivots through ERB&amp;rsquo;s instance-variable lookup into arbitrary code execution. The full gadget walkthrough is in &lt;a href="https://github.com/httpvoid/writeups/blob/main/Ruby-deserialization-gadget-on-rails.md"&gt;httpvoid&amp;rsquo;s writeup&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>The Quality Tax: AI MVPs Cost More to Fix</title><link>https://jetthoughts.com/blog/quality-tax-ai-mvp-cost/</link><pubDate>Sat, 02 May 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/quality-tax-ai-mvp-cost/</guid><description>&lt;p&gt;A healthtech founder paid an offshore AI agency $28K in Q4 2025 for a HIPAA-adjacent intake tool on Rails 8. Six weeks after launch, four percent of the code had test coverage. The patient lookup endpoint had two unsanitized string interpolations in a &lt;code&gt;where&lt;/code&gt; clause - the textbook SQL injection vector ActiveRecord&amp;rsquo;s parameterized queries are designed to prevent. Her HIPAA attorney was already drafting a BAA non-conformance letter for 60 days of exposed PHI. &lt;strong&gt;Her $28K MVP became an $89K MVP&lt;/strong&gt; before her seed round closed.&lt;/p&gt;</description></item><item><title>9 Seconds: An AI Agent Wiped a Live SaaS</title><link>https://jetthoughts.com/blog/ai-agent-deleted-production-database-pocketos/</link><pubDate>Fri, 01 May 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ai-agent-deleted-production-database-pocketos/</guid><description>&lt;p&gt;It took &lt;strong&gt;nine seconds&lt;/strong&gt; for an AI agent to delete the production database at PocketOS, a live car-rental SaaS, on April 25, 2026. Founder Jer Crane was watching his Cursor agent run a routine task. It decided on its own to drop the production database. It hit the backup volume next. Then it wrote a confession into the chat: &lt;em&gt;&amp;ldquo;I violated every principle I was given. I guessed instead of verifying. I ran a destructive action without being asked.&amp;rdquo;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>5 Questions Before Hiring a Dev Shop</title><link>https://jetthoughts.com/blog/hiring-dev-shop-questions/</link><pubDate>Mon, 27 Apr 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/hiring-dev-shop-questions/</guid><description>&lt;p&gt;Most founders ask &amp;ldquo;what&amp;rsquo;s your rate?&amp;rdquo; first. That&amp;rsquo;s the last question you should ask, and the four that come before it predict more than price ever will.&lt;/p&gt;&#10;&lt;p&gt;If you&amp;rsquo;re reading this, the last engagement probably didn&amp;rsquo;t go well. Now you&amp;rsquo;re about to hire again, and you want to make a different mistake this time.&lt;/p&gt;&#10;&lt;h2 id="question-1-can-i-see-a-sample-weekly-report"&gt;Question 1: &amp;ldquo;Can I see a sample weekly report?&amp;rdquo; &lt;a class="hlink" href="#question-1-can-i-see-a-sample-weekly-report" aria-label="Link to Question 1: “Can I see a sample weekly report?”"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;A dev shop that won&amp;rsquo;t show you a real weekly report is hiding something, and they usually fail this question inside the first two minutes. The hiding might be chaos, idle hours, or a project they don&amp;rsquo;t understand. Research from Clutch shows that &lt;strong&gt;72% of failed development partnerships cite &amp;ldquo;poor communication&amp;rdquo;&lt;/strong&gt; as the primary issue.&lt;/p&gt;</description></item><item><title>Rails 8.1: Subscribe to Events, Skip Logs</title><link>https://jetthoughts.com/blog/rails-event-structured-logging-8-1/</link><pubDate>Sun, 26 Apr 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rails-event-structured-logging-8-1/</guid><description>&lt;p&gt;&lt;em&gt;TL;DR: Rails 8.1 replaces log scraping with structured events your monitoring can trust. Alerts fire on the event your app actually emitted instead of on a regex that matched the wrong line.&lt;/em&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Replace regex-against-log-output with this:&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#79c0ff;font-weight:bold"&gt;ActiveSupport&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt;&lt;span style="color:#79c0ff;font-weight:bold"&gt;Notifications&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;subscribe(&lt;span style="color:#a5d6ff"&gt;&amp;#34;process_action.action_controller&amp;#34;&lt;/span&gt;) &lt;span style="color:#ff7b72"&gt;do&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;|&lt;/span&gt;event&lt;span style="color:#ff7b72;font-weight:bold"&gt;|&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#79c0ff;font-weight:bold"&gt;StatsD&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;timing(&lt;span style="color:#a5d6ff"&gt;&amp;#34;request.duration&amp;#34;&lt;/span&gt;, event&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;duration, &lt;span style="color:#a5d6ff"&gt;tags&lt;/span&gt;: { &lt;span style="color:#a5d6ff"&gt;path&lt;/span&gt;: event&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;payload&lt;span style="color:#ff7b72;font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;:path&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;]&lt;/span&gt; })&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Your monitoring setup lies to you, and it does it quietly enough that nobody catches on for months.&lt;/p&gt;&#10;&lt;p&gt;A client&amp;rsquo;s Datadog alerts worked for three months after we set them up. Their team upgraded to Rails 7.2 and the log output shifted - the regex they&amp;rsquo;d written against &lt;code&gt;Completed 200 OK in 247ms&lt;/code&gt; stopped matching. &lt;strong&gt;Two months of silence before a customer called about a broken checkout flow.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>47 Startups Failed the Same Way</title><link>https://jetthoughts.com/blog/47-startups-failed-same-coding-mistake/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/47-startups-failed-same-coding-mistake/</guid><description>&lt;p&gt;An auditor analyzed 47 failed startups&amp;rsquo; codebases and found the same shape every time. &lt;a href="https://www.inc.com/maria-jose-gutierrez-chavez/47-startups-failed-most-made-the-same-coding-mistake/91251802"&gt;91% had zero automated tests&lt;/a&gt;; 68% had security vulnerabilities a basic pen test would have caught. The stats weren&amp;rsquo;t even the worst part. Every single codebase followed the same decay curve.&lt;/p&gt;&#10;&lt;p&gt;If you&amp;rsquo;re under six months in and shipping fast, this is the shape worth recognizing before you pass the next mile marker.&lt;/p&gt;&#10;&lt;h2 id="the-25-month-autopsy"&gt;The 25-month autopsy &lt;a class="hlink" href="#the-25-month-autopsy" aria-label="Link to The 25-month autopsy"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The auditor (&lt;a href="https://news.ycombinator.com/item?id=45561172"&gt;Meir Avimelec Davidov&lt;/a&gt; of Gliltech Software) published his findings in a Hacker News thread. He&amp;rsquo;d rebuilt systems after these failures. Here&amp;rsquo;s the timeline he found:&lt;/p&gt;</description></item><item><title>8 Red Flags You Hired the Wrong Dev Shop</title><link>https://jetthoughts.com/blog/dev-shop-red-flags-checklist/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/dev-shop-red-flags-checklist/</guid><description>&lt;p&gt;Dev-shop disasters usually start quietly: a Friday update that says &amp;ldquo;making progress&amp;rdquo; three weeks in a row while your launch slips.&lt;/p&gt;&#10;&lt;p&gt;You hired a team and wrote them a check. Weeks pass, maybe months, and the updates sound fine. Then one day you realize &lt;strong&gt;you&amp;rsquo;ve spent $40K and you can&amp;rsquo;t demo a single working feature to your investors.&lt;/strong&gt; If you&amp;rsquo;re looking for confirmation that something&amp;rsquo;s wrong with your dev shop, this is it.&lt;/p&gt;</description></item><item><title>Founder's Guide to Hiring a Dev Shop in 2026</title><link>https://jetthoughts.com/blog/founders-guide-hiring-dev-shop/</link><pubDate>Thu, 23 Apr 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/founders-guide-hiring-dev-shop/</guid><description>&lt;p&gt;A B2B fintech founder we picked up in Q1 2026 had spent &lt;strong&gt;$180K over eight months&lt;/strong&gt; with the previous agency before they stopped answering email. She had no admin access to the GitHub org, the AWS console belonged to the previous shop&amp;rsquo;s CTO, and the Stripe keys were registered under their corporate account. Her app was live serving 4,200 paying users, and she couldn&amp;rsquo;t ship a hotfix when checkout broke. The recovery sequence has come up dozens of times in our rescue book, always starting from a hiring decision that looked reasonable at the time.&lt;/p&gt;</description></item><item><title>Vibe Coding Crisis: Why AI Code Breaks</title><link>https://jetthoughts.com/blog/vibe-coding-crisis-ai-code-debt/</link><pubDate>Sun, 19 Apr 2026 08:00:00 +0200</pubDate><guid>https://jetthoughts.com/blog/vibe-coding-crisis-ai-code-debt/</guid><description>&lt;p&gt;Your engineer joined the company on a Monday. By Friday she wants a meeting. She&amp;rsquo;s read the codebase, and her verdict is rebuild.&lt;/p&gt;&#10;&lt;p&gt;You wrote a $90K check to that dev shop nine months ago. The product is live, customers are paying. Now someone you trust is telling you to throw it all away.&lt;/p&gt;&#10;&lt;p&gt;The reason isn&amp;rsquo;t a security breach or a missed deadline. Vibe-coded code can&amp;rsquo;t be changed cleanly. Each fix your team writes touches one of several scattered duplicates of the same logic, so the bug you patched on Monday turns up again on Wednesday from a different file. New features take longer than the last ones. Your engineer can&amp;rsquo;t always tell you why, only that the codebase isn&amp;rsquo;t structured for change.&lt;/p&gt;</description></item><item><title>Active Job Continuations in Rails 8.1</title><link>https://jetthoughts.com/blog/rails-8-1-active-job-continuations-background-jobs/</link><pubDate>Tue, 14 Apr 2026 08:00:00 +0700</pubDate><guid>https://jetthoughts.com/blog/rails-8-1-active-job-continuations-background-jobs/</guid><description>&lt;p&gt;Your background jobs lie to you.&lt;/p&gt;&#10;&lt;p&gt;You tell yourself they&amp;rsquo;re idempotent. You tell yourself retries are safe. Then a &lt;a href="https://jetthoughts.com/blog/kamal-integration-in-rails-8-by-default-ruby/"&gt;Kamal&lt;/a&gt; deploy kicks off at 2pm, a 40-minute import job gets 30 seconds to shut down, and the whole thing restarts from row one on the next container. Users sit there refreshing. Postgres re-runs the same 40-minute query. The bill at the end of the month doesn&amp;rsquo;t ask why.&lt;/p&gt;&#10;&lt;p&gt;Rails 8.1 fixes this with a first-class API called &lt;code&gt;ActiveJob::Continuable&lt;/code&gt;. Include it in a job, define steps, and if the process dies mid-run, the retry picks up where it left off instead of starting over.&lt;/p&gt;</description></item><item><title>Solid Trifecta: When to Keep Redis in Rails 8</title><link>https://jetthoughts.com/blog/solid-trifecta-hybrid-redis-rails-8/</link><pubDate>Mon, 13 Apr 2026 08:00:00 +0200</pubDate><guid>https://jetthoughts.com/blog/solid-trifecta-hybrid-redis-rails-8/</guid><description>&lt;p&gt;Rails 8 ships a database-backed replacement for Redis. Whether your app should actually drop Redis is a different question, and the answer is &amp;ldquo;it depends on three things.&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;Solid Cache, Solid Queue, and Solid Cable (the &amp;ldquo;Solid Trifecta&amp;rdquo;) replace Redis for caching, background jobs, and WebSockets. All three are database-backed and ship as defaults in new Rails 8 apps. 37signals runs Solid Cache in production across Basecamp and HEY, handling what used to require &lt;a href="https://dev.37signals.com/solid-cache/"&gt;1.1 terabytes of Redis RAM&lt;/a&gt; with 80 gigabytes of database storage, an 80% infrastructure cost reduction at their scale.&lt;/p&gt;</description></item><item><title>How to Fire Your Dev Shop (Safely)</title><link>https://jetthoughts.com/blog/fire-dev-shop-guide/</link><pubDate>Fri, 10 Apr 2026 08:00:00 +0200</pubDate><guid>https://jetthoughts.com/blog/fire-dev-shop-guide/</guid><description>&lt;p&gt;When your agency goes quiet for three days running, the silence usually isn&amp;rsquo;t avoidance. It&amp;rsquo;s them stalling because the code can&amp;rsquo;t survive a real review, and the review is what your investor&amp;rsquo;s diligence call is going to ask for.&lt;/p&gt;&#10;&lt;p&gt;We&amp;rsquo;ve watched this scene replay across dozens of rescues. You hired a team. Wrote them a check somewhere between $30K and $80K. Waited three months. The demo loads cleanly, but nobody can tell you what happens when a user enters a &lt;code&gt;+&lt;/code&gt; in their email. Now you&amp;rsquo;re sitting there at 11pm wondering whether to fire your development agency or give them one more sprint.&lt;/p&gt;</description></item><item><title>Ruby on Rails Performance Optimization Patterns for 2026</title><link>https://jetthoughts.com/blog/ruby-on-rails-performance-optimization-patterns-2026/</link><pubDate>Thu, 09 Apr 2026 08:00:00 +0700</pubDate><guid>https://jetthoughts.com/blog/ruby-on-rails-performance-optimization-patterns-2026/</guid><description>&lt;p&gt;A client came to us last quarter running Rails 7.2 on Ruby 3.2. Their P95 response time was 3.1 seconds. The dashboard page - the one every user hits after login - took &lt;strong&gt;4.7 seconds&lt;/strong&gt; on a cold cache. They&amp;rsquo;d already tried throwing hardware at it: upgraded from 2 to 4 Heroku Performance-L dynos at $500/month each. Response times didn&amp;rsquo;t budge.&lt;/p&gt;&#10;&lt;p&gt;We spent three weeks on their codebase. When we finished, &lt;strong&gt;P95 was 380ms&lt;/strong&gt;. Monthly infrastructure cost dropped from $2,800 to $1,600. And we didn&amp;rsquo;t add a single server.&lt;/p&gt;</description></item><item><title>Rails `has_secure_password` with Argon2: Complete Migration Guide</title><link>https://jetthoughts.com/blog/rails-argon2-has-secure-password-migration-guide/</link><pubDate>Thu, 09 Apr 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rails-argon2-has-secure-password-migration-guide/</guid><description>&lt;p&gt;BCrypt dominated Rails authentication for a decade. Then GPUs got cheap, and BCrypt&amp;rsquo;s security margin shrank with them. Against Argon2id at a 256MB memory cost, the same hardware that brute-forces BCrypt at thousands of attempts per second drops to single digits because the memory requirement kills GPU parallelism. Rails is catching up: &lt;code&gt;has_secure_password&lt;/code&gt; will support Argon2 natively in the upcoming Rails 8.2 (currently on edge, not yet released as stable).&lt;/p&gt;</description></item><item><title>JetThoughts Named Among the Top Web Development Agencies by Techreviewer</title><link>https://jetthoughts.com/blog/jetthoughts-top-web-development-agency-2026-techreviewer/</link><pubDate>Sat, 28 Mar 2026 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/jetthoughts-top-web-development-agency-2026-techreviewer/</guid><description>&lt;p&gt;We were recently included in Techreviewer&amp;rsquo;s &lt;a href="https://techreviewer.co/top-web-development-companies"&gt;top-rated web development agencies&lt;/a&gt; list. Techreviewer evaluates agencies on service expertise, project outcomes, client feedback, and market reputation, so we are taking it as a vote of confidence from people who have actually shipped with us.&lt;/p&gt;&#10;&lt;h2 id="what-we-build"&gt;What we build &lt;a class="hlink" href="#what-we-build" aria-label="Link to What we build"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;We work on Ruby on Rails web applications across the full product lifecycle, from early-stage startup MVPs through scaling established platforms. Our focus is on code that stays readable and changeable as the business changes. That bias has shaped our practice for the better part of two decades, which is why most engagements continue past the original SOW.&lt;/p&gt;</description></item><item><title>Async-First Remote Engineering Teams: Adapting XP Practices for Modern Distributed Work</title><link>https://jetthoughts.com/blog/async-remote-xp-practices/</link><pubDate>Fri, 12 Dec 2025 15:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/async-remote-xp-practices/</guid><description>&lt;h2 id="the-async-first-remote-challenge"&gt;The Async-First Remote Challenge &lt;a class="hlink" href="#the-async-first-remote-challenge" aria-label="Link to The Async-First Remote Challenge"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Your engineering team spans San Francisco, Warsaw, and Tokyo. Stand-ups happen in Slack threads. Code reviews accumulate overnight. By the time feedback arrives, the developer has context-switched to three other tasks.&lt;/p&gt;&#10;&lt;p&gt;Traditional Extreme Programming (XP) assumes synchronous colocation. Pair programming requires two developers at the same keyboard. Continuous integration depends on immediate feedback loops. Sustainable pace relies on shared working hours.&lt;/p&gt;</description></item><item><title>How Technical Leaders Handle Unrealistic Deadlines in SaaS (Without Burning Out the Team)</title><link>https://jetthoughts.com/blog/how-technical-leaders-handle-unrealistic-deadlines/</link><pubDate>Tue, 18 Nov 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-technical-leaders-handle-unrealistic-deadlines/</guid><description>&lt;p&gt;Last March, a JetThoughts client&amp;rsquo;s head of sales walked into standup with a 3-week ask the engineering team had quoted at 9 weeks. The deal was a $480K ARR enterprise pilot with a hard contract date. Here is the move that closed it without burning the engineers.&lt;/p&gt;&#10;&lt;p&gt;If you’re a &lt;strong&gt;CTO, Head of Engineering, Director of Engineering, or Engineering Manager&lt;/strong&gt;, you have lived through this moment. The deadline conversation usually masks an alignment problem: nobody has put the actual customer constraint, the actual technical scope, and the actual trade-offs in the same document.&lt;/p&gt;</description></item><item><title>Django Technical Debt Cost Calculator &amp; Elimination Strategy</title><link>https://jetthoughts.com/blog/django-technical-debt-cost-calculator-elimination-strategy/</link><pubDate>Tue, 28 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/django-technical-debt-cost-calculator-elimination-strategy/</guid><description>&lt;p&gt;Your best developer just gave notice. Features that used to take a week now take a month. Bugs keep showing up in code nobody wants to touch. You&amp;rsquo;re not dealing with a hiring problem or a management problem. You&amp;rsquo;re dealing with technical debt - and it&amp;rsquo;s costing you real money.&lt;/p&gt;&#10;&lt;p&gt;We&amp;rsquo;ve taken over Django codebases like yours more than 40 times in 20 years. The pattern is always the same: a founder or CTO who knows something is wrong but can&amp;rsquo;t put a dollar figure on it. So the problem stays invisible until someone quits or a customer-facing outage forces the conversation.&lt;/p&gt;</description></item><item><title>Rails 8 Deployment with Docker: Production-Ready Configuration Guide</title><link>https://jetthoughts.com/blog/rails-8-docker-deployment-production-guide/</link><pubDate>Tue, 28 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rails-8-docker-deployment-production-guide/</guid><description>Master Rails 8 Docker deployments for production. Multi-stage Dockerfile, docker-compose orchestration, security best practices, performance tuning, and complete deployment workflow for modern Rails applications.</description></item><item><title>Django 5.0 Enterprise Migration Guide: Production Deployment Strategies</title><link>https://jetthoughts.com/blog/django-5-enterprise-migration-guide-production-strategies/</link><pubDate>Mon, 27 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/django-5-enterprise-migration-guide-production-strategies/</guid><description>&lt;p&gt;Every Django 4.2 async view starts the same way: import &lt;code&gt;sync_to_async&lt;/code&gt;, wrap every ORM call, write 60 lines of boilerplate for what should be a 10-line function. Your senior developers know the pattern by heart. They also know it&amp;rsquo;s fragile &amp;ndash; miss one wrapper and you get a &lt;code&gt;SynchronousOnlyOperation&lt;/code&gt; exception in production at 2 AM.&lt;/p&gt;&#10;&lt;p&gt;Django 5.0 eliminates that boilerplate with native async ORM methods. In our benchmarks, complex queries with &lt;code&gt;select_related&lt;/code&gt; and &lt;code&gt;prefetch_related&lt;/code&gt; ran with roughly half the database round-trips compared to Django 4.2, translating to noticeably faster response times on I/O-heavy views. But these gains aren&amp;rsquo;t free: enterprise migrations touch database schemas, third-party packages, middleware, and deployment infrastructure simultaneously.&lt;/p&gt;</description></item><item><title>Hotwire Turbo 8 Performance Patterns: Real-Time Rails Applications</title><link>https://jetthoughts.com/blog/hotwire-turbo-8-performance-patterns-real-time-rails/</link><pubDate>Mon, 27 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/hotwire-turbo-8-performance-patterns-real-time-rails/</guid><description>&lt;p&gt;Your Turbo Streams broadcast fires once. One hundred users are viewing the dashboard. That&amp;rsquo;s 100 partial renders, 100 database queries, 100 ActionCable transmissions &amp;ndash; for a single event. We watched this pattern consume 85% of server capacity during peak traffic on a production SaaS app. Response times went from 50ms to 3.2 seconds.&lt;/p&gt;&#10;&lt;p&gt;Turbo 8 ships with morphing, instant page refreshes, and smarter frame handling. These features solve real problems &amp;ndash; but only if you apply them correctly. Naive implementations still produce flickering interfaces, memory leaks from orphaned WebSocket connections, and stale frame content that generates support tickets.&lt;/p&gt;</description></item><item><title>Laravel + Datadog APM: Setup, Cost, and 3 Alternatives</title><link>https://jetthoughts.com/blog/laravel-performance-monitoring-complete-apm-comparison-guide/</link><pubDate>Mon, 27 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/laravel-performance-monitoring-complete-apm-comparison-guide/</guid><description>&lt;p&gt;Your Laravel app is slow and you don&amp;rsquo;t know why. Users complain. Revenue drops. You throw more servers at it, which costs more but fixes nothing. The problem isn&amp;rsquo;t your infrastructure - it&amp;rsquo;s that you&amp;rsquo;re flying blind.&lt;/p&gt;&#10;&lt;p&gt;Quick comparison if you only have 30 seconds:&lt;/p&gt;&#10;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;APM tool&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Best for&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Monthly cost&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Laravel fit&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Scout APM&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Laravel-first teams, startups&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;$39-$299&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Excellent (zero-config auto-instrumentation)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;New Relic&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Enterprise, multi-service infrastructure&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;$99-$5,000+&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Good (needs configuration)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Datadog&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;DevOps teams, unified observability&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;$31-$3,000+&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Good (multiple packages)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Blackfire&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Deep profiling, dev/staging optimization&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;$0-$599&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Excellent (Laravel-specific features)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;Most Laravel teams discover performance issues only after users complain or revenue metrics decline. Without application-level visibility, you can&amp;rsquo;t tell whether a 3-second page load comes from N+1 queries, a missing cache, or an unoptimized Eloquent scope. Server monitoring (CloudWatch, etc.) shows CPU and memory but can&amp;rsquo;t show you the 5,000 SQL queries hiding behind one controller action.&lt;/p&gt;</description></item><item><title>Laravel 11 Upgrade Guide: Step-by-Step Migration</title><link>https://jetthoughts.com/blog/laravel-11-migration-guide-production-deployment-strategies/</link><pubDate>Mon, 27 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/laravel-11-migration-guide-production-deployment-strategies/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Read this first (updated 2026-08-22). Do not land on Laravel 11 - target 13.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Both ends of this guide are now out of support. Per Laravel&amp;rsquo;s own &lt;a href="https://laravel.com/docs/13.x/releases"&gt;support policy table&lt;/a&gt;: Laravel 10 security fixes ended &lt;strong&gt;2025-02-04&lt;/strong&gt;, and Laravel 11 security fixes ended &lt;strong&gt;2026-03-12&lt;/strong&gt;. Laravel 12 stopped receiving bug fixes on &lt;strong&gt;2026-08-13&lt;/strong&gt; and is on security-only until February 2027.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Laravel 13 is the current release&lt;/strong&gt; (released 2026-03-17, bug fixes into Q3 2027, security to 2028). It needs &lt;strong&gt;PHP 8.3 or higher&lt;/strong&gt; - a step past the 8.2 this guide assumes, so budget for that. Laravel&amp;rsquo;s own release notes call 13 &amp;ldquo;a relatively minor upgrade in terms of effort&amp;rdquo; and say &amp;ldquo;most Laravel applications may upgrade to Laravel 13 without changing much application code.&amp;rdquo;&lt;/p&gt;</description></item><item><title>Propshaft vs Sprockets: Complete Rails 8 Asset Pipeline Migration Guide</title><link>https://jetthoughts.com/blog/propshaft-vs-sprockets-rails-8-asset-pipeline-migration/</link><pubDate>Mon, 27 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/propshaft-vs-sprockets-rails-8-asset-pipeline-migration/</guid><description>&lt;p&gt;&lt;em&gt;Your developers spend time waiting for builds instead of shipping features. This guide helps them fix that — deploys get faster and your team ships more often. If your dev team mentions &amp;ldquo;the asset pipeline&amp;rdquo; as a pain point, send them this post.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Your Sprockets precompile takes 60 seconds. You change one CSS variable. Sixty seconds again. Every deploy, every CI run, every developer on the team—waiting.&lt;/p&gt;&#10;&lt;p&gt;Propshaft replaces Sprockets as the default asset pipeline in Rails 8. It drops the transpilation and concatenation stages, so precompilation digests and copies assets instead of compiling and bundling them. Every asset is still walked and fingerprinted, so the work still scales with how many you have - what drops is the cost per asset. But Propshaft isn&amp;rsquo;t a drop-in replacement. It removes features you might depend on - Sass compilation, CoffeeScript transpilation, asset concatenation. If you migrate without understanding these tradeoffs, you&amp;rsquo;ll break your app.&lt;/p&gt;</description></item><item><title>Rails 8 Authentication Generator: Complete Migration from Devise</title><link>https://jetthoughts.com/blog/rails-8-authentication-generator-devise-migration/</link><pubDate>Mon, 27 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rails-8-authentication-generator-devise-migration/</guid><description>&lt;p&gt;Devise does 100 things. Rails 8&amp;rsquo;s authentication generator does 8 things. That&amp;rsquo;s not a limitation &amp;ndash; it&amp;rsquo;s the point.&lt;/p&gt;&#10;&lt;p&gt;We&amp;rsquo;ve migrated three client apps off Devise in the past year. Every time, the codebase got smaller, the auth bugs disappeared, and nobody missed the 80% of Devise features they never used. The pattern is consistent: teams carry Devise&amp;rsquo;s full weight &amp;ndash; 10+ modules, 200+ lines of initializer config, Warden middleware &amp;ndash; to get login, logout, and password reset. Rails 8 gives you exactly that, in code you can read in five minutes.&lt;/p&gt;</description></item><item><title>Rails 8 Solid Cache Performance: Complete Migration from Redis</title><link>https://jetthoughts.com/blog/rails-8-solid-cache-performance-redis-migration/</link><pubDate>Mon, 27 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rails-8-solid-cache-performance-redis-migration/</guid><description>Master Rails 8 Solid Cache migration from Redis. Database-backed caching advantages, performance benchmarks, cost analysis, migration guide, and optimization strategies for production deployments.</description></item><item><title>LangGraph vs CrewAI vs AutoGen: Which AI Agent Framework? (2026)</title><link>https://jetthoughts.com/blog/autogen-crewai-langgraph-ai-agent-frameworks-2025/</link><pubDate>Sat, 18 Oct 2025 10:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/autogen-crewai-langgraph-ai-agent-frameworks-2025/</guid><description>&lt;h2 id="tldr"&gt;TL;DR &lt;a class="hlink" href="#tldr" aria-label="Link to TL;DR"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Three frameworks, three philosophies: &lt;strong&gt;LangGraph&lt;/strong&gt; uses graph-based state machines, &lt;strong&gt;CrewAI&lt;/strong&gt; uses role-based agent crews, and &lt;strong&gt;AutoGen&lt;/strong&gt; uses conversational agents. This post compares them head-to-head on production readiness, licensing, code complexity, and community support. If you&amp;rsquo;re building AI agents in Python and need to pick one, start here.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Quick comparison&lt;/strong&gt;: LangGraph for fine-grained control → CrewAI for quick multi-agent prototypes → AutoGen for Microsoft ecosystem integration&lt;/p&gt;&#10;&lt;p&gt;Three open-source agent frameworks dominate developer attention in 2025: AutoGen, CrewAI, and LangGraph. Each takes a different orchestration approach. The 30-second answer:&lt;/p&gt;</description></item><item><title>Ruby LangChain Testing Guide 2025 | RSpec + WebMock</title><link>https://jetthoughts.com/blog/ruby-langchain-testing-complete-rspec-guide/</link><pubDate>Fri, 17 Oct 2025 12:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ruby-langchain-testing-complete-rspec-guide/</guid><description>&lt;p&gt;Testing AI-powered Ruby applications presents unique challenges. How do you test code that calls expensive LLM APIs? How do you mock non-deterministic AI responses? How do you ensure your LangChain integrations work reliably in production?&lt;/p&gt;&#10;&lt;p&gt;This comprehensive guide shows you how to test LangChain-Ruby applications using RSpec, WebMock, VCR, and modern CI/CD practices. You&amp;rsquo;ll learn proven patterns for mocking AI APIs, testing conversation flows, and building a reliable test suite that doesn&amp;rsquo;t drain your API budget.&lt;/p&gt;</description></item><item><title>Elixir AI Integration Tutorial: Complete Guide 2025</title><link>https://jetthoughts.com/blog/elixir-ai-integration-tutorial-complete-guide/</link><pubDate>Fri, 17 Oct 2025 10:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/elixir-ai-integration-tutorial-complete-guide/</guid><description>&lt;p&gt;Elixir AI integration gives you unmatched concurrency and fault tolerance for building production-ready AI applications. With Phoenix LiveView and proper GenServer patterns, you can handle thousands of concurrent AI conversations efficiently while maintaining real-time streaming responses.&lt;/p&gt;&#10;&lt;p&gt;Building AI-powered features in Elixir applications leverages the BEAM VM&amp;rsquo;s unique capabilities. With proper OTP supervision and GenServer state management, you can create robust AI applications that handle thousands of concurrent conversations with remarkable efficiency and automatic error recovery.&lt;/p&gt;</description></item><item><title>Laravel AI Integration Tutorial: Complete Guide 2025</title><link>https://jetthoughts.com/blog/laravel-ai-integration-tutorial-complete-guide/</link><pubDate>Fri, 17 Oct 2025 10:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/laravel-ai-integration-tutorial-complete-guide/</guid><description>&lt;p&gt;Integrating AI capabilities into your Laravel applications has never been more accessible. With the OpenAI PHP package, you can add intelligent features to your Laravel projects—from chatbots and content generation to data analysis—without wrestling with complex API integrations.&lt;/p&gt;&#10;&lt;p&gt;This comprehensive tutorial walks you through everything you need to build your first AI-powered Laravel application—from installation to production deployment. By the end, you&amp;rsquo;ll have working code examples and understand how to integrate OpenAI&amp;rsquo;s powerful language models into real Laravel applications with proper testing, error handling, and cost optimization.&lt;/p&gt;</description></item><item><title>Building RAG Applications in Rails 7.1+ with pgvector: Complete Guide</title><link>https://jetthoughts.com/blog/building-rag-applications-rails-pgvector/</link><pubDate>Thu, 16 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/building-rag-applications-rails-pgvector/</guid><description>&lt;p&gt;Your users search &amp;ldquo;best pizza spots&amp;rdquo; and get zero results because your database only has &amp;ldquo;top-rated pizzerias.&amp;rdquo; Keyword search doesn&amp;rsquo;t understand meaning-it matches strings. For most Rails apps, that&amp;rsquo;s been good enough. Until your users start expecting natural language answers.&lt;/p&gt;&#10;&lt;p&gt;RAG (Retrieval Augmented Generation) combines semantic search with AI-generated responses. Instead of matching keywords, your app matches meaning. The interesting part for Rails developers: you can do this with pgvector inside your existing PostgreSQL database. No Pinecone, no Weaviate, no extra infrastructure.&lt;/p&gt;</description></item><item><title>Cost Optimization for LLM Applications: Managing Token Budgets and Scaling Efficiently</title><link>https://jetthoughts.com/blog/cost-optimization-llm-applications-token-management/</link><pubDate>Wed, 15 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/cost-optimization-llm-applications-token-management/</guid><description>&lt;p&gt;The explosive growth of Large Language Model (LLM) applications has brought unprecedented capabilities-and equally unprecedented costs. Organizations deploying LLM-powered features often face a harsh reality: what starts as a $500/month experiment quickly escalates to $15,000+/month as usage grows. Without proper cost optimization strategies, LLM expenses can consume entire product budgets and make features economically unviable.&lt;/p&gt;&#10;&lt;p&gt;The good news? Through systematic token management, intelligent caching, prompt optimization, and strategic model selection, most organizations can reduce their LLM costs substantially while maintaining or even improving application performance. This guide provides practical, battle-tested strategies with working code examples that you can implement immediately.&lt;/p&gt;</description></item><item><title>CrewAI Hierarchical Agents: Manager-Worker Pattern</title><link>https://jetthoughts.com/blog/crewai-multi-agent-systems-orchestration/</link><pubDate>Wed, 15 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/crewai-multi-agent-systems-orchestration/</guid><description>&lt;h2 id="tldr"&gt;TL;DR &lt;a class="hlink" href="#tldr" aria-label="Link to TL;DR"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;CrewAI lets you build multi-agent systems where a manager agent delegates tasks to specialized worker agents. This post walks through setting up hierarchical crews with working Python code — defining agents, tasks, routing logic, and failure handling. Covers v0.98+ patterns for production use.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Quick start&lt;/strong&gt;: &lt;code&gt;pip install crewai&lt;/code&gt; → define &lt;code&gt;Agent&lt;/code&gt; and &lt;code&gt;Task&lt;/code&gt; objects → assemble a &lt;code&gt;Crew&lt;/code&gt; → &lt;code&gt;crew.kickoff()&lt;/code&gt;&lt;/p&gt;&#10;&lt;p&gt;CrewAI is a Python framework for building manager-worker agent systems. You define agents by role, goal, and backstory, then assemble them into &amp;ldquo;crews&amp;rdquo; that run sequential or hierarchical workflows. This post walks through current CrewAI patterns for building production-grade crews, with code for three real workflows (customer support, content pipelines, financial analysis) and a FastAPI deployment example.&lt;/p&gt;</description></item><item><title>From Prototype to Production: Scaling LangChain and CrewAI Applications in Enterprise Environments</title><link>https://jetthoughts.com/blog/production-scaling-langchain-crewai-enterprise/</link><pubDate>Wed, 15 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/production-scaling-langchain-crewai-enterprise/</guid><description>&lt;p&gt;The LangChain prototype that took an afternoon to build will take six months to deploy.&lt;/p&gt;&#10;&lt;p&gt;That ratio is wrong, and it&amp;rsquo;s also predictable. The AI logic is the easy part - the model already exists, the framework wraps it, the demo runs on your laptop. What takes the six months is everything around it: API authentication that survives a security audit, PII redaction that survives a compliance review, observability that survives a 3 AM incident, and a Kubernetes deployment that survives traffic spikes without bankrupting you on token costs.&lt;/p&gt;</description></item><item><title>LangChain Architecture Deep Dive: Building Production-Ready AI Agent Systems</title><link>https://jetthoughts.com/blog/langchain-architecture-production-ready-agents/</link><pubDate>Wed, 15 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/langchain-architecture-production-ready-agents/</guid><description>&lt;p&gt;Building AI agents with LangChain? The framework makes prototyping easy, but production deployment reveals complexity gaps. Missing error handling, inadequate testing, and integration challenges derail many projects. This guide shows you how to architect LangChain systems that scale reliably in production.&lt;/p&gt;&#10;&lt;h2 id="the-production-gap-challenge"&gt;The Production Gap Challenge &lt;a class="hlink" href="#the-production-gap-challenge" aria-label="Link to The Production Gap Challenge"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;LangChain tutorials demonstrate impressive capabilities in 50 lines of code. Deploy that to production, and you face immediate problems: API rate limits crash your agents, inconsistent responses confuse users, and debugging becomes impossible without proper observability.&lt;/p&gt;</description></item><item><title>LangChain Memory: Conversation History with Python</title><link>https://jetthoughts.com/blog/langchain-memory-systems-conversational-ai/</link><pubDate>Wed, 15 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/langchain-memory-systems-conversational-ai/</guid><description>&lt;h2 id="tldr"&gt;TL;DR &lt;a class="hlink" href="#tldr" aria-label="Link to TL;DR"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;LangChain&amp;rsquo;s legacy memory classes (&lt;code&gt;ConversationBufferMemory&lt;/code&gt;, &lt;code&gt;ConversationSummaryMemory&lt;/code&gt;) are deprecated as of LangChain 0.3.1. The modern approach uses &lt;code&gt;RunnableWithMessageHistory&lt;/code&gt; with PostgreSQL or Redis for persistence. This post covers short-term, long-term, and entity memory patterns with working Python examples and a migration path from the old API.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Quick start&lt;/strong&gt;: &lt;code&gt;pip install langchain langchain-postgres&lt;/code&gt; → define a &lt;code&gt;RunnableWithMessageHistory&lt;/code&gt; → pass &lt;code&gt;get_session_history&lt;/code&gt; callable → invoke with &lt;code&gt;config&lt;/code&gt; containing &lt;code&gt;session_id&lt;/code&gt;&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;h2 id="-important-api-deprecation-notice"&gt;⚠️ Important: API Deprecation Notice &lt;a class="hlink" href="#-important-api-deprecation-notice" aria-label="Link to ⚠️ Important: API Deprecation Notice"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Every memory class shown below (&lt;code&gt;ConversationBufferMemory&lt;/code&gt;, &lt;code&gt;ConversationSummaryMemory&lt;/code&gt;, &lt;code&gt;ConversationBufferWindowMemory&lt;/code&gt;, &lt;code&gt;ConversationSummaryBufferMemory&lt;/code&gt;, &lt;code&gt;ConversationEntityMemory&lt;/code&gt;, &lt;code&gt;VectorStoreRetrieverMemory&lt;/code&gt;, &lt;code&gt;ConversationChain&lt;/code&gt;) was deprecated in LangChain 0.3.1 (Sept 2024) and is scheduled for removal in 1.0.0.&lt;/p&gt;</description></item><item><title>LangGraph Tutorial: Build AI Agents with State Machines (Python)</title><link>https://jetthoughts.com/blog/langgraph-workflows-state-machines-ai-agents/</link><pubDate>Wed, 15 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/langgraph-workflows-state-machines-ai-agents/</guid><description>&lt;h2 id="tldr"&gt;TL;DR &lt;a class="hlink" href="#tldr" aria-label="Link to TL;DR"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;LangGraph is a Python library for building AI agent workflows as state machines. You define nodes (actions), edges (transitions), and checkpoints (save points) to create complex, production-ready agents. This post covers node caching, deferred nodes, human-in-the-loop patterns, map-reduce workflows, and streaming output — with complete, runnable Python code.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Quick start&lt;/strong&gt;: &lt;code&gt;pip install langgraph&lt;/code&gt; -&amp;gt; define your &lt;code&gt;StateGraph&lt;/code&gt; -&amp;gt; add nodes and edges -&amp;gt; &lt;code&gt;graph.invoke()&lt;/code&gt;&lt;/p&gt;&#10;&lt;h2 id="the-agent-orchestration-problem"&gt;The agent orchestration problem &lt;a class="hlink" href="#the-agent-orchestration-problem" aria-label="Link to The agent orchestration problem"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;A linear LangChain pipeline works fine until the second agent shows up. Two agents that need to coordinate, hand off state, recover from failures, and pause for human approval at certain steps - that&amp;rsquo;s where the chain abstraction stops being enough and the if-statements start multiplying.&lt;/p&gt;</description></item><item><title>Testing and Monitoring LLM Applications: From Non-Deterministic Chaos to Production Confidence</title><link>https://jetthoughts.com/blog/testing-monitoring-llm-applications-production/</link><pubDate>Wed, 15 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/testing-monitoring-llm-applications-production/</guid><description>&lt;h2 id="the-challenge-how-do-you-test-something-thats-never-the-same-twice"&gt;The Challenge: How Do You Test Something That&amp;rsquo;s Never the Same Twice? &lt;a class="hlink" href="#the-challenge-how-do-you-test-something-thats-never-the-same-twice" aria-label="Link to The Challenge: How Do You Test Something That’s Never the Same Twice?"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;You&amp;rsquo;ve built your first LLM-powered feature. It works beautifully in development. But how do you know it won&amp;rsquo;t generate embarrassing responses in production? How do you catch regressions when your AI model updates? And most importantly - how do you sleep at night knowing your tests can&amp;rsquo;t guarantee consistent behavior?&lt;/p&gt;</description></item><item><title>Fractional CTO ROI Calculator: When Does Part-Time Technical Leadership Pay Off?</title><link>https://jetthoughts.com/blog/fractional-cto-roi-calculator-startup-decision-framework/</link><pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/fractional-cto-roi-calculator-startup-decision-framework/</guid><description>&lt;h1 id="fractional-cto-roi-calculator-when-does-part-time-technical-leadership-pay-off"&gt;Fractional CTO ROI Calculator: When Does Part-Time Technical Leadership Pay Off? &lt;a class="hlink" href="#fractional-cto-roi-calculator-when-does-part-time-technical-leadership-pay-off" aria-label="Link to Fractional CTO ROI Calculator: When Does Part-Time Technical Leadership Pay Off?"&gt;#&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: Fractional CTOs deliver positive ROI within 3-6 months for most startups by avoiding $180K+ in technical debt, reducing development costs by 25-35%, and preventing $250K+ full-time hiring mistakes. Use our data-driven framework to calculate ROI for your specific situation.&lt;/p&gt;&#10;&lt;p&gt;&amp;ldquo;We burned $400K building the wrong product architecture.&amp;rdquo; This painful confession came from a Series A founder three months into a fractional CTO engagement. Their development team—talented but without strategic technical leadership—had made reasonable local decisions that created global architectural problems. Six months earlier, investing $15K/month in fractional technical leadership would have prevented this $400K mistake.&lt;/p&gt;</description></item><item><title>How to Know If Your Developers Are Wasting Money on Infrastructure</title><link>https://jetthoughts.com/blog/infrastructure-spending-evaluation-founders/</link><pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/infrastructure-spending-evaluation-founders/</guid><description>&lt;h1 id="how-to-know-if-your-developers-are-wasting-money-on-infrastructure"&gt;How to Know If Your Developers Are Wasting Money on Infrastructure &lt;a class="hlink" href="#how-to-know-if-your-developers-are-wasting-money-on-infrastructure" aria-label="Link to How to Know If Your Developers Are Wasting Money on Infrastructure"&gt;#&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: Your CTO wants an over-provisioned Redis instance (real ElastiCache cache.r6g.large is ~$135/month) or a costly Kubernetes setup (EKS control plane is $73/month plus node costs that vary widely). You have 50 users/day and $100K budget. Here&amp;rsquo;s how to know if you&amp;rsquo;re being smart or getting fleeced - without needing technical knowledge.&lt;/p&gt;</description></item><item><title>How to Know If Your Development Team's Code Quality Will Bite You Later</title><link>https://jetthoughts.com/blog/code-quality-evaluation-non-technical-founders/</link><pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/code-quality-evaluation-non-technical-founders/</guid><description>&lt;h1 id="how-to-know-if-your-development-teams-code-quality-will-bite-you-later"&gt;How to Know If Your Development Team&amp;rsquo;s Code Quality Will Bite You Later &lt;a class="hlink" href="#how-to-know-if-your-development-teams-code-quality-will-bite-you-later" aria-label="Link to How to Know If Your Development Team’s Code Quality Will Bite You Later"&gt;#&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: Non-technical founders can evaluate code quality through four visible indicators: velocity trend, regression rate, onboarding time, and deployment frequency. Poor quality typically costs $180K-$380K over 12-18 months through lost velocity, bug fixes, and customer churn.&lt;/p&gt;&#10;&lt;h2 id="the-260k-shortcut-that-almost-killed-a-startup"&gt;The $260K Shortcut That Almost Killed a Startup &lt;a class="hlink" href="#the-260k-shortcut-that-almost-killed-a-startup" aria-label="Link to The $260K Shortcut That Almost Killed a Startup"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Your developers say comprehensive testing will &amp;ldquo;slow us down.&amp;rdquo; In 6 months, that shortcut will cost you $180K in technical debt and 3 months of paralyzed development.&lt;/p&gt;</description></item><item><title>How to Know If Your Remote Team Is Actually Working (Without Micromanaging)</title><link>https://jetthoughts.com/blog/remote-team-accountability-non-technical-founders/</link><pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/remote-team-accountability-non-technical-founders/</guid><description>&lt;h1 id="how-to-know-if-your-remote-team-is-actually-working-without-micromanaging"&gt;How to Know If Your Remote Team Is Actually Working (Without Micromanaging) &lt;a class="hlink" href="#how-to-know-if-your-remote-team-is-actually-working-without-micromanaging" aria-label="Link to How to Know If Your Remote Team Is Actually Working (Without Micromanaging)"&gt;#&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: You&amp;rsquo;re paying $10K/month for remote developers. Are you getting 160 hours of work or 40? Here&amp;rsquo;s how to tell WITHOUT becoming a micromanaging nightmare. Includes interview questions, red flags, and Monday morning action plan.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;p&gt;You&amp;rsquo;re paying $10,000 per month for remote developers you can&amp;rsquo;t see.&lt;/p&gt;</description></item><item><title>Should You Hire a Full-Time Developer or Use Contractors? (The $100K Budget Reality)</title><link>https://jetthoughts.com/blog/hiring-developers-contractors-budget-guide-founders/</link><pubDate>Tue, 14 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/hiring-developers-contractors-budget-guide-founders/</guid><description>&lt;h1 id="should-you-hire-a-full-time-developer-or-use-contractors-the-100k-budget-reality"&gt;Should You Hire a Full-Time Developer or Use Contractors? (The $100K Budget Reality) &lt;a class="hlink" href="#should-you-hire-a-full-time-developer-or-use-contractors-the-100k-budget-reality" aria-label="Link to Should You Hire a Full-Time Developer or Use Contractors? (The $100K Budget Reality)"&gt;#&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: You have $100K for development. That buys: 1 senior US developer (6 months), or 3 offshore developers (12 months), or 2 mid-level contractors (8 months), or an agency team (3 months). This guide shows you which choice won&amp;rsquo;t destroy your product with real numbers, honest trade-offs, and interview questions that expose bad hires before they cost you.&lt;/p&gt;</description></item><item><title>The AI Agent Onboarding Problem (The Real Version)</title><link>https://jetthoughts.com/blog/ai-agent-onboarding-problem-real-version/</link><pubDate>Mon, 06 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ai-agent-onboarding-problem-real-version/</guid><description>&lt;p&gt;So you asked about AI agents and onboarding, and honestly? We screwed this up for like three months before we figured it out.&lt;/p&gt;&#10;&lt;p&gt;Here&amp;rsquo;s what was happening. Every time we&amp;rsquo;d spin up an agent - we were using a mix of Claude with function calling and some custom orchestration - we&amp;rsquo;d have to stuff the entire context into the system prompt. Our coding standards, the database schema, the API patterns, all of it.&lt;/p&gt;</description></item><item><title>AI Forces What Rails Teams Already Knew: Small Teams Ship Faster</title><link>https://jetthoughts.com/blog/ai-forces-what-rails-teams-already/</link><pubDate>Thu, 02 Oct 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ai-forces-what-rails-teams-already/</guid><description>&lt;p&gt;I found &lt;a href="https://www.youtube.com/watch?v=c_w0LaFahxk"&gt;this discussion&lt;/a&gt; last week and it crystallized something that&amp;rsquo;s been percolating in the industry for months. Not because it was novel - we&amp;rsquo;ve been running small, empowered teams at &lt;a href="https://jetthoughts.com"&gt;JetThoughts&lt;/a&gt; since 2008 - but because AI is finally forcing the broader tech industry to confront what we figured out early: bureaucratic overhead kills velocity more than any technical constraint.&lt;/p&gt;&#10;&lt;p&gt;The shift isn&amp;rsquo;t really about AI writing code. It&amp;rsquo;s about AI making the cost of organizational complexity impossible to ignore.&lt;/p&gt;</description></item><item><title>Solid Queue vs Sidekiq: When Each Wins</title><link>https://jetthoughts.com/blog/solid-queue-vs-sidekiq-complete-comparison/</link><pubDate>Fri, 26 Sep 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/solid-queue-vs-sidekiq-complete-comparison/</guid><description>Compare Solid Queue vs Sidekiq for Rails background jobs. Database-backed vs Redis-based architectures, performance trade-offs, migration strategies, and when to choose each solution.</description></item><item><title>Falcon Web Server: Async Ruby in Production</title><link>https://jetthoughts.com/blog/falcon-web-server-async-ruby-production/</link><pubDate>Thu, 25 Sep 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/falcon-web-server-async-ruby-production/</guid><description>&lt;p&gt;Falcon is an async, fiber-based Rack server for Ruby, built by Samuel Williams and the Socketry team. It runs on top of the &lt;code&gt;async&lt;/code&gt; gem and Ruby&amp;rsquo;s fiber scheduler, which makes a single worker handle thousands of slow I/O requests without threads.&lt;/p&gt;&#10;&lt;p&gt;Install and run it on a Rack app:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Gemfile&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gem &lt;span style="color:#a5d6ff"&gt;&amp;#39;falcon&amp;#39;&lt;/span&gt;, &lt;span style="color:#a5d6ff"&gt;&amp;#39;~&amp;gt; 0.47&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bundle install&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bundle exec falcon serve --bind http://0.0.0.0:3000&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For Rails, add &lt;code&gt;gem 'falcon'&lt;/code&gt; to the production group, then point your process manager at &lt;code&gt;bundle exec falcon host&lt;/code&gt;, which reads a &lt;code&gt;falcon.rb&lt;/code&gt; service file from the application root. A minimal one is in the &lt;a href="#rails-integration"&gt;Rails Integration&lt;/a&gt; section below.&lt;/p&gt;</description></item><item><title>When Small Method Choices Cascade Into Big Performance Wins</title><link>https://jetthoughts.com/blog/when-small-method-choices-cascade-into/</link><pubDate>Wed, 03 Sep 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/when-small-method-choices-cascade-into/</guid><description>&lt;p&gt;Three months ago, I spent an embarrassing amount of time optimizing a complex Redis caching layer - tweaking expiration strategies, adding compression, even experimenting with different serialization formats. The performance improvements were modest at best. Then, almost accidentally, I discovered that a single line of string processing code was consuming 40% of our CPU cycles.&lt;/p&gt;&#10;&lt;p&gt;The culprit? Using &lt;code&gt;gsub&lt;/code&gt; instead of &lt;code&gt;tr&lt;/code&gt; for simple character replacement.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# What we had (processing thousands of slugs per request)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;slug&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;gsub(&lt;span style="color:#a5d6ff"&gt;&amp;#39;-&amp;#39;&lt;/span&gt;, &lt;span style="color:#a5d6ff"&gt;&amp;#39; &amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# The simple fix that changed everything&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;slug&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;tr(&lt;span style="color:#a5d6ff"&gt;&amp;#39;-&amp;#39;&lt;/span&gt;, &lt;span style="color:#a5d6ff"&gt;&amp;#39; &amp;#39;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Here&amp;rsquo;s what that looked like in our benchmarks:&lt;/p&gt;</description></item><item><title>Calming the Delivery Chaos (A JetThoughts Field Note)</title><link>https://jetthoughts.com/blog/calming-delivery-chaos-jetthoughts-field-note/</link><pubDate>Fri, 20 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/calming-delivery-chaos-jetthoughts-field-note/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&lt;em&gt;“We have four teams, three backlogs, two release channels, and one flaming emergency chat.”&lt;/em&gt; — a recent Series‑A founder, Friday 2 am.&lt;/p&gt;&#10;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;I hear some version of that quote every couple of weeks. Same melody, different lyrics. Busy startup, product‑market fit on the horizon, engineers sprinting in four directions. Jira boards look like Jackson Pollock got hold of sticky notes.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Case in point:&lt;/strong&gt; last week a founder posted &lt;a href="https://www.reddit.com/r/startups/comments/1k2etcj/is_it_normal_for_dev_teams_to_operate_like_this_i/"&gt;this question&lt;/a&gt; on &lt;a href="https://www.reddit.com/r/startups/"&gt;r/startups&lt;/a&gt;, baffled by the exact same mess—siloed dev, no PO, four sprints colliding. Scroll the thread and you’ll recognise the pattern: early‑stage teams drowning in coordination debt.&lt;/p&gt;</description></item><item><title>Fixing Slow Engineering Teams — An Extended Field Guide for Founders</title><link>https://jetthoughts.com/blog/fixing-slow-engineering-teams-an-extended/</link><pubDate>Fri, 20 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/fixing-slow-engineering-teams-an-extended/</guid><description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — Series A companies often stall out after product‑market fit: deadlines slip, vendor hand‑offs pile up, and technical debt snowballs. In &lt;strong&gt;60 days&lt;/strong&gt; you can reverse those trends with five proven moves: cross‑functional squads, Shape Up cycles, Kanban flow, TDD, and automated CI/CD. This guide breaks down the “why” and “how,” bolstered by real metrics, third‑party studies, and a week‑by‑week rollout map.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;strong&gt;Quick wins:&lt;/strong&gt; Most pilots move from &lt;strong&gt;monthly releases&lt;/strong&gt; to &lt;strong&gt;daily automated deploys&lt;/strong&gt; in under eight weeks, slice defect rates nearly in half, and reclaim multiple developer‑months per quarter — all without adding headcount.&lt;/p&gt;</description></item><item><title>The Simplicity Paradox: Why Your Startup's Technical Strategy Should Be Boring 🎯</title><link>https://jetthoughts.com/blog/simplicity-paradox-why-your-startups-technical/</link><pubDate>Thu, 12 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/simplicity-paradox-why-your-startups-technical/</guid><description>&lt;p&gt;&lt;em&gt;Navigating the counterintuitive relationship between technical complexity and business velocity in resource-constrained environments&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;The most fascinating paradox in startup ecosystems isn&amp;rsquo;t about funding or market timing—it&amp;rsquo;s about technology. The companies generating millions from elegant Ruby on Rails applications, while venture-backed startups burn through cash on sophisticated architectures, reveal something profound about the relationship between technical elegance and business outcomes.&lt;/p&gt;&#10;&lt;p&gt;Let&amp;rsquo;s explore this complexity-performance inversion and unpack why radical simplicity often creates the most sustainable competitive advantages.&lt;/p&gt;</description></item><item><title>Harnessing AI: A Guide for Startups</title><link>https://jetthoughts.com/blog/harnessing-ai-guide-for-startups-9e56/</link><pubDate>Tue, 10 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/harnessing-ai-guide-for-startups-9e56/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=7Kt9ugD3bGQ"&gt;&lt;img src="https://jetthoughts.com/blog/harnessing-ai-guide-for-startups-9e56/file_0_hu_149a48e47fa1db63.webp" srcset="https://jetthoughts.com/blog/harnessing-ai-guide-for-startups-9e56/file_0_hu_149a48e47fa1db63.webp 800w, https://jetthoughts.com/blog/harnessing-ai-guide-for-startups-9e56/file_0_hu_dcc7258a4e545ef0.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Harnessing AI: A Guide for Startups" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In a recent episode of Office Hours, Y Combinator partners discussed the exciting opportunities AI presents for startups. They emphasized that while AI is a hot topic, the core principles of building a successful startup remain unchanged. Founders need to focus on creating value for customers, regardless of the technology they use.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Don’t Pivot Just for AI&lt;/strong&gt;: Only pivot to AI if it genuinely enhances your business.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Leverage AI&lt;/strong&gt;: Use AI tools to improve efficiency in your existing processes.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Community Matters&lt;/strong&gt;: Being in the right environment, like the Bay Area, can open doors to new ideas and insights.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Focus on Customer Needs&lt;/strong&gt;: Understand your customers deeply to create real value.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="the-ai-landscape-for-startups"&gt;The AI Landscape for Startups &lt;a class="hlink" href="#the-ai-landscape-for-startups" aria-label="Link to The AI Landscape for Startups"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;AI is everywhere, and it’s changing how startups operate. Founders today have a unique chance to integrate AI into their businesses. But it’s not just about slapping AI onto an existing idea. The partners stressed that simply switching to AI won’t guarantee success. Founders need to ask themselves:&lt;/p&gt;</description></item><item><title>The Rise of Open Source AI: Opportunities for Startups</title><link>https://jetthoughts.com/blog/rise-of-open-source-ai-opportunities/</link><pubDate>Tue, 10 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rise-of-open-source-ai-opportunities/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=xkweKRfUb5Y"&gt;&lt;img src="https://jetthoughts.com/blog/rise-of-open-source-ai-opportunities/file_0_hu_d8d70bc9fba4a9b9.webp" srcset="https://jetthoughts.com/blog/rise-of-open-source-ai-opportunities/file_0_hu_d8d70bc9fba4a9b9.webp 800w, https://jetthoughts.com/blog/rise-of-open-source-ai-opportunities/file_0_hu_3735b473110332b9.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="The Rise of Open Source AI: Opportunities for Startups" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;The world of technology is changing fast, especially with the rise of open source AI. Just like how Linux and Git transformed their fields, open source AI models like DeepSeek and Llama are paving the way for new business opportunities. This blog explores how startups can thrive in this exciting landscape.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Open source AI is gaining traction, similar to past tech revolutions.&lt;/li&gt;&#10;&lt;li&gt;There’s a gap in commercial support for open source AI tools.&lt;/li&gt;&#10;&lt;li&gt;Startups can fill this gap by offering services and support.&lt;/li&gt;&#10;&lt;li&gt;Many opportunities exist for founders in this space.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="the-evolution-of-technology"&gt;The Evolution of Technology &lt;a class="hlink" href="#the-evolution-of-technology" aria-label="Link to The Evolution of Technology"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Technology has a way of evolving. First, we had proprietary systems like Unix. Then came Linux, which changed everything. Red Hat took Linux and built a successful business around it.&lt;/p&gt;</description></item><item><title>The Engineering Unlocks Behind DeepSeek | YC Decoded</title><link>https://jetthoughts.com/blog/engineering-unlocks-behind-deepseek-yc-decoded/</link><pubDate>Mon, 09 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/engineering-unlocks-behind-deepseek-yc-decoded/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=4Tmn-XP93m4"&gt;&lt;img src="https://jetthoughts.com/blog/engineering-unlocks-behind-deepseek-yc-decoded/file_0_hu_af9d8df39cf18dcc.webp" srcset="https://jetthoughts.com/blog/engineering-unlocks-behind-deepseek-yc-decoded/file_0_hu_af9d8df39cf18dcc.webp 800w, https://jetthoughts.com/blog/engineering-unlocks-behind-deepseek-yc-decoded/file_0_hu_6a18501ad00db07a.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="The Engineering Unlocks Behind DeepSeek | YC Decoded" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;DeepSeek, a Chinese AI company, recently announced R1, an open-source reasoning model. They claim it performs like OpenAI&amp;rsquo;s o1 but costs much less. This news caused a stir, even affecting stock markets. But for those watching AI, DeepSeek and R1 are not new. The company has shared its research and models for months, like Meta&amp;rsquo;s Llama.&lt;/p&gt;</description></item><item><title>Finding Your Niche: Software Developer Startup Jobs in 2025</title><link>https://jetthoughts.com/blog/finding-your-niche-software-developer-startup/</link><pubDate>Sun, 08 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/finding-your-niche-software-developer-startup/</guid><description>&lt;p&gt;So, you&amp;rsquo;re thinking about a job in a startup as a software developer? That&amp;rsquo;s a brave move! It&amp;rsquo;s not like working at a big, old company. Startups are a whole different world. They move super fast, you get to do a lot of different things, and your work really matters. This article will tell you all about finding software developer startup jobs in 2025, what to expect, and how to get ahead.&lt;/p&gt;</description></item><item><title>Mastering the Command Line to Create New Rails App Projects</title><link>https://jetthoughts.com/blog/mastering-command-line-create-new-rails/</link><pubDate>Sun, 08 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/mastering-command-line-create-new-rails/</guid><description>&lt;p&gt;So, you want to get good at making new Rails apps from the command line? It might seem a bit much at first, with all the words and options, but honestly, it&amp;rsquo;s not that bad. We&amp;rsquo;ll go through everything you need to know, from getting your computer ready to understanding what all those files do. By the time we&amp;rsquo;re done, you&amp;rsquo;ll be able to create new Rails app projects like it&amp;rsquo;s nothing. No more guessing, just making cool stuff.&lt;/p&gt;</description></item><item><title>AI Personal Staff for Everyone</title><link>https://jetthoughts.com/blog/ai-personal-staff-for-everyone-2881/</link><pubDate>Sat, 07 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ai-personal-staff-for-everyone-2881/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=2S1Z6YEKVoM"&gt;&lt;img src="https://jetthoughts.com/blog/ai-personal-staff-for-everyone-2881/file_0_hu_ffc4b51efa6c6051.webp" srcset="https://jetthoughts.com/blog/ai-personal-staff-for-everyone-2881/file_0_hu_ffc4b51efa6c6051.webp 800w, https://jetthoughts.com/blog/ai-personal-staff-for-everyone-2881/file_0_hu_3905e23ea5e2d7f5.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="AI Personal Staff for Everyone" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;The world is changing fast, especially when it comes to technology. Just a decade ago, only the wealthy could afford personal services like drivers or photo organizers. Now, thanks to companies like Uber and advancements in AI, these services are available to everyone. This article explores how AI is set to revolutionize personal assistance, making it accessible to all.&lt;/p&gt;</description></item><item><title>AI Revolution: What Nobody Else Is Seeing</title><link>https://jetthoughts.com/blog/ai-revolution-what-nobody-else-seeing-335c/</link><pubDate>Sat, 07 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ai-revolution-what-nobody-else-seeing-335c/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=0LMK5JYkB94"&gt;&lt;img src="https://jetthoughts.com/blog/ai-revolution-what-nobody-else-seeing-335c/file_0_hu_6e54ec5f8c8601f3.webp" srcset="https://jetthoughts.com/blog/ai-revolution-what-nobody-else-seeing-335c/file_0_hu_6e54ec5f8c8601f3.webp 800w, https://jetthoughts.com/blog/ai-revolution-what-nobody-else-seeing-335c/file_0_hu_fc4a9b05f51f33f.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="AI Revolution: What Nobody Else Is Seeing" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In a recent retreat, 300 top AI founders gathered to discuss the future of AI startups. The event featured insights from Paul Buchheit, creator of Gmail, who shared thoughts on the rapid growth and potential of AI technology. The conversation highlighted the unprecedented demand for AI solutions and the exciting opportunities for founders in this space.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;AI is creating new business opportunities that were previously impossible.&lt;/li&gt;&#10;&lt;li&gt;The demand for AI solutions is at an all-time high.&lt;/li&gt;&#10;&lt;li&gt;Startups are achieving rapid growth with fewer resources.&lt;/li&gt;&#10;&lt;li&gt;The focus is shifting from hiring large teams to leveraging AI tools for efficiency.&lt;/li&gt;&#10;&lt;li&gt;Founders are ambitious, aiming for significant revenue growth in short timeframes.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="the-current-landscape-of-ai-startups"&gt;The Current Landscape of AI Startups &lt;a class="hlink" href="#the-current-landscape-of-ai-startups" aria-label="Link to The Current Landscape of AI Startups"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The AI landscape is buzzing with excitement. Founders are no longer just dreaming big; they are achieving remarkable growth. Many startups are hitting milestones that were once considered unattainable. For instance, some companies are going from zero to millions in revenue within a year. This rapid growth is not just a fluke; it reflects a broader trend in the startup ecosystem.&lt;/p&gt;</description></item><item><title>Astranis Launches Four Satellites with SpaceX: A New Era in Broadband</title><link>https://jetthoughts.com/blog/astranis-launches-four-satellites-with-spacex-ef14/</link><pubDate>Sat, 07 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/astranis-launches-four-satellites-with-spacex-ef14/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=u4mdcp6wIYo"&gt;&lt;img src="https://jetthoughts.com/blog/astranis-launches-four-satellites-with-spacex-ef14/file_0_hu_cba19d5c28096402.webp" srcset="https://jetthoughts.com/blog/astranis-launches-four-satellites-with-spacex-ef14/file_0_hu_cba19d5c28096402.webp 800w, https://jetthoughts.com/blog/astranis-launches-four-satellites-with-spacex-ef14/file_0_hu_2dc16851a4084b59.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Astranis Launches Four Satellites with SpaceX: A New Era in Broadband" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Yesterday marked a significant milestone in the world of satellite technology. Astranis successfully launched four broadband satellites aboard SpaceX&amp;rsquo;s Falcon 9 rocket. This event is notable as it is the first time a commercial manufacturer has sent four of its own satellites to geostationary orbit (GEO) in a single mission. Astranis has come a long way from its humble beginnings in a small apartment to becoming a leader in satellite manufacturing.&lt;/p&gt;</description></item><item><title>Freelancers vs. Dedicated Engineers: Making the Right Choice for Your Project</title><link>https://jetthoughts.com/blog/freelancers-vs-dedicated-engineers-making-right-cdbb/</link><pubDate>Sat, 07 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/freelancers-vs-dedicated-engineers-making-right-cdbb/</guid><description>&lt;p&gt;In the ever-evolving tech landscape, businesses face a crucial decision when it comes to hiring talent for software development projects. The choice between freelancers and dedicated engineers can significantly impact project outcomes, timelines, and budgets. Understanding the strengths and weaknesses of each option is essential for making an informed decision.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Freelancers offer flexibility and cost-effectiveness for short-term projects.&lt;/li&gt;&#10;&lt;li&gt;Dedicated engineers provide a structured, high-quality approach for complex, long-term projects.&lt;/li&gt;&#10;&lt;li&gt;The choice depends on project scope, budget, and desired outcomes.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="understanding-freelancers"&gt;Understanding Freelancers &lt;a class="hlink" href="#understanding-freelancers" aria-label="Link to Understanding Freelancers"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Freelancers are often seen as a quick and cost-effective solution for businesses needing immediate assistance. Here are some advantages and disadvantages of hiring freelancers:&lt;/p&gt;</description></item><item><title>Unlocking Content Personalization with AI: A Strategic Toolset Guide</title><link>https://jetthoughts.com/blog/unlocking-content-personalization-with-ai-strategic/</link><pubDate>Sat, 07 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-content-personalization-with-ai-strategic/</guid><description>&lt;p&gt;The marketing landscape is rapidly evolving, with customers demanding highly personalized content experiences. This article explores how artificial intelligence (AI) and generative AI (Gen AI) tools can help marketing teams meet these demands efficiently, despite shrinking budgets and increasing content needs. It delves into the benefits, key use cases, and essential tools for implementing AI-powered content personalization, while also addressing important considerations and limitations.&lt;/p&gt;&#10;&lt;h3 id="the-growing-demand-for-personalized-content"&gt;The Growing Demand for Personalized Content &lt;a class="hlink" href="#the-growing-demand-for-personalized-content" aria-label="Link to The Growing Demand for Personalized Content"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Modern consumers, both B2B and B2C, expect highly personalized e-commerce experiences, akin to those offered by industry leaders like Amazon. Salesforce&amp;rsquo;s 2022 study revealed that 73% of B2B buyers anticipate companies to understand their unique needs, and 56% of consumers consistently expect personalized offers. This demand translates into significant pressure on marketing teams to produce more tailored content, with a 2023 Adobe survey indicating that 66% of marketers foresee a 5 to 20-fold increase in content demand by 2025.&lt;/p&gt;</description></item><item><title>Boosting Satisfaction and Sales: An E-commerce Checkout Design Case Study</title><link>https://jetthoughts.com/blog/boosting-satisfaction-sales-an-e-commerce/</link><pubDate>Fri, 06 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/boosting-satisfaction-sales-an-e-commerce/</guid><description>&lt;p&gt;A recent case study highlights how strategic e-commerce checkout design can significantly boost customer satisfaction and sales. By focusing on user empathy, particularly for an older demographic, and streamlining the purchase funnel, a major retailer successfully tackled high cart abandonment rates and improved conversion, demonstrating the tangible business value of thoughtful digital design.&lt;/p&gt;&#10;&lt;h3 id="revolutionizing-retail-belks-e-commerce-overhaul"&gt;Revolutionizing Retail: Belk&amp;rsquo;s E-commerce Overhaul &lt;a class="hlink" href="#revolutionizing-retail-belks-e-commerce-overhaul" aria-label="Link to Revolutionizing Retail: Belk’s E-commerce Overhaul"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Belk, a prominent department store chain, embarked on a six-month e-commerce overhaul to address industry-wide challenges, including a staggering 70% global cart abandonment rate. The redesign focused on the shopping bag and checkout experiences, with a primary goal of simplifying the purchase funnel for its largely female audience, with a significant portion aged 55-64.&lt;/p&gt;</description></item><item><title>Building The Future: Insights From Parker Conrad</title><link>https://jetthoughts.com/blog/building-future-insights-from-parker-conrad-b280/</link><pubDate>Fri, 06 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/building-future-insights-from-parker-conrad-b280/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=FwD0wqwUjAI"&gt;&lt;img src="https://jetthoughts.com/blog/building-future-insights-from-parker-conrad-b280/file_0_hu_39e6f87a5a1aa9b0.webp" srcset="https://jetthoughts.com/blog/building-future-insights-from-parker-conrad-b280/file_0_hu_39e6f87a5a1aa9b0.webp 800w, https://jetthoughts.com/blog/building-future-insights-from-parker-conrad-b280/file_0_hu_75d0d28b886bd811.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Building The Future: Insights From Parker Conrad" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In a recent episode of &lt;em&gt;How to Build the Future&lt;/em&gt;, Garry sat down with Parker Conrad, the co-founder and CEO of Rippling, a company valued at $13.5 billion. Parker shared his journey through the startup world, discussing his early experiences, the challenges he faced, and how he views the future of software and AI in business.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Parker&amp;rsquo;s early experiences with technology shaped his entrepreneurial spirit.&lt;/li&gt;&#10;&lt;li&gt;The importance of understanding market needs and adapting quickly.&lt;/li&gt;&#10;&lt;li&gt;The concept of &amp;ldquo;compound software&amp;rdquo; and its potential to revolutionize business operations.&lt;/li&gt;&#10;&lt;li&gt;Insights on the role of AI in streamlining company processes.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="early-days-and-entrepreneurial-spirit"&gt;Early Days and Entrepreneurial Spirit &lt;a class="hlink" href="#early-days-and-entrepreneurial-spirit" aria-label="Link to Early Days and Entrepreneurial Spirit"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Parker&amp;rsquo;s journey began in childhood, where he developed a knack for technology. He started fixing computers for family friends, which sparked his interest in the tech world. This early exposure laid the groundwork for his future ventures.&lt;/p&gt;</description></item><item><title>Compliance and Audit</title><link>https://jetthoughts.com/blog/compliance-audit-c04a/</link><pubDate>Fri, 06 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/compliance-audit-c04a/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Vi4c51aq-SQ"&gt;&lt;img src="https://jetthoughts.com/blog/compliance-audit-c04a/file_0_hu_443294ed8c55f7bf.webp" srcset="https://jetthoughts.com/blog/compliance-audit-c04a/file_0_hu_443294ed8c55f7bf.webp 800w, https://jetthoughts.com/blog/compliance-audit-c04a/file_0_hu_40fdf41ab29ba189.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Compliance and Audit" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Around 4 million people in the US and Europe work in compliance and audit. Compliance costs are going up. Regulations keep expanding. Traditional compliance tasks need reading dense rules, checking internal policy, sampling work, and making reports. Auditors often look through lots of data to find problems. These manual workflows need automation.&lt;/p&gt;&#10;&lt;h2 id="the-rise-of-compliance-costs"&gt;The Rise of Compliance Costs &lt;a class="hlink" href="#the-rise-of-compliance-costs" aria-label="Link to The Rise of Compliance Costs"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Compliance costs are on the rise. This is due to many new rules. These rules cover everything from data privacy to financial reporting. Businesses must follow these rules. This takes a lot of time and effort. It also costs a lot of money.&lt;/p&gt;</description></item><item><title>Datacenters</title><link>https://jetthoughts.com/blog/datacenters/</link><pubDate>Fri, 06 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/datacenters/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=B4KsLeOZcqU"&gt;&lt;img src="https://jetthoughts.com/blog/datacenters/file_0_hu_a801eba4c256bf1.webp" srcset="https://jetthoughts.com/blog/datacenters/file_0_hu_a801eba4c256bf1.webp 800w, https://jetthoughts.com/blog/datacenters/file_0_hu_987338edd0c913c.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Datacenters" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;The world needs more data centers and high-tech factories. This is a big problem for new technology. We need to build these places faster and cheaper. This will help new tech grow. We are looking for new companies to help with this. They can build software and tools to make these places run on their own. This will make things better for everyone. It will help us build the future.&lt;/p&gt;</description></item><item><title>Devtools for AI Agents</title><link>https://jetthoughts.com/blog/devtools-for-ai-agents-45a4/</link><pubDate>Fri, 06 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/devtools-for-ai-agents-45a4/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=yFcWSvR6c14"&gt;&lt;img src="https://jetthoughts.com/blog/devtools-for-ai-agents-45a4/file_0_hu_c0c3436a3791d873.webp" srcset="https://jetthoughts.com/blog/devtools-for-ai-agents-45a4/file_0_hu_c0c3436a3791d873.webp 800w, https://jetthoughts.com/blog/devtools-for-ai-agents-45a4/file_0_hu_2bbdb4924c502ee9.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Devtools for AI Agents" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;AI agents are here. They are not just helpers. They make their own choices. They can do tasks humans do, sometimes even better. We think these agents will be everywhere. They will help us in our jobs and daily lives. Imagine having a team of AI agents. They work for you, making you more productive and creative. We want to help this future happen.&lt;/p&gt;</description></item><item><title>Essential Guide to Onboarding Remote Developers in 2024</title><link>https://jetthoughts.com/blog/essential-guide-onboarding-remote-developers-in/</link><pubDate>Fri, 06 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/essential-guide-onboarding-remote-developers-in/</guid><description>&lt;p&gt;In 2024, the landscape of remote work continues to evolve, making effective onboarding of contractors crucial for success. A well-structured onboarding process not only enhances productivity but also fosters a sense of belonging among new team members. Here’s a comprehensive checklist to ensure a smooth transition for remote developers.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Onboarding is critical for contractor engagement and productivity.&lt;/li&gt;&#10;&lt;li&gt;The 5 C’s of onboarding: Compliance, Clarification, Culture, Connection, and Checkback.&lt;/li&gt;&#10;&lt;li&gt;A detailed checklist can streamline the onboarding process and improve team integration.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-importance-of-a-contractor-onboarding-process"&gt;The Importance Of A Contractor Onboarding Process &lt;a class="hlink" href="#the-importance-of-a-contractor-onboarding-process" aria-label="Link to The Importance Of A Contractor Onboarding Process"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Hiring remote contractors can be quicker than traditional in-house hiring, but the onboarding process must be thorough. Contractors often take up to a month to fully integrate into the team and understand the project code. A structured onboarding process helps mitigate early challenges and sets the stage for successful collaboration.&lt;/p&gt;</description></item><item><title>Finding the Best App Developers for Startups: A Comprehensive Guide</title><link>https://jetthoughts.com/blog/finding-best-app-developers-for-startups-ca30/</link><pubDate>Fri, 06 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/finding-best-app-developers-for-startups-ca30/</guid><description>&lt;p&gt;So, you&amp;rsquo;re starting a business, and you know you need an app. That&amp;rsquo;s great! But finding the right app developers for startups can feel a bit like trying to find a specific grain of sand on a huge beach. There are so many choices, and it&amp;rsquo;s easy to get lost. Don&amp;rsquo;t worry, though! This guide is here to help you figure out how to pick the best app developers for startups. It will make sure you find a good partner to help make your app idea real.&lt;/p&gt;</description></item><item><title>Finding Your Dream Software Engineer Startup Jobs</title><link>https://jetthoughts.com/blog/finding-your-dream-software-engineer-startup/</link><pubDate>Fri, 06 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/finding-your-dream-software-engineer-startup/</guid><description>&lt;p&gt;Looking for software engineer startup jobs can be really exciting. These companies often move fast and give you a chance to make a big impact. This article will walk you through everything you need to know, from figuring out what you want to getting hired and growing your career in a startup setting. It&amp;rsquo;s all about finding that perfect fit where you can do your best work and enjoy the ride.&lt;/p&gt;</description></item><item><title>Leading Software Company New York: Innovations and Opportunities in 2025</title><link>https://jetthoughts.com/blog/leading-software-company-new-york-innovations/</link><pubDate>Fri, 06 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/leading-software-company-new-york-innovations/</guid><description>&lt;p&gt;New York City&amp;rsquo;s tech scene is really taking off in 2025. It&amp;rsquo;s becoming a major hub for new ideas and jobs. This article will look at why NYC is so important for tech, what new things are happening, and how a software company New York can find lots of chances to grow.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;NYC is now the world&amp;rsquo;s second biggest startup place, with huge value and lots of companies.&lt;/li&gt;&#10;&lt;li&gt;New York is seeing big changes in areas like AI, money tech, and green tech.&lt;/li&gt;&#10;&lt;li&gt;Big companies like Amazon and Google are setting up more offices in NYC, bringing in lots of jobs.&lt;/li&gt;&#10;&lt;li&gt;The city&amp;rsquo;s startup world is getting a lot of money, especially in AI and life sciences.&lt;/li&gt;&#10;&lt;li&gt;Companies like Galileo and Runway are changing healthcare and creative tech with new ideas.&lt;/li&gt;&#10;&lt;li&gt;NYC has a lot of different tech workers, including many in AI and data science.&lt;/li&gt;&#10;&lt;li&gt;The government is helping tech companies grow with special programs.&lt;/li&gt;&#10;&lt;li&gt;Working in NYC tech means good jobs, flexible hours, and chances to learn new things.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="why-new-york-citys-tech-scene-is-exploding-in-2025"&gt;Why New York City&amp;rsquo;s Tech Scene Is Exploding in 2025 &lt;a class="hlink" href="#why-new-york-citys-tech-scene-is-exploding-in-2025" aria-label="Link to Why New York City’s Tech Scene Is Exploding in 2025"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/leading-software-company-new-york-innovations/file_0_hu_27dccb130fbc3dc3.webp" srcset="https://jetthoughts.com/blog/leading-software-company-new-york-innovations/file_0_hu_27dccb130fbc3dc3.webp 800w, https://jetthoughts.com/blog/leading-software-company-new-york-innovations/file_0_hu_34f85ad5b8c47e79.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="400" alt="futuristic New York City skyline, glowing tech" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Mastering Front End Build Tools for Efficient Web Development</title><link>https://jetthoughts.com/blog/mastering-front-end-build-tools-for/</link><pubDate>Fri, 06 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/mastering-front-end-build-tools-for/</guid><description>&lt;p&gt;Making websites and web apps is a big part of what front end developers do. To make things well and fast, they use special programs called front end build tools. These tools help with all sorts of things, like putting code together, making it smaller, and getting it ready for people to use. It&amp;rsquo;s like having a helpful assistant that does all the boring, repeated jobs for you. This article will show you how these front end build tools work and why they are so important for making good websites.&lt;/p&gt;</description></item><item><title>Mastering Social Media Graphics: Strategies for Engagement and Brand Recognition</title><link>https://jetthoughts.com/blog/mastering-social-media-graphics-strategies-for-7ad1/</link><pubDate>Fri, 06 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/mastering-social-media-graphics-strategies-for-7ad1/</guid><description>&lt;p&gt;Unlocking the power of visual content is paramount for social media success. This article delves into strategic graphic design principles that elevate brand recognition, drive engagement, and ensure your message cuts through the digital noise. Learn how consistent branding, clear typography, and compelling visual storytelling can transform your social media presence.&lt;/p&gt;&#10;&lt;h3 id="the-power-of-graphic-design-in-social-media"&gt;The Power of Graphic Design in Social Media &lt;a class="hlink" href="#the-power-of-graphic-design-in-social-media" aria-label="Link to The Power of Graphic Design in Social Media"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Graphic design is more than just aesthetics; it&amp;rsquo;s about organizing information to communicate a message effectively. Applying design best practices to social media can significantly shape audience perceptions and boost engagement. Elements like icons, illustrations, and visualizations help audiences quickly grasp complex information, while consistent visual elements across posts build anticipation and emotional connection.&lt;/p&gt;</description></item><item><title>Quantum Computing: Unveiling the Future of Computation</title><link>https://jetthoughts.com/blog/quantum-computing-unveiling-future-of-computation/</link><pubDate>Fri, 06 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/quantum-computing-unveiling-future-of-computation/</guid><description>&lt;p&gt;Unlocking the mysteries of quantum computing, a recent deep dive explored its theoretical underpinnings, practical tools, and transformative business applications. This comprehensive overview highlighted how this revolutionary technology is poised to reshape industries from cybersecurity to drug discovery, despite current hardware limitations.&lt;/p&gt;&#10;&lt;h3 id="the-quantum-leap-beyond-classical-computing"&gt;The Quantum Leap: Beyond Classical Computing &lt;a class="hlink" href="#the-quantum-leap-beyond-classical-computing" aria-label="Link to The Quantum Leap: Beyond Classical Computing"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Quantum computing represents a fundamental shift from traditional computing paradigms. Unlike classical computers that process information using bits as either 0 or 1, quantum computers utilize qubits, which can exist in a state of superposition, simultaneously representing both 0 and 1. This allows for exponentially greater processing power for specific problems.&lt;/p&gt;</description></item><item><title>Unlocking Potential: The Rise of Software Development Outsourcing in Armenia for 2024</title><link>https://jetthoughts.com/blog/unlocking-potential-rise-of-software-development/</link><pubDate>Fri, 06 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-potential-rise-of-software-development/</guid><description>&lt;p&gt;Armenia is emerging as a key player in the global software development outsourcing market in 2024. With a rich cultural heritage and a rapidly growing tech sector, the country is attracting international companies looking for skilled developers at competitive rates.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Armenia&amp;rsquo;s tech sector has grown significantly, with a 20% annual increase.&lt;/li&gt;&#10;&lt;li&gt;The country boasts a well-educated workforce, with over 20,000 developers.&lt;/li&gt;&#10;&lt;li&gt;Competitive salaries make Armenia an attractive outsourcing destination.&lt;/li&gt;&#10;&lt;li&gt;Government support and a favorable business climate enhance investment opportunities.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-it-market-in-armenia"&gt;The IT Market in Armenia &lt;a class="hlink" href="#the-it-market-in-armenia" aria-label="Link to The IT Market in Armenia"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Armenia&amp;rsquo;s IT market is thriving, driven by a combination of local talent and diaspora investment. The country has become a hub for tech startups and established companies alike, with many international firms setting up operations in Yerevan. The presence of major tech players like Intel and Microsoft underscores Armenia&amp;rsquo;s growing importance in the global tech landscape.&lt;/p&gt;</description></item><item><title>AI Transforms Customer Outreach: A New Era for Marketing Funnels</title><link>https://jetthoughts.com/blog/ai-transforms-customer-outreach-new-era/</link><pubDate>Tue, 03 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ai-transforms-customer-outreach-new-era/</guid><description>&lt;p&gt;AI-powered customer outreach is revolutionizing marketing funnels by enabling hyper-personalized interactions at every stage of the customer journey. This approach helps businesses nurture leads, increase conversions, and foster lasting customer loyalty, all while optimizing resources and enhancing efficiency in the competitive digital landscape.&lt;/p&gt;&#10;&lt;h3 id="revolutionizing-customer-engagement-ais-impact-on-marketing-funnels"&gt;Revolutionizing Customer Engagement: AI&amp;rsquo;s Impact on Marketing Funnels &lt;a class="hlink" href="#revolutionizing-customer-engagement-ais-impact-on-marketing-funnels" aria-label="Link to Revolutionizing Customer Engagement: AI’s Impact on Marketing Funnels"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Artificial intelligence (AI) is transforming how businesses engage with customers, offering unprecedented opportunities to streamline marketing funnels from initial awareness to long-term loyalty. By automating and personalizing outreach efforts, AI tools are helping companies achieve greater efficiency, reduce costs, and significantly improve customer satisfaction.&lt;/p&gt;</description></item><item><title>Compliance and Audit</title><link>https://jetthoughts.com/blog/compliance-audit/</link><pubDate>Tue, 03 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/compliance-audit/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Vi4c51aq-SQ"&gt;&lt;img src="https://jetthoughts.com/blog/compliance-audit/file_0_hu_443294ed8c55f7bf.webp" srcset="https://jetthoughts.com/blog/compliance-audit/file_0_hu_443294ed8c55f7bf.webp 800w, https://jetthoughts.com/blog/compliance-audit/file_0_hu_40fdf41ab29ba189.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Compliance and Audit" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Around 4 million people in the US and Europe work in compliance and audit. Compliance costs are going up. Regulations keep expanding. Traditional compliance tasks need reading dense rules, checking internal policy, sampling work, and making reports. Auditors often look through lots of data to find problems. These manual workflows need automation.&lt;/p&gt;&#10;&lt;h2 id="the-rise-of-compliance-costs"&gt;The Rise of Compliance Costs &lt;a class="hlink" href="#the-rise-of-compliance-costs" aria-label="Link to The Rise of Compliance Costs"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Compliance costs are on the rise. This is due to many new rules. These rules cover everything from data privacy to financial reporting. Businesses must follow these rules. This takes a lot of time and effort. It also costs a lot of money.&lt;/p&gt;</description></item><item><title>Mastering Data Labeling: The Key to Effective Machine Learning</title><link>https://jetthoughts.com/blog/mastering-data-labeling-key-effective-machine/</link><pubDate>Tue, 03 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/mastering-data-labeling-key-effective-machine/</guid><description>&lt;p&gt;The intelligence of artificial intelligence hinges on high-quality data. A recent guide highlights the critical role of effective data labeling systems in machine learning pipelines, emphasizing how accurate and consistent data annotation is fundamental for training robust and unbiased AI models. This process, from collection to deployment, is vital for AI&amp;rsquo;s success.&lt;/p&gt;&#10;&lt;h3 id="the-cornerstone-of-ai-understanding-data-labeling"&gt;The Cornerstone of AI: Understanding Data Labeling &lt;a class="hlink" href="#the-cornerstone-of-ai-understanding-data-labeling" aria-label="Link to The Cornerstone of AI: Understanding Data Labeling"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Data labeling is the process of annotating raw information to provide context and meaning, crucial for training machine learning models. This annotation improves model accuracy by highlighting what the system needs to recognize. Without quality labeling, models can exhibit biases and inaccuracies, leading to the adage, &amp;ldquo;Garbage in, garbage out.&amp;rdquo;&lt;/p&gt;</description></item><item><title>Vertical AI Agents: What They Are and How to Build One in 2026</title><link>https://jetthoughts.com/blog/vertical-ai-agents/</link><pubDate>Tue, 03 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/vertical-ai-agents/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=lvmmk85ArWg"&gt;&lt;img src="https://jetthoughts.com/blog/vertical-ai-agents/file_0_hu_e1778131672c60d1.webp" srcset="https://jetthoughts.com/blog/vertical-ai-agents/file_0_hu_e1778131672c60d1.webp 800w, https://jetthoughts.com/blog/vertical-ai-agents/file_0_hu_e9358b84f6d204c3.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Vertical AI Agents" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Imagine finding a startup idea that could really take off, one that not many people are talking about yet. It sounds like a dream, right? Well, there&amp;rsquo;s a concept gaining traction: &lt;strong&gt;vertical AI agents&lt;/strong&gt;. These are specialized software tools built using large language models (LLMs) that can automate specific tasks. Even Sam Altman, a big name in tech, thinks these are the next big thing.&lt;/p&gt;</description></item><item><title>Mastering Social Media Graphics: Strategies for Engagement and Brand Recognition</title><link>https://jetthoughts.com/blog/mastering-social-media-graphics-strategies-for/</link><pubDate>Mon, 02 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/mastering-social-media-graphics-strategies-for/</guid><description>&lt;p&gt;Unlocking the power of visual content is paramount for social media success. This article delves into strategic graphic design principles that elevate brand recognition, drive engagement, and ensure your message cuts through the digital noise. Learn how consistent branding, clear typography, and compelling visual storytelling can transform your social media presence.&lt;/p&gt;&#10;&lt;h3 id="the-power-of-graphic-design-in-social-media"&gt;The Power of Graphic Design in Social Media &lt;a class="hlink" href="#the-power-of-graphic-design-in-social-media" aria-label="Link to The Power of Graphic Design in Social Media"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Graphic design is more than just aesthetics; it&amp;rsquo;s about organizing information to communicate a message effectively. Applying design best practices to social media can significantly shape audience perceptions and boost engagement. Elements like icons, illustrations, and visualizations help audiences quickly grasp complex information, while consistent visual elements across posts build anticipation and emotional connection.&lt;/p&gt;</description></item><item><title>Devtools for AI Agents</title><link>https://jetthoughts.com/blog/devtools-for-ai-agents/</link><pubDate>Sun, 01 Jun 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/devtools-for-ai-agents/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=yFcWSvR6c14"&gt;&lt;img src="https://jetthoughts.com/blog/devtools-for-ai-agents/file_0_hu_c0c3436a3791d873.webp" srcset="https://jetthoughts.com/blog/devtools-for-ai-agents/file_0_hu_c0c3436a3791d873.webp 800w, https://jetthoughts.com/blog/devtools-for-ai-agents/file_0_hu_2bbdb4924c502ee9.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Devtools for AI Agents" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;AI agents are here. They are not just helpers. They make their own choices. They can do tasks humans do, sometimes even better. We think these agents will be everywhere. They will help us in our jobs and daily lives. Imagine having a team of AI agents. They work for you, making you more productive and creative. We want to help this future happen.&lt;/p&gt;</description></item><item><title>AI's UX Revolution: A Design Expert Unpacks Benefits and Success Strategies</title><link>https://jetthoughts.com/blog/ais-ux-revolution-design-expert-unpacks/</link><pubDate>Sat, 31 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ais-ux-revolution-design-expert-unpacks/</guid><description>&lt;p&gt;Artificial intelligence is rapidly transforming user experience (UX) design, offering unprecedented opportunities for personalization, enhanced assistance, and proactive recommendations. While AI integration presents challenges such as potential biases and the need for careful monitoring, strategic design approaches can mitigate these risks, ensuring user-friendly and beneficial AI-driven products.&lt;/p&gt;&#10;&lt;h3 id="ais-impact-on-user-experience"&gt;AI&amp;rsquo;s Impact on User Experience &lt;a class="hlink" href="#ais-impact-on-user-experience" aria-label="Link to AI’s Impact on User Experience"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;AI&amp;rsquo;s integration into digital products is fundamentally reshaping user experiences, often in subtle yet powerful ways. From personalized content feeds to intelligent chatbots, AI leverages deep learning to analyze vast amounts of user data, uncovering intricate patterns and trends. This capability allows for highly personalized services and predictive experiences, significantly enhancing user interaction.&lt;/p&gt;</description></item><item><title>Mastering Generative AI: The 4-Stage Blueprint for Success</title><link>https://jetthoughts.com/blog/mastering-generative-ai-4-stage-blueprint/</link><pubDate>Sat, 31 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/mastering-generative-ai-4-stage-blueprint/</guid><description>&lt;p&gt;Unlocking the full potential of Generative AI (Gen AI) requires a strategic, multi-stage approach. While many companies are adopting Gen AI tools, only a small percentage are successfully scaling their initiatives to derive significant value. This article outlines four crucial stages for effective Gen AI integration, from initial API access to product-focused development, ensuring businesses can maximize their investment and maintain a competitive edge.&lt;/p&gt;&#10;&lt;h3 id="the-gen-ai-landscape-opportunities-and-challenges"&gt;The Gen AI Landscape: Opportunities and Challenges &lt;a class="hlink" href="#the-gen-ai-landscape-opportunities-and-challenges" aria-label="Link to The Gen AI Landscape: Opportunities and Challenges"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Generative AI, exemplified by tools like ChatGPT, creates diverse content forms such as audio, images, and text. Unlike some other AI forms, Gen AI doesn&amp;rsquo;t always require high-quality data and offers a lower barrier to entry. However, it&amp;rsquo;s crucial to understand that Gen AI is a powerful tool to enhance existing AI strategies, not a complete replacement for traditional AI and machine learning, which excel in pattern identification and predictive modeling.&lt;/p&gt;</description></item><item><title>AI Commercial Open Source Software (AICOSS)</title><link>https://jetthoughts.com/blog/ai-commercial-open-source-software-aicoss/</link><pubDate>Thu, 29 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ai-commercial-open-source-software-aicoss/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=xkweKRfUb5Y"&gt;&lt;img src="https://jetthoughts.com/blog/ai-commercial-open-source-software-aicoss/file_0_hu_d8d70bc9fba4a9b9.webp" srcset="https://jetthoughts.com/blog/ai-commercial-open-source-software-aicoss/file_0_hu_d8d70bc9fba4a9b9.webp 800w, https://jetthoughts.com/blog/ai-commercial-open-source-software-aicoss/file_0_hu_3735b473110332b9.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="AI Commercial Open Source Software (AICOSS)" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;This article talks about the big chance for startups in open source AI. Just like RedHat and GitLab built big companies from open source projects, we see a similar path for AI. We are looking for companies that build around open source AI models like DeepSeek and Llama. There is a real need for support and services to help businesses use these AI tools.&lt;/p&gt;</description></item><item><title>Finding Your Dream Ruby Work: A Comprehensive Guide</title><link>https://jetthoughts.com/blog/finding-your-dream-ruby-work-comprehensive/</link><pubDate>Thu, 29 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/finding-your-dream-ruby-work-comprehensive/</guid><description>&lt;p&gt;Looking for your dream ruby work? It can feel like a big challenge. Maybe you&amp;rsquo;re not sure which skills are most important, or how to show what you can do to potential bosses. And finding jobs that fit what you want? That&amp;rsquo;s another hurdle. These problems come up a lot, but they don&amp;rsquo;t have to stop you. The answers are in understanding the field, learning the right skills, and moving through the job market with a plan. Whether you&amp;rsquo;re just starting, want to get better at what you do, or are looking for a big career move, there are ways to make progress. This guide is here to help you understand ruby work better, give you new information to keep you ahead, and show you the way to a good career. We know the tough parts you might be dealing with, and we&amp;rsquo;re here to help you turn them into chances to do well.&lt;/p&gt;</description></item><item><title>The Essential Guide to Becoming a Top-Tier Front End Designer</title><link>https://jetthoughts.com/blog/essential-guide-becoming-top-tier-front/</link><pubDate>Thu, 29 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/essential-guide-becoming-top-tier-front/</guid><description>&lt;p&gt;So, you want to be a top-tier front end designer? That&amp;rsquo;s a great goal! This job is all about making websites and apps look good and work well for people. It&amp;rsquo;s a mix of art and code, where you take designs and turn them into something interactive that users can actually click and enjoy. This guide will walk you through what a front end designer does, the skills you&amp;rsquo;ll need, and how to get started in this exciting field. We&amp;rsquo;ll cover everything from the basic tools to getting your first job, helping you become a really good front end designer.&lt;/p&gt;</description></item><item><title>Freelancers vs. Dedicated Engineers: Making the Right Choice for Your Project</title><link>https://jetthoughts.com/blog/freelancers-vs-dedicated-engineers-making-right/</link><pubDate>Wed, 28 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/freelancers-vs-dedicated-engineers-making-right/</guid><description>&lt;p&gt;In the ever-evolving tech landscape, businesses face a crucial decision when it comes to hiring talent for software development projects. The choice between freelancers and dedicated engineers can significantly impact project outcomes, timelines, and budgets. Understanding the strengths and weaknesses of each option is essential for making an informed decision.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Freelancers offer flexibility and cost-effectiveness for short-term projects.&lt;/li&gt;&#10;&lt;li&gt;Dedicated engineers provide a structured approach, ideal for complex, long-term projects.&lt;/li&gt;&#10;&lt;li&gt;The choice depends on project scope, budget, and desired quality.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="understanding-freelancers"&gt;Understanding Freelancers &lt;a class="hlink" href="#understanding-freelancers" aria-label="Link to Understanding Freelancers"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Freelancers are often seen as a quick and cost-effective solution for businesses needing immediate assistance. Here are some advantages and disadvantages of hiring freelancers:&lt;/p&gt;</description></item><item><title>Bob McGrew: AI Agents And The Path To AGI</title><link>https://jetthoughts.com/blog/bob-mcgrew-ai-agents-path-agi/</link><pubDate>Tue, 27 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/bob-mcgrew-ai-agents-path-agi/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=eW7rUtYHD9U"&gt;&lt;img src="https://jetthoughts.com/blog/bob-mcgrew-ai-agents-path-agi/file_0_hu_ef87ed29bb388197.webp" srcset="https://jetthoughts.com/blog/bob-mcgrew-ai-agents-path-agi/file_0_hu_ef87ed29bb388197.webp 800w, https://jetthoughts.com/blog/bob-mcgrew-ai-agents-path-agi/file_0_hu_3a50847b9426357b.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Bob McGrew: AI Agents And The Path To AGI" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In a recent episode of &amp;ldquo;How To Build The Future,&amp;rdquo; Garry Tan interviews Bob McGrew, former Chief Research Officer at OpenAI. They discuss the evolution of AI, the journey towards Artificial General Intelligence (AGI), and the future of jobs in an AI-driven world. McGrew shares insights from his time at OpenAI, touching on scaling laws, reasoning in AI, and advice for startups.&lt;/p&gt;</description></item><item><title>Essential Tips for Hiring Software Developers for Startups in 2025</title><link>https://jetthoughts.com/blog/essential-tips-for-hiring-software-developers/</link><pubDate>Tue, 27 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/essential-tips-for-hiring-software-developers/</guid><description>&lt;p&gt;Hiring software developers for startups in 2025 is a big deal. With technology changing fast and competition for talent heating up, you need a good game plan. Startups can’t afford to make mistakes when building their tech teams. Whether you’re just starting out or looking to grow, knowing how to attract and keep the right developers is super important. This guide will help you with everything from writing job descriptions to ensuring your new hires stick around.&lt;/p&gt;</description></item><item><title>Essential Tips to Hire Developers for Startups in 2025</title><link>https://jetthoughts.com/blog/essential-tips-hire-developers-for-startups/</link><pubDate>Tue, 27 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/essential-tips-hire-developers-for-startups/</guid><description>&lt;p&gt;Hiring developers for your startup in 2025 is a challenge that requires careful planning and strategy. With the tech landscape always changing and competition for talent at an all-time high, you need to be smart about how you attract and retain the right people. Whether you&amp;rsquo;re launching a new project or expanding your team, knowing how to effectively hire developers is crucial. This guide will help you navigate the process, from understanding your needs to creating a positive work culture that keeps your developers happy.&lt;/p&gt;</description></item><item><title>Exploring Different Staffing Agencies: Finding the Right Fit for Your Workforce Needs</title><link>https://jetthoughts.com/blog/exploring-different-staffing-agencies-finding-right/</link><pubDate>Tue, 27 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/exploring-different-staffing-agencies-finding-right/</guid><description>&lt;p&gt;Finding the right talent for your business can be a real challenge. With so many different staffing agencies out there, it can feel overwhelming to choose the best one for your needs. These agencies specialize in connecting employers with qualified candidates, which can save you time and help you fill positions more efficiently. In this article, we’ll break down what staffing agencies are, the benefits of using them, and how to find the right fit for your workforce needs.&lt;/p&gt;</description></item><item><title>Building A Secure AI App Store: The Future of Privacy and Innovation</title><link>https://jetthoughts.com/blog/building-secure-ai-app-store-future-e4f6/</link><pubDate>Mon, 26 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/building-secure-ai-app-store-future-e4f6/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=TFXPfy7sWG8"&gt;&lt;img src="https://jetthoughts.com/blog/building-secure-ai-app-store-future-e4f6/file_0_hu_14d4f3cd349de30e.webp" srcset="https://jetthoughts.com/blog/building-secure-ai-app-store-future-e4f6/file_0_hu_14d4f3cd349de30e.webp 800w, https://jetthoughts.com/blog/building-secure-ai-app-store-future-e4f6/file_0_hu_c18150b9a347dd7d.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Building A Secure AI App Store: The Future of Privacy and Innovation" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In a world where technology is advancing rapidly, the need for a secure AI App Store is more pressing than ever. This concept aims to create a safe environment for users while allowing developers to innovate freely. Here’s what you need to know about this exciting opportunity.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;User Data Protection&lt;/strong&gt;: Control over personal data is essential.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Shared Memory&lt;/strong&gt;: A unified space for personal details and preferences.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;App Discovery&lt;/strong&gt;: A vetted platform for finding reliable AI apps.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Developer Support&lt;/strong&gt;: Simple APIs for easier app development.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Payment Solutions&lt;/strong&gt;: Streamlined payment processes for users.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="the-need-for-user-data-protection"&gt;The Need For User Data Protection &lt;a class="hlink" href="#the-need-for-user-data-protection" aria-label="Link to The Need For User Data Protection"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The first priority of a new AI App Store should be &lt;strong&gt;user data protection&lt;/strong&gt;. Users must have control over what information apps can access. This includes sensitive data like calendars, files, and browsing history. The idea is simple: you decide what each app can see, and only share what you want.&lt;/p&gt;</description></item><item><title>Navigating the Talent Landscape: IT Staff Augmentation vs. In-House Recruitment</title><link>https://jetthoughts.com/blog/navigating-talent-landscape-it-staff-augmentation/</link><pubDate>Mon, 26 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/navigating-talent-landscape-it-staff-augmentation/</guid><description>&lt;p&gt;In the rapidly evolving tech industry, companies face a critical decision: should they hire in-house talent or opt for IT staff augmentation? This article explores the key differences between these two hiring models, helping businesses make informed choices in their quest for top talent.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;In-House Recruitment&lt;/strong&gt;: Best for building a core team and company culture.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Staff Augmentation&lt;/strong&gt;: Offers rapid scalability and access to a global talent pool.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Cost Considerations&lt;/strong&gt;: In-house hiring can be more expensive due to operational costs.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Control and Management&lt;/strong&gt;: In-house teams provide greater control over projects.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="understanding-in-house-recruitment"&gt;Understanding In-House Recruitment &lt;a class="hlink" href="#understanding-in-house-recruitment" aria-label="Link to Understanding In-House Recruitment"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;In-house recruitment refers to hiring employees directly within a company. This model is ideal for organizations looking to establish a strong core team and foster a cohesive company culture. Here are some pros and cons:&lt;/p&gt;</description></item><item><title>AI Personal Staff for Everyone</title><link>https://jetthoughts.com/blog/ai-personal-staff-for-everyone/</link><pubDate>Sun, 25 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ai-personal-staff-for-everyone/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=2S1Z6YEKVoM"&gt;&lt;img src="https://jetthoughts.com/blog/ai-personal-staff-for-everyone/file_0_hu_ffc4b51efa6c6051.webp" srcset="https://jetthoughts.com/blog/ai-personal-staff-for-everyone/file_0_hu_ffc4b51efa6c6051.webp 800w, https://jetthoughts.com/blog/ai-personal-staff-for-everyone/file_0_hu_3905e23ea5e2d7f5.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="AI Personal Staff for Everyone" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;The landscape of personal services is changing fast. Once, only the wealthy could afford a personal staff for tasks like managing finances or organizing photos. Now, with advancements in AI, these services are becoming accessible to everyone. This shift could redefine how we think about personal assistance.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;AI is making personal services available to everyone.&lt;/li&gt;&#10;&lt;li&gt;Wealthy individuals have long relied on human staff for various tasks.&lt;/li&gt;&#10;&lt;li&gt;AI is set to automate many of these roles in the near future.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="the-rise-of-ai-in-personal-services"&gt;The Rise of AI in Personal Services &lt;a class="hlink" href="#the-rise-of-ai-in-personal-services" aria-label="Link to The Rise of AI in Personal Services"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;In the past, having a personal driver, a tax accountant, or even a private doctor was a luxury reserved for the rich. Just think about it: back in 2009, if you wanted a ride, you had to own a car or rely on public transport. Fast forward to today, and services like Uber have changed the game. Now, anyone can get a ride at the tap of a button.&lt;/p&gt;</description></item><item><title>Enhancing Developer Experience: Key Strategies for Boosting Productivity in 2025</title><link>https://jetthoughts.com/blog/enhancing-developer-experience-key-strategies-for/</link><pubDate>Sun, 25 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/enhancing-developer-experience-key-strategies-for/</guid><description>&lt;p&gt;In 2025, improving developer experience is more important than ever for boosting productivity. This article explores key strategies that organizations can adopt to enhance the work environment for developers. By focusing on various aspects of developer experience, companies can create a more efficient and satisfying workplace that ultimately leads to better software outcomes.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Investing in developer experience is crucial for retaining talent and improving productivity.&lt;/li&gt;&#10;&lt;li&gt;AI tools can significantly reduce manual tasks, allowing developers to focus on more complex issues.&lt;/li&gt;&#10;&lt;li&gt;A supportive culture that promotes work-life balance helps prevent burnout and keeps teams motivated.&lt;/li&gt;&#10;&lt;li&gt;Optimizing hybrid work models enhances collaboration between remote and in-office teams.&lt;/li&gt;&#10;&lt;li&gt;Continuous learning opportunities are essential for keeping developers engaged and skilled.&lt;/li&gt;&#10;&lt;li&gt;Streamlining development processes can help identify and eliminate bottlenecks.&lt;/li&gt;&#10;&lt;li&gt;Regular feedback from developers is vital for improving tools and processes.&lt;/li&gt;&#10;&lt;li&gt;Building a community around developer experience fosters knowledge sharing and collaboration.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="understanding-developer-experience"&gt;Understanding Developer Experience &lt;a class="hlink" href="#understanding-developer-experience" aria-label="Link to Understanding Developer Experience"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/enhancing-developer-experience-key-strategies-for/file_0_hu_b29e33cb48c4deef.webp" srcset="https://jetthoughts.com/blog/enhancing-developer-experience-key-strategies-for/file_0_hu_b29e33cb48c4deef.webp 800w, https://jetthoughts.com/blog/enhancing-developer-experience-key-strategies-for/file_0_hu_72c190b13edc30c7.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="400" alt="Developers collaborating in a modern workspace for productivity." loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Unlocking Talent: Hire Pre-vetted Developers for Your Projects</title><link>https://jetthoughts.com/blog/unlocking-talent-hire-pre-vetted-developers/</link><pubDate>Sun, 25 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-talent-hire-pre-vetted-developers/</guid><description>&lt;p&gt;In today’s fast-paced tech landscape, businesses are increasingly turning to pre-vetted developers to meet their project needs efficiently. This approach allows companies to access top-tier talent without the lengthy recruitment processes, ensuring that projects are completed on time and within budget.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Pre-vetted developers are rigorously evaluated for skills and cultural fit.&lt;/li&gt;&#10;&lt;li&gt;Hiring on-demand allows for flexibility and scalability in project management.&lt;/li&gt;&#10;&lt;li&gt;Access to a global talent pool can enhance project outcomes.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-rise-of-pre-vetted-developers"&gt;The Rise Of Pre-vetted Developers &lt;a class="hlink" href="#the-rise-of-pre-vetted-developers" aria-label="Link to The Rise Of Pre-vetted Developers"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;The demand for skilled developers has surged, leading to a competitive hiring environment. Pre-vetted developers offer a solution by providing companies with access to professionals who have already undergone thorough screening processes. This means businesses can skip the lengthy recruitment phases and focus on project execution.&lt;/p&gt;</description></item><item><title>The Future of Compliance and Audit: How AI is Changing the Game</title><link>https://jetthoughts.com/blog/future-of-compliance-audit-how-ai/</link><pubDate>Fri, 23 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/future-of-compliance-audit-how-ai/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Vi4c51aq-SQ"&gt;&lt;img src="https://jetthoughts.com/blog/future-of-compliance-audit-how-ai/file_0_hu_443294ed8c55f7bf.webp" srcset="https://jetthoughts.com/blog/future-of-compliance-audit-how-ai/file_0_hu_443294ed8c55f7bf.webp 800w, https://jetthoughts.com/blog/future-of-compliance-audit-how-ai/file_0_hu_40fdf41ab29ba189.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="The Future of Compliance and Audit: How AI is Changing the Game" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Almost &lt;strong&gt;4 million people&lt;/strong&gt; in the US and Europe work in compliance and audit. As regulations grow, so do the costs associated with compliance. From GDPR to DODF, and from AML to ESG reporting, the landscape is always changing. Traditional compliance tasks are often tedious and time-consuming. But what if there was a way to make this easier? Enter AI and automation.&lt;/p&gt;</description></item><item><title>The Overcommitment Trap: A Systems Design Problem</title><link>https://jetthoughts.com/blog/overcommitment-trap-systems-design-problem/</link><pubDate>Fri, 23 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/overcommitment-trap-systems-design-problem/</guid><description>&lt;p&gt;Traditional thinking treats overcommitment as a willpower issue. But what if it&amp;rsquo;s actually a product design problem—where the &amp;ldquo;product&amp;rdquo; is your organizational operating system?&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/overcommitment-trap-systems-design-problem/file_0_hu_a5c66517ff6836c0.webp" srcset="https://jetthoughts.com/blog/overcommitment-trap-systems-design-problem/file_0_hu_a5c66517ff6836c0.webp 800w, https://jetthoughts.com/blog/overcommitment-trap-systems-design-problem/file_0_hu_e621465592ca680f.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="800" alt="man with multiple distractions" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="reframing-the-dynamic"&gt;Reframing the Dynamic &lt;a class="hlink" href="#reframing-the-dynamic" aria-label="Link to Reframing the Dynamic"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Teams under pressure don&amp;rsquo;t just take on more work—they fundamentally alter their decision-making architecture. The system shifts from &amp;ldquo;optimize for outcomes&amp;rdquo; to &amp;ldquo;optimize for activity.&amp;rdquo; This creates a feedback loop where busyness becomes the primary signal of progress.&lt;/p&gt;</description></item><item><title>Unlocking Success: The Importance of an Experience Developer in Modern Tech</title><link>https://jetthoughts.com/blog/unlocking-success-importance-of-an-experience/</link><pubDate>Fri, 23 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-success-importance-of-an-experience/</guid><description>&lt;p&gt;In today&amp;rsquo;s tech-driven world, the experience of developers—often called developer experience (DevEx)—is more important than ever. It covers everything from the tools they use to the support they receive while working on projects. A solid developer experience not only boosts productivity but also keeps developers happy and engaged. This article explores why having an experience developer on your team is essential for success in modern technology.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Developer experience is key to productivity in software development.&lt;/li&gt;&#10;&lt;li&gt;An experience developer helps streamline processes and tools for their team.&lt;/li&gt;&#10;&lt;li&gt;A positive developer environment attracts and retains top talent.&lt;/li&gt;&#10;&lt;li&gt;Effective mentorship from experience developers fosters growth in junior staff.&lt;/li&gt;&#10;&lt;li&gt;Collaboration between teams can improve overall project outcomes.&lt;/li&gt;&#10;&lt;li&gt;Feedback from developers is vital for continuous improvement.&lt;/li&gt;&#10;&lt;li&gt;Investing in developer experience leads to better business results.&lt;/li&gt;&#10;&lt;li&gt;A supportive community enhances the developer experience significantly.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="understanding-developer-experience"&gt;Understanding Developer Experience &lt;a class="hlink" href="#understanding-developer-experience" aria-label="Link to Understanding Developer Experience"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="what-is-developer-experience"&gt;What Is Developer Experience? &lt;a class="hlink" href="#what-is-developer-experience" aria-label="Link to What Is Developer Experience?"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Okay, so what&amp;rsquo;s &lt;em&gt;developer experience&lt;/em&gt; anyway? It&amp;rsquo;s all about how developers feel when they&amp;rsquo;re building, testing, and releasing software. Think of it as the sum of all interactions a developer has with tools, processes, and the overall work environment. It&amp;rsquo;s not just about writing code; it&amp;rsquo;s about the whole journey. A good &lt;a href="https://www.port.io/glossary/developer-experience"&gt;developer experience&lt;/a&gt; makes life easier and more productive.&lt;/p&gt;</description></item><item><title>Discover the Best Programming Companies Near Me: A Comprehensive Guide for 2025</title><link>https://jetthoughts.com/blog/discover-best-programming-companies-near-me/</link><pubDate>Wed, 21 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/discover-best-programming-companies-near-me/</guid><description>&lt;p&gt;If you’re on the hunt for programming companies near me, you’re in the right place. With the tech landscape changing fast, finding a reliable local partner can be a game-changer for your projects. Whether you&amp;rsquo;re a startup, small business, or part of a bigger organization, this guide will help you navigate through the best programming companies in your area. Let&amp;rsquo;s dive into how to find the right fit for your needs and what to look for when choosing a company.&lt;/p&gt;</description></item><item><title>Effective Strategies When Looking for New Employees in 2025</title><link>https://jetthoughts.com/blog/effective-strategies-when-looking-for-new/</link><pubDate>Tue, 20 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/effective-strategies-when-looking-for-new/</guid><description>&lt;p&gt;As we move into 2025, the landscape of hiring is changing rapidly. Companies must adapt their strategies to attract the best talent in a competitive market. Whether you’re a small business or a large corporation, finding new employees requires fresh ideas and approaches. In this article, we’ll explore effective strategies for looking for new employees that can help you build a strong team and enhance your company’s culture.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Explore the hidden workforce to find untapped talent.&lt;/li&gt;&#10;&lt;li&gt;Show off your company culture to attract candidates.&lt;/li&gt;&#10;&lt;li&gt;Use technology to streamline the recruitment process.&lt;/li&gt;&#10;&lt;li&gt;Build a strong employer brand to stand out.&lt;/li&gt;&#10;&lt;li&gt;Set clear recruitment goals to track your progress.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="tapping-into-the-hidden-workforce"&gt;Tapping Into The Hidden Workforce &lt;a class="hlink" href="#tapping-into-the-hidden-workforce" aria-label="Link to Tapping Into The Hidden Workforce"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Think outside the box. The usual suspects aren&amp;rsquo;t the only ones looking for work. There&amp;rsquo;s a whole &lt;em&gt;hidden workforce&lt;/em&gt; out there, ready and willing. You just need to know where to look.&lt;/p&gt;</description></item><item><title>Finding the Best App Developers for Startups: A Comprehensive Guide</title><link>https://jetthoughts.com/blog/finding-best-app-developers-for-startups/</link><pubDate>Mon, 19 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/finding-best-app-developers-for-startups/</guid><description>&lt;p&gt;When you&amp;rsquo;re diving into the world of startups, finding the right app developer can feel like searching for a needle in a haystack. With so many options out there, it’s easy to get overwhelmed. But don’t worry! This guide will help you navigate the process of finding the best app developers for startups, ensuring you have a strong partner to bring your app vision to life.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Clearly define your app&amp;rsquo;s vision and requirements before starting your search.&lt;/li&gt;&#10;&lt;li&gt;Evaluate both freelancers and agencies to find the right fit for your project.&lt;/li&gt;&#10;&lt;li&gt;Attend startup events and tech meetups to network with potential developers.&lt;/li&gt;&#10;&lt;li&gt;Use online platforms like LinkedIn and job boards to discover talent.&lt;/li&gt;&#10;&lt;li&gt;Ensure open communication and set clear expectations with your developer.&lt;/li&gt;&#10;&lt;li&gt;Assess technical skills through portfolios and coding challenges.&lt;/li&gt;&#10;&lt;li&gt;Understand the development process and choose the right methodologies.&lt;/li&gt;&#10;&lt;li&gt;Budget wisely and plan for future updates and marketing efforts.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="finding-your-ideal-app-developer"&gt;Finding Your Ideal App Developer &lt;a class="hlink" href="#finding-your-ideal-app-developer" aria-label="Link to Finding Your Ideal App Developer"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="understanding-your-startup-needs"&gt;Understanding Your Startup Needs &lt;a class="hlink" href="#understanding-your-startup-needs" aria-label="Link to Understanding Your Startup Needs"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Before you even think about browsing developer profiles, take a good, hard look at your startup. What problem are you &lt;em&gt;really&lt;/em&gt; trying to solve? What&amp;rsquo;s the core functionality of your app? Knowing this inside and out will help you &lt;a href="https://jetthoughts.com/blog/choosing-right-software-development-company-for-startups-2024-guide/"&gt;select the right software development company&lt;/a&gt; that aligns with your vision. It&amp;rsquo;s like knowing what ingredients you need before heading to the grocery store.&lt;/p&gt;</description></item><item><title>From Pitfalls to Profit: How to Successfully Implement Async</title><link>https://jetthoughts.com/blog/from-pitfalls-profit-how-successfully-implement/</link><pubDate>Mon, 19 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/from-pitfalls-profit-how-successfully-implement/</guid><description>&lt;h2 id="tldr"&gt;TL;DR &lt;a class="hlink" href="#tldr" aria-label="Link to TL;DR"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;Despite promising $3.2M in annual savings for a 60-person team, 68% of async transitions fail due to leadership resistance&lt;/li&gt;&#10;&lt;li&gt;Failed implementations cost companies an average of $2.4M in wasted resources and lost productivity&lt;/li&gt;&#10;&lt;li&gt;Six major pitfalls include cultural resistance, communication gaps, tool overload, collaboration bottlenecks, team cohesion erosion, and technical barriers&lt;/li&gt;&#10;&lt;li&gt;Successful companies like GitLab, Doist, and Shopify invest $95K-$310K in implementation but receive $9,800-$22,500 in annual savings per employee with 19-31% productivity gains&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="contents"&gt;Contents &lt;a class="hlink" href="#contents" aria-label="Link to Contents"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;&#10;&lt;li&gt;&lt;a href="#why-async-adoption-often-fails"&gt;Why Async Adoption Often Fails&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#the-real-world-costs-of-flawed-async-implementation"&gt;The Real-World Costs of Flawed Async Implementation&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#six-major-pitfalls-to-avoid"&gt;Six Major Pitfalls to Avoid&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#building-your-async-implementation-playbook"&gt;Building Your Async Implementation Playbook&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#the-implementation-economics"&gt;The Implementation Economics&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#the-bottom-line-calculated-implementation"&gt;The Bottom Line: Calculated Implementation&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="why-async-adoption-often-fails"&gt;Why Async Adoption Often Fails &lt;a class="hlink" href="#why-async-adoption-often-fails" aria-label="Link to Why Async Adoption Often Fails"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/from-pitfalls-profit-how-successfully-implement/file_0_hu_b71f06b6026d15c4.webp" srcset="https://jetthoughts.com/blog/from-pitfalls-profit-how-successfully-implement/file_0_hu_b71f06b6026d15c4.webp 800w, https://jetthoughts.com/blog/from-pitfalls-profit-how-successfully-implement/file_0_hu_d2af685d6a329b26.webp 1536w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="533" alt="A hand-drawn “journey map” showing a path from “Start” to “Success” with six obstacles" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>The Async Advantage: How Switching Communication Styles Saves $3.2M Annually</title><link>https://jetthoughts.com/blog/async-advantage-how-switching-communication-styles/</link><pubDate>Mon, 19 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/async-advantage-how-switching-communication-styles/</guid><description>&lt;h2 id="tldr"&gt;TL;DR &lt;a class="hlink" href="#tldr" aria-label="Link to TL;DR"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;Companies waste millions on unnecessary meetings - for a 60-person team, the total cost reaches $3.95M annually when factoring in direct costs, context switching, and lost development opportunities&lt;/li&gt;&#10;&lt;li&gt;Async communication reduces meeting time by 84% and saves $3.28M annually for mid-sized product teams&lt;/li&gt;&#10;&lt;li&gt;Leading tech companies like GitLab, Remote, and Automattic have successfully implemented async-first approaches, gaining significant competitive advantages&lt;/li&gt;&#10;&lt;li&gt;Beyond financial benefits, async communication reduces developer stress, improves work-life balance, and decreases burnout by 40%&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="contents"&gt;Contents &lt;a class="hlink" href="#contents" aria-label="Link to Contents"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;&#10;&lt;li&gt;&lt;a href="#too-many-meetings-are-costing-you-millions"&gt;Too Many Meetings Are Costing You Millions&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#the-hard-numbers-on-async-roi"&gt;The Hard Numbers on Async ROI&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#the-hidden-killer-context-switching"&gt;The Hidden Killer: Context Switching&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#real-companies-real-results"&gt;Real Companies, Real Results&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#competitive-analysis-the-async-advantage"&gt;Competitive Analysis: The Async Advantage&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#where-async-works-best"&gt;Where Async Works Best&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#what-this-means-for-your-product-team"&gt;What This Means for Your Product Team&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#getting-started-the-async-playbook"&gt;Getting Started: The Async Playbook&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#beyond-money-the-human-benefits"&gt;Beyond Money: The Human Benefits&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="too-many-meetings-are-costing-you-millions"&gt;Too Many Meetings Are Costing You Millions &lt;a class="hlink" href="#too-many-meetings-are-costing-you-millions" aria-label="Link to Too Many Meetings Are Costing You Millions"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/async-advantage-how-switching-communication-styles/file_0_hu_446c035fd4187385.webp" srcset="https://jetthoughts.com/blog/async-advantage-how-switching-communication-styles/file_0_hu_446c035fd4187385.webp 800w, https://jetthoughts.com/blog/async-advantage-how-switching-communication-styles/file_0_hu_970de5f2995ecce6.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="800" alt="A hand-sketched stacked bar showing the full cost breakdown per employee ($66,000 total)" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Unlocking AI's Future: Insights from Bob McGrew on AGI and Beyond</title><link>https://jetthoughts.com/blog/unlocking-ais-future-insights-from-bob/</link><pubDate>Mon, 19 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-ais-future-insights-from-bob/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=eW7rUtYHD9U"&gt;&lt;img src="https://jetthoughts.com/blog/unlocking-ais-future-insights-from-bob/file_0_hu_ef87ed29bb388197.webp" srcset="https://jetthoughts.com/blog/unlocking-ais-future-insights-from-bob/file_0_hu_ef87ed29bb388197.webp 800w, https://jetthoughts.com/blog/unlocking-ais-future-insights-from-bob/file_0_hu_3a50847b9426357b.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Unlocking AI’s Future: Insights from Bob McGrew on AGI and Beyond" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In a recent episode of &amp;ldquo;How To Build The Future,&amp;rdquo; Garry Tan interviews Bob McGrew, former Chief Research Officer at OpenAI. They discuss the evolution of AI, the journey towards Artificial General Intelligence (AGI), and the future of jobs in an AI-driven world. McGrew shares his experiences at OpenAI, the importance of scaling laws, and what startups need to know to thrive in this rapidly changing landscape.&lt;/p&gt;</description></item><item><title>How Scaling Laws Will Determine AI's Future | YC Decoded</title><link>https://jetthoughts.com/blog/how-scaling-laws-will-determine-ais/</link><pubDate>Mon, 12 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-scaling-laws-will-determine-ais/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=d6Ed5bZAtrM"&gt;&lt;img src="https://jetthoughts.com/blog/how-scaling-laws-will-determine-ais/file_0_hu_95f68bc89b48b695.webp" srcset="https://jetthoughts.com/blog/how-scaling-laws-will-determine-ais/file_0_hu_95f68bc89b48b695.webp 800w, https://jetthoughts.com/blog/how-scaling-laws-will-determine-ais/file_0_hu_63bff47b70faad3b.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="How Scaling Laws Will Determine AI’s Future | YC Decoded" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In recent years, AI labs have embraced a strategy of scaling up large language models (LLMs). By increasing parameters, data, and compute power, they have seen consistent improvements in model performance. However, the AI community is now debating whether we have reached the limits of this approach or if a new paradigm is on the horizon.&lt;/p&gt;</description></item><item><title>The Future of Datacenters: Building Faster and Smarter</title><link>https://jetthoughts.com/blog/future-of-datacenters-building-faster-smarter/</link><pubDate>Mon, 12 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/future-of-datacenters-building-faster-smarter/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=B4KsLeOZcqU"&gt;&lt;img src="https://jetthoughts.com/blog/future-of-datacenters-building-faster-smarter/file_0_hu_a801eba4c256bf1.webp" srcset="https://jetthoughts.com/blog/future-of-datacenters-building-faster-smarter/file_0_hu_a801eba4c256bf1.webp 800w, https://jetthoughts.com/blog/future-of-datacenters-building-faster-smarter/file_0_hu_987338edd0c913c.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="The Future of Datacenters: Building Faster and Smarter" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;The demand for datacenters is skyrocketing. With the rise of AI and tech innovations, we need to build these facilities faster and cheaper. This blog post explores the future of datacenters and how startups can help meet this growing need.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;The world needs more datacenters to support AI and tech growth.&lt;/li&gt;&#10;&lt;li&gt;Current datacenter projects take years to complete.&lt;/li&gt;&#10;&lt;li&gt;Startups can innovate in areas like power, cooling, and project management.&lt;/li&gt;&#10;&lt;li&gt;Future datacenters may operate autonomously with minimal human intervention.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="the-growing-need-for-datacenters"&gt;The Growing Need for Datacenters &lt;a class="hlink" href="#the-growing-need-for-datacenters" aria-label="Link to The Growing Need for Datacenters"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;As technology advances, the need for datacenters is more pressing than ever. These facilities are the backbone of our digital world. They store data, run applications, and support everything from social media to AI. But here’s the catch: building these datacenters takes a long time.&lt;/p&gt;</description></item><item><title>Building an Effective Dev Team: Strategies for Success in Software Development</title><link>https://jetthoughts.com/blog/building-an-effective-dev-team-strategies/</link><pubDate>Sun, 11 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/building-an-effective-dev-team-strategies/</guid><description>&lt;p&gt;Building a successful dev team is more than just hiring a bunch of coders. It’s about creating a cohesive group that can tackle challenges together and produce quality software. Whether you’re starting from scratch or looking to improve an existing team, there are some key strategies to consider. Let&amp;rsquo;s explore how to build an effective dev team that can thrive in today&amp;rsquo;s fast-paced tech environment.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;A dev team is a diverse group of individuals working towards common software goals.&lt;/li&gt;&#10;&lt;li&gt;Team dynamics play a crucial role in the success of a dev team.&lt;/li&gt;&#10;&lt;li&gt;Choosing between generalists and specialists can shape your team&amp;rsquo;s effectiveness.&lt;/li&gt;&#10;&lt;li&gt;Creating a collaborative environment boosts communication and productivity.&lt;/li&gt;&#10;&lt;li&gt;Implementing agile methodologies helps teams adapt quickly to changes.&lt;/li&gt;&#10;&lt;li&gt;Continuous learning is essential for keeping skills sharp and relevant.&lt;/li&gt;&#10;&lt;li&gt;Setting clear goals aligns the team&amp;rsquo;s efforts with business objectives.&lt;/li&gt;&#10;&lt;li&gt;Celebrating achievements fosters motivation and strengthens team bonds.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="understanding-the-role-of-a-dev-team"&gt;Understanding The Role Of A Dev Team &lt;a class="hlink" href="#understanding-the-role-of-a-dev-team" aria-label="Link to Understanding The Role Of A Dev Team"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="what-is-a-dev-team"&gt;What Is A Dev Team? &lt;a class="hlink" href="#what-is-a-dev-team" aria-label="Link to What Is A Dev Team?"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Think of a dev team as your friendly neighborhood group of tech wizards. They&amp;rsquo;re the folks who turn ideas into &lt;em&gt;reality&lt;/em&gt;, building software, apps, and websites. A dev team is a group of skilled individuals working together to create, maintain, and improve software products. They come in all shapes and sizes, from small startups to huge corporations. They are the backbone of any tech-driven project.&lt;/p&gt;</description></item><item><title>Unlocking Efficiency: Discover the Best Dev Tools for 2025</title><link>https://jetthoughts.com/blog/unlocking-efficiency-discover-best-dev-tools/</link><pubDate>Sun, 11 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-efficiency-discover-best-dev-tools/</guid><description>&lt;p&gt;As we head into 2025, developers are eager to find tools that streamline their workflows and make coding more enjoyable. The right tools can significantly improve teamwork and productivity. In this article, we’ll highlight some of the best dev tools that can help tackle common issues and boost your efficiency.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Collaboration tools are key for effective teamwork and communication.&lt;/li&gt;&#10;&lt;li&gt;Modern IDEs should be easy to use and customizable.&lt;/li&gt;&#10;&lt;li&gt;Automation tools help cut down on repetitive tasks, saving valuable time.&lt;/li&gt;&#10;&lt;li&gt;AI coding assistants are becoming essential for spotting errors and providing smart suggestions.&lt;/li&gt;&#10;&lt;li&gt;Project management tools are vital for keeping projects on track and organized.&lt;/li&gt;&#10;&lt;li&gt;Version control systems are crucial for managing changes and collaborating on code.&lt;/li&gt;&#10;&lt;li&gt;Cloud services simplify development by offering flexible resources and collaboration options.&lt;/li&gt;&#10;&lt;li&gt;Security tools are necessary to protect your code and ensure safe development practices.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="collaboration-tools-that-make-teamwork-fun"&gt;Collaboration Tools That Make Teamwork Fun &lt;a class="hlink" href="#collaboration-tools-that-make-teamwork-fun" aria-label="Link to Collaboration Tools That Make Teamwork Fun"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Teamwork makes the dream work, right? But sometimes, it feels more like a nightmare. Let&amp;rsquo;s look at some collaboration tools that can actually make working together, well, &lt;em&gt;fun&lt;/em&gt;. Or at least less painful.&lt;/p&gt;</description></item><item><title>Building A Secure AI App Store: The Future of Privacy and Innovation</title><link>https://jetthoughts.com/blog/building-secure-ai-app-store-future/</link><pubDate>Sat, 10 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/building-secure-ai-app-store-future/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=TFXPfy7sWG8"&gt;&lt;img src="https://jetthoughts.com/blog/building-secure-ai-app-store-future/file_0_hu_14d4f3cd349de30e.webp" srcset="https://jetthoughts.com/blog/building-secure-ai-app-store-future/file_0_hu_14d4f3cd349de30e.webp 800w, https://jetthoughts.com/blog/building-secure-ai-app-store-future/file_0_hu_c18150b9a347dd7d.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Building A Secure AI App Store: The Future of Privacy and Innovation" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In a world where technology is advancing rapidly, the need for a secure AI App Store is more pressing than ever. This concept aims to create a safe environment for users while allowing developers to innovate freely. Here’s what you need to know about this exciting opportunity.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;User Data Protection&lt;/strong&gt;: Control over personal data is essential.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Shared Memory&lt;/strong&gt;: A unified space for personal details and preferences.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;App Discovery&lt;/strong&gt;: A vetted platform for finding reliable AI apps.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Developer Support&lt;/strong&gt;: Simple APIs for easier app development.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Payment Solutions&lt;/strong&gt;: Streamlined payment processes for users.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="the-need-for-user-data-protection"&gt;The Need For User Data Protection &lt;a class="hlink" href="#the-need-for-user-data-protection" aria-label="Link to The Need For User Data Protection"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The first priority of this new AI App Store is to &lt;strong&gt;protect user data&lt;/strong&gt;. Users should have control over what information apps can access. This includes sensitive data like calendars, files, and browsing history. The idea is simple: you decide what each app can see, and only share what you want.&lt;/p&gt;</description></item><item><title>Essential Collaboration Tools for Remote Development Teams</title><link>https://jetthoughts.com/blog/essential-collaboration-tools-for-remote-development/</link><pubDate>Sat, 10 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/essential-collaboration-tools-for-remote-development/</guid><description>&lt;p&gt;In today&amp;rsquo;s digital landscape, remote work has become a norm, especially in software development. To facilitate effective collaboration among remote developers, utilizing the right tools is crucial. Here are eight essential collaboration tools that can streamline communication, project management, and code development for distributed teams.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Effective communication is vital for remote teams.&lt;/li&gt;&#10;&lt;li&gt;Task management tools help organize workflows.&lt;/li&gt;&#10;&lt;li&gt;Code management is essential for collaborative development.&lt;/li&gt;&#10;&lt;li&gt;Time tracking tools ensure accountability.&lt;/li&gt;&#10;&lt;li&gt;Continuous integration tools enhance code quality.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="communication-management"&gt;Communication Management &lt;a class="hlink" href="#communication-management" aria-label="Link to Communication Management"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Effective communication is the backbone of any remote team. Here are some popular tools:&lt;/p&gt;</description></item><item><title>Exploring the Future of Web and Software Development: Trends and Innovations for 2025</title><link>https://jetthoughts.com/blog/exploring-future-of-web-software-development/</link><pubDate>Fri, 09 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/exploring-future-of-web-software-development/</guid><description>&lt;p&gt;As we look ahead to 2025, the landscape of web and software development is shifting rapidly. New technologies, evolving user needs, and innovative practices are transforming how developers create and manage applications. This article explores the key trends and innovations that are set to shape the future of web and software development, providing insights that can help businesses and developers stay competitive in this fast-paced environment.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;AI is becoming a central part of development, automating tasks and improving user experiences.&lt;/li&gt;&#10;&lt;li&gt;Low-code and no-code platforms are making development accessible to non-developers, changing team dynamics.&lt;/li&gt;&#10;&lt;li&gt;Progressive Web Apps (PWAs) are gaining popularity for their speed and reliability across devices.&lt;/li&gt;&#10;&lt;li&gt;Accessibility is becoming a must-have, not just for compliance but for reaching more users.&lt;/li&gt;&#10;&lt;li&gt;Cybersecurity is evolving with new threats, making it essential for developers to integrate security from the start.&lt;/li&gt;&#10;&lt;li&gt;Serverless architecture is simplifying deployment and scaling, but comes with its own challenges.&lt;/li&gt;&#10;&lt;li&gt;Front-end technologies are focusing on dynamic, user-friendly designs enhanced by AI.&lt;/li&gt;&#10;&lt;li&gt;The rise of remote work is changing team collaboration and culture in development.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="the-rise-of-ai-in-web-and-software-development"&gt;The Rise of AI in Web and Software Development &lt;a class="hlink" href="#the-rise-of-ai-in-web-and-software-development" aria-label="Link to The Rise of AI in Web and Software Development"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;AI is changing everything, and web and software development are no exception. It&amp;rsquo;s not just hype; AI tools are becoming essential. They help with coding, testing, and even understanding what users want. Get ready, because AI is here to stay.&lt;/p&gt;</description></item><item><title>How Start Up Recruiters Can Transform Your Business in 2025</title><link>https://jetthoughts.com/blog/how-start-up-recruiters-can-transform/</link><pubDate>Fri, 09 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-start-up-recruiters-can-transform/</guid><description>&lt;p&gt;As we look ahead to 2025, the role of start up recruiters is becoming increasingly vital for businesses aiming to thrive in a competitive landscape. These specialized recruiters bring unique insights and strategies that can significantly enhance your hiring process. They not only save time and resources but also help build stronger teams, ensuring your startup is well-equipped to tackle the challenges of the future. Let’s explore how start up recruiters can transform your business and elevate your hiring game.&lt;/p&gt;</description></item><item><title>Navigating the US Tech Talent Shortage: Strategies for 2022</title><link>https://jetthoughts.com/blog/navigating-us-tech-talent-shortage-strategies/</link><pubDate>Thu, 08 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/navigating-us-tech-talent-shortage-strategies/</guid><description>&lt;p&gt;The tech industry in the United States is grappling with a significant talent shortage, exacerbated by the rapid digital transformation accelerated by the COVID-19 pandemic. As businesses strive to adapt to new technologies, the demand for skilled tech professionals has surged, leaving many companies struggling to fill critical roles.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;67% of Tech Leaders Report Talent Shortage&lt;/strong&gt;: A survey indicates that a majority of tech leaders are facing challenges in finding qualified candidates.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Projected Shortage of 85.2 Million Workers by 2030&lt;/strong&gt;: The global tech talent gap is expected to worsen, impacting revenue opportunities significantly.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Outsourcing as a Viable Solution&lt;/strong&gt;: Companies are increasingly looking to outsource to fill the talent gap and access a broader pool of skilled professionals.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-demand-surge-in-tech-jobs"&gt;The Demand Surge in Tech Jobs &lt;a class="hlink" href="#the-demand-surge-in-tech-jobs" aria-label="Link to The Demand Surge in Tech Jobs"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;The pandemic has catalyzed a shift towards digital technologies, with many businesses accelerating their digital transformation efforts. This shift has created a surge in demand for tech talent, particularly in software development, cloud computing, and AI. The rapid increase in online services has led to a projected creation of 20 to 50 million tech jobs globally by 2030.&lt;/p&gt;</description></item><item><title>Unlocking Opportunities: How to Thrive as a Ruby Engineer in Today's Tech Landscape</title><link>https://jetthoughts.com/blog/unlocking-opportunities-how-thrive-as-ruby/</link><pubDate>Wed, 07 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-opportunities-how-thrive-as-ruby/</guid><description>&lt;p&gt;In the ever-evolving tech world, being a Ruby engineer can lead to exciting opportunities. With the demand for web applications on the rise, mastering Ruby and its frameworks is essential. This article will break down the key skills, networking strategies, and job market tips you need to thrive in this field. Whether you&amp;rsquo;re just starting or looking to level up your career, there’s something here for everyone.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Master the basics of Ruby syntax and Rails framework to build strong applications.&lt;/li&gt;&#10;&lt;li&gt;Create a standout portfolio by showcasing projects and contributing to open source.&lt;/li&gt;&#10;&lt;li&gt;Networking is crucial; join communities and attend meetups to connect with other developers.&lt;/li&gt;&#10;&lt;li&gt;Tailor your resume to highlight relevant skills and experiences for each job application.&lt;/li&gt;&#10;&lt;li&gt;Stay updated with industry trends through online courses and tech blogs.&lt;/li&gt;&#10;&lt;li&gt;Collaboration is key; engage in code reviews and pair programming to improve your skills.&lt;/li&gt;&#10;&lt;li&gt;Be prepared for technical interviews by practicing coding challenges and understanding system design.&lt;/li&gt;&#10;&lt;li&gt;Soft skills matter; communication and teamwork are essential in tech roles.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="essential-skills-every-ruby-engineer-should-master"&gt;Essential Skills Every Ruby Engineer Should Master &lt;a class="hlink" href="#essential-skills-every-ruby-engineer-should-master" aria-label="Link to Essential Skills Every Ruby Engineer Should Master"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="understanding-ruby-syntax"&gt;Understanding Ruby Syntax &lt;a class="hlink" href="#understanding-ruby-syntax" aria-label="Link to Understanding Ruby Syntax"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Alright, first things first: Ruby itself. You can&amp;rsquo;t even think about Rails if your Ruby skills aren&amp;rsquo;t up to par. It&amp;rsquo;s like trying to build a house without a solid foundation. &lt;strong&gt;You need to know the basics: syntax, data structures, and object-oriented programming.&lt;/strong&gt; If you skip this, you&amp;rsquo;ll be lost when things get complex. Seriously, spend time here. It will pay off. There are tons of free resources online, so no excuses! You can even &lt;a href="https://github.com/fpsvogel/learn-ruby"&gt;build a web server&lt;/a&gt; from scratch to test your knowledge.&lt;/p&gt;</description></item><item><title>AI Revolution: What Nobody Else Is Seeing</title><link>https://jetthoughts.com/blog/ai-revolution-what-nobody-else-seeing/</link><pubDate>Tue, 06 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ai-revolution-what-nobody-else-seeing/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=0LMK5JYkB94"&gt;&lt;img src="https://jetthoughts.com/blog/ai-revolution-what-nobody-else-seeing/file_0_hu_6e54ec5f8c8601f3.webp" srcset="https://jetthoughts.com/blog/ai-revolution-what-nobody-else-seeing/file_0_hu_6e54ec5f8c8601f3.webp 800w, https://jetthoughts.com/blog/ai-revolution-what-nobody-else-seeing/file_0_hu_fc4a9b05f51f33f.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="AI Revolution: What Nobody Else Is Seeing" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In a recent retreat, 300 top AI founders gathered to discuss the future of AI startups. The event featured insights from Paul Buchheit, creator of Gmail, who shared thoughts on the rapid growth and potential of AI technology. The conversation highlighted the unprecedented demand for AI solutions and the exciting opportunities for founders in this evolving landscape.&lt;/p&gt;</description></item><item><title>Unlocking Remote Work Success: Lessons from Mattermost's Journey</title><link>https://jetthoughts.com/blog/unlocking-remote-work-success-lessons-from/</link><pubDate>Tue, 06 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-remote-work-success-lessons-from/</guid><description>&lt;p&gt;When Mattermost began its journey, the concept of a traditional office was quickly deemed unnecessary. With a small team working remotely, they discovered the power of flexibility and productivity that comes with a remote-first approach. As the company expanded, they learned valuable lessons that can help others thrive in a remote work environment.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Embrace pair design for effective collaboration.&lt;/li&gt;&#10;&lt;li&gt;Prioritize documentation for onboarding and culture.&lt;/li&gt;&#10;&lt;li&gt;Seek candidates with strong writing skills for remote roles.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-power-of-pair-design-in-remote-collaboration"&gt;The Power of Pair Design in Remote Collaboration &lt;a class="hlink" href="#the-power-of-pair-design-in-remote-collaboration" aria-label="Link to The Power of Pair Design in Remote Collaboration"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;One of the standout advantages of remote work is the ability to collaborate asynchronously. However, this can complicate large group projects. Mattermost found that breaking down tasks into smaller, manageable parts allows for more effective collaboration. By implementing pair design practices, two team members can tackle a problem together, refining their ideas before presenting them to the larger group. This method not only enhances productivity but also leads to more polished solutions.&lt;/p&gt;</description></item><item><title>Unlocking Complex Reasoning: How OpenAI’s O1 and O3 Models Work</title><link>https://jetthoughts.com/blog/unlocking-complex-reasoning-how-openais-o1-553a/</link><pubDate>Mon, 05 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-complex-reasoning-how-openais-o1-553a/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=mUKkjMoKEdg"&gt;&lt;img src="https://jetthoughts.com/blog/unlocking-complex-reasoning-how-openais-o1-553a/file_0_hu_109b4f5505205ac.webp" srcset="https://jetthoughts.com/blog/unlocking-complex-reasoning-how-openais-o1-553a/file_0_hu_109b4f5505205ac.webp 800w, https://jetthoughts.com/blog/unlocking-complex-reasoning-how-openais-o1-553a/file_0_hu_1cb0589ccc965b93.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Unlocking Complex Reasoning: How OpenAI’s O1 and O3 Models Work" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In the world of AI, OpenAI’s O1 and O3 models are making waves with their ability to tackle complex reasoning tasks. These models mimic human-like thought processes, breaking down problems into manageable steps. This approach not only enhances their accuracy but also makes them more relatable to how we think. Let’s dive into how these models operate and what makes them stand out.&lt;/p&gt;</description></item><item><title>Unlocking Complex Reasoning: How OpenAI’s O1 and O3 Models Work</title><link>https://jetthoughts.com/blog/unlocking-complex-reasoning-how-openais-o1/</link><pubDate>Mon, 05 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-complex-reasoning-how-openais-o1/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=mUKkjMoKEdg"&gt;&lt;img src="https://jetthoughts.com/blog/unlocking-complex-reasoning-how-openais-o1/file_0_hu_109b4f5505205ac.webp" srcset="https://jetthoughts.com/blog/unlocking-complex-reasoning-how-openais-o1/file_0_hu_109b4f5505205ac.webp 800w, https://jetthoughts.com/blog/unlocking-complex-reasoning-how-openais-o1/file_0_hu_1cb0589ccc965b93.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Unlocking Complex Reasoning: How OpenAI’s O1 and O3 Models Work" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In the world of AI, OpenAI’s O1 and O3 models are making waves. These models tackle complex reasoning tasks in a way that mimics human thought processes. They break down problems into smaller, manageable steps, making them more effective at finding solutions. Let’s explore how they do this.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;O1 and O3 models use a chain of thought process.&lt;/li&gt;&#10;&lt;li&gt;They break down complex problems into smaller steps.&lt;/li&gt;&#10;&lt;li&gt;This method mirrors how humans solve problems.&lt;/li&gt;&#10;&lt;li&gt;The approach helps in recognizing and correcting mistakes.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="understanding-the-chain-of-thought-process"&gt;Understanding The Chain Of Thought Process &lt;a class="hlink" href="#understanding-the-chain-of-thought-process" aria-label="Link to Understanding The Chain Of Thought Process"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The chain of thought process is a game changer. It’s not just about spitting out answers. Instead, these models work through problems step by step. This method is similar to how we humans tackle complex issues. We often break them down into smaller parts to make sense of them.&lt;/p&gt;</description></item><item><title>Unlocking Innovation: The Essential Guide to Developer Experience Platforms in 2025</title><link>https://jetthoughts.com/blog/unlocking-innovation-essential-guide-developer-experience/</link><pubDate>Mon, 05 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-innovation-essential-guide-developer-experience/</guid><description>&lt;p&gt;In 2025, developer experience platforms are at the forefront of transforming how software is built and managed. These platforms provide a suite of tools that streamline every aspect of the development process, from planning to deployment. By focusing on improving the developer&amp;rsquo;s journey, these platforms help teams work smarter, not harder, allowing for greater creativity and efficiency in software development.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Developer experience platforms are essential for improving productivity and efficiency.&lt;/li&gt;&#10;&lt;li&gt;They enable self-service capabilities, allowing developers to manage their own workflows.&lt;/li&gt;&#10;&lt;li&gt;These platforms help break down silos, fostering collaboration across teams.&lt;/li&gt;&#10;&lt;li&gt;Automation and AI are shifting developers&amp;rsquo; roles from routine tasks to strategic thinking.&lt;/li&gt;&#10;&lt;li&gt;Security is increasingly integrated into the development process from the start.&lt;/li&gt;&#10;&lt;li&gt;Multi-cloud strategies are becoming more common, presenting both opportunities and challenges.&lt;/li&gt;&#10;&lt;li&gt;Feedback loops are crucial for continuous improvement of developer platforms.&lt;/li&gt;&#10;&lt;li&gt;A strong community around these platforms enhances user engagement and support.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="understanding-developer-experience-platforms"&gt;Understanding Developer Experience Platforms &lt;a class="hlink" href="#understanding-developer-experience-platforms" aria-label="Link to Understanding Developer Experience Platforms"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="what-are-developer-experience-platforms"&gt;What Are Developer Experience Platforms? &lt;a class="hlink" href="#what-are-developer-experience-platforms" aria-label="Link to What Are Developer Experience Platforms?"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Okay, so what &lt;em&gt;are&lt;/em&gt; these things? Think of a Developer Experience Platform (DXP) as your all-in-one &lt;em&gt;workspace&lt;/em&gt; for building software. It&amp;rsquo;s not just about the code; it&amp;rsquo;s about making the whole process smoother, faster, and less painful. &lt;strong&gt;It&amp;rsquo;s the digital environment where developers spend their days.&lt;/strong&gt; It includes the tools, resources, and support they need to do their best work. It&amp;rsquo;s like a well-organized garage for a mechanic, but for code.&lt;/p&gt;</description></item><item><title>Essential Project Management Tools for Remote Teams</title><link>https://jetthoughts.com/blog/essential-project-management-tools-for-remote/</link><pubDate>Sun, 04 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/essential-project-management-tools-for-remote/</guid><description>&lt;p&gt;In the era of remote work, effective project management tools have become crucial for teams spread across different locations. These tools facilitate task assignment, file sharing, deadline setting, and progress tracking, all within a single platform. Here’s a look at some of the most popular project management tools that have proven effective for remote teams.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Asana&lt;/strong&gt;: Great for workflow management and task tracking.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Trello&lt;/strong&gt;: Visual planning tool ideal for collaboration.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Paymo&lt;/strong&gt;: Combines task management with time tracking and billing.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Basecamp&lt;/strong&gt;: Simple interface for project tracking and communication.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Jira&lt;/strong&gt;: Best for software development teams using Agile methodologies.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="asana-the-workflow-management-powerhouse"&gt;Asana: The Workflow Management Powerhouse &lt;a class="hlink" href="#asana-the-workflow-management-powerhouse" aria-label="Link to Asana: The Workflow Management Powerhouse"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Asana is designed to help teams coordinate their work effectively. It allows users to manage tasks, projects, and conversations without relying on email. Key features include:&lt;/p&gt;</description></item><item><title>JTBD + OKRs: A Practical Guide for Customer-Focused Teams</title><link>https://jetthoughts.com/blog/jtbd-okrs-practical-guide-for-customer/</link><pubDate>Sun, 04 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/jtbd-okrs-practical-guide-for-customer/</guid><description>&lt;p&gt;&lt;em&gt;Stop building features nobody wants. Start with customer jobs, then measure what matters.&lt;/em&gt;&lt;/p&gt;&#10;&lt;h2 id="youve-been-here-before"&gt;You&amp;rsquo;ve Been Here Before &lt;a class="hlink" href="#youve-been-here-before" aria-label="Link to You’ve Been Here Before"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Your team ships a new feature. Everyone high-fives. Six weeks later, usage data comes in.&lt;/p&gt;&#10;&lt;p&gt;Nobody&amp;rsquo;s using it.&lt;/p&gt;&#10;&lt;p&gt;Why? Because we build what WE think customers want, not what THEY actually need.&lt;/p&gt;&#10;&lt;p&gt;This guide shows you how to fix this problem by combining two powerful frameworks:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Jobs-to-be-Done (JTBD)&lt;/strong&gt;: Discover what customers truly need&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Objectives and Key Results (OKRs)&lt;/strong&gt;: Measure outcomes that matter&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Let&amp;rsquo;s dive in.&lt;/p&gt;</description></item><item><title>The Future of AI: Are We Hitting the Limits of Scaling Laws?</title><link>https://jetthoughts.com/blog/future-of-ai-are-we-hitting/</link><pubDate>Sun, 04 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/future-of-ai-are-we-hitting/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=d6Ed5bZAtrM"&gt;&lt;img src="https://jetthoughts.com/blog/future-of-ai-are-we-hitting/file_0_hu_95f68bc89b48b695.webp" srcset="https://jetthoughts.com/blog/future-of-ai-are-we-hitting/file_0_hu_95f68bc89b48b695.webp 800w, https://jetthoughts.com/blog/future-of-ai-are-we-hitting/file_0_hu_63bff47b70faad3b.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="The Future of AI: Are We Hitting the Limits of Scaling Laws?" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In recent years, AI has taken a giant leap forward, especially with large language models (LLMs). The trend has been clear: bigger models, more data, and increased computing power lead to better performance. But are we reaching the end of this scaling journey? In this article, we explore the scaling laws debate and what it means for the future of AI.&lt;/p&gt;</description></item><item><title>Innovative Software Development Practices for 2025: Elevating Your Coding Standards</title><link>https://jetthoughts.com/blog/innovative-software-development-practices-for-2025/</link><pubDate>Sat, 03 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/innovative-software-development-practices-for-2025/</guid><description>&lt;p&gt;As we look ahead to 2025, the landscape of software development is evolving rapidly. New techniques and tools are emerging that promise to enhance coding standards and streamline the development process. This article explores innovative software development practices that can help developers create cleaner, more efficient, and maintainable code. Whether you&amp;rsquo;re a seasoned professional or just starting out, these practices can elevate your coding game and keep you ahead of the curve.&lt;/p&gt;</description></item><item><title>Unlocking Opportunities: How to Become a Successful ROR Developer in 2025</title><link>https://jetthoughts.com/blog/unlocking-opportunities-how-become-successful-ror/</link><pubDate>Sat, 03 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-opportunities-how-become-successful-ror/</guid><description>&lt;p&gt;In today&amp;rsquo;s tech landscape, becoming a successful Ruby on Rails (RoR) developer is a promising career path. As the demand for web applications continues to grow, RoR developers are at the forefront of creating dynamic and efficient web solutions. This article will guide you through the essential steps to thrive in this field by exploring the unique aspects of RoR development, the skills you need to acquire, and how to navigate the job market effectively. Whether you&amp;rsquo;re just starting out or looking to enhance your skills, there&amp;rsquo;s something here for everyone.&lt;/p&gt;</description></item><item><title>Discover the Best Business Hiring Near Me: Opportunities for Your Career in 2025</title><link>https://jetthoughts.com/blog/discover-best-business-hiring-near-me/</link><pubDate>Fri, 02 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/discover-best-business-hiring-near-me/</guid><description>&lt;p&gt;As we look ahead to 2025, the job market is evolving rapidly. If you&amp;rsquo;re on the hunt for new opportunities, focusing on local business hiring near me can be a smart move. Local positions not only allow you to support your community but also can lead to a better work-life balance. In this article, we’ll explore how to find the best job opportunities near you, the industries that are booming, and tips to make your application stand out.&lt;/p&gt;</description></item><item><title>Mastering Virtual Onboarding: Insights from 360Learning's Approach</title><link>https://jetthoughts.com/blog/mastering-virtual-onboarding-insights-from-360learnings/</link><pubDate>Fri, 02 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/mastering-virtual-onboarding-insights-from-360learnings/</guid><description>&lt;p&gt;In an era where remote work is becoming the norm, effective onboarding for new developers is crucial for retention and productivity. 360Learning, a collaborative learning platform, has developed a comprehensive virtual onboarding process that not only welcomes new hires but also sets them up for success in their roles.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Effective onboarding can significantly reduce employee turnover.&lt;/li&gt;&#10;&lt;li&gt;A structured three-phase onboarding process enhances new hire experience.&lt;/li&gt;&#10;&lt;li&gt;Incorporating social interactions fosters team cohesion in a remote environment.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-importance-of-onboarding"&gt;The Importance of Onboarding &lt;a class="hlink" href="#the-importance-of-onboarding" aria-label="Link to The Importance of Onboarding"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Research indicates that a staggering 33% of employees leave their jobs within the first 90 days, often due to ineffective onboarding. Conversely, well-structured onboarding programs can increase retention rates by up to 69%. This is particularly vital in the tech industry, where competition for talent is fierce.&lt;/p&gt;</description></item><item><title>Harnessing AI: A Guide for Startups</title><link>https://jetthoughts.com/blog/harnessing-ai-guide-for-startups/</link><pubDate>Thu, 01 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/harnessing-ai-guide-for-startups/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=7Kt9ugD3bGQ"&gt;&lt;img src="https://jetthoughts.com/blog/harnessing-ai-guide-for-startups/file_0_hu_149a48e47fa1db63.webp" srcset="https://jetthoughts.com/blog/harnessing-ai-guide-for-startups/file_0_hu_149a48e47fa1db63.webp 800w, https://jetthoughts.com/blog/harnessing-ai-guide-for-startups/file_0_hu_dcc7258a4e545ef0.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Harnessing AI: A Guide for Startups" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In a recent episode of Office Hours, Y Combinator partners discussed how startups can leverage AI to enhance their business models. With the rapid advancements in AI technology, founders are presented with unique opportunities to innovate and improve efficiency. Here’s what you need to know.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Don’t Pivot Just for AI&lt;/strong&gt;: Only pivot to AI if it aligns with your core business goals.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Leverage AI for Efficiency&lt;/strong&gt;: Use AI to automate repetitive tasks and improve internal processes.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Engage with the Community&lt;/strong&gt;: Being in the right environment can spark new ideas and insights.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Explore New Applications&lt;/strong&gt;: AI can be applied in various sectors, including healthcare and finance.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="the-ai-landscape-for-startups"&gt;The AI Landscape for Startups &lt;a class="hlink" href="#the-ai-landscape-for-startups" aria-label="Link to The AI Landscape for Startups"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;AI is not just a buzzword; it’s a game-changer for startups. Founders need to ask themselves how they can integrate AI into their existing models. The key is not to pivot to AI for the sake of it. Instead, focus on how AI can enhance your current offerings.&lt;/p&gt;</description></item><item><title>Unlocking the Future: The Role of a Developer Experience Engineer in Modern Software Development</title><link>https://jetthoughts.com/blog/unlocking-future-role-of-developer-experience/</link><pubDate>Thu, 01 May 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-future-role-of-developer-experience/</guid><description>&lt;p&gt;In today&amp;rsquo;s fast-paced tech world, the role of a developer experience engineer is becoming increasingly important. These professionals focus on improving the environment in which developers work, making it smoother and more efficient. This article will explore what developer experience engineers do, how they&amp;rsquo;ve evolved, and why their role is crucial for modern software development.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Developer experience engineers enhance the workflow for developers, making their tasks easier and more efficient.&lt;/li&gt;&#10;&lt;li&gt;A strong developer experience can attract top talent and keep current employees satisfied.&lt;/li&gt;&#10;&lt;li&gt;Automation and the right tools are key to improving developer experience.&lt;/li&gt;&#10;&lt;li&gt;Creating a collaborative atmosphere is essential for maximizing productivity among developers.&lt;/li&gt;&#10;&lt;li&gt;Measuring developer experience through feedback and metrics helps identify areas for improvement.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="understanding-the-developer-experience-engineer-role"&gt;Understanding The Developer Experience Engineer Role &lt;a class="hlink" href="#understanding-the-developer-experience-engineer-role" aria-label="Link to Understanding The Developer Experience Engineer Role"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/unlocking-future-role-of-developer-experience/file_0_hu_811afb6076f65bb2.webp" srcset="https://jetthoughts.com/blog/unlocking-future-role-of-developer-experience/file_0_hu_811afb6076f65bb2.webp 800w, https://jetthoughts.com/blog/unlocking-future-role-of-developer-experience/file_0_hu_2d8f84259ead172d.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="400" alt="Illustration of a Developer Experience Engineer in action." loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Insights from Zapier's CTO on Managing Remote Engineering Teams</title><link>https://jetthoughts.com/blog/insights-from-zapiers-cto-on-managing/</link><pubDate>Wed, 30 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/insights-from-zapiers-cto-on-managing/</guid><description>&lt;p&gt;In a recent interview, Bryan Helmig, the CTO and co-founder of Zapier, shared his insights on the challenges and best practices of managing a fully remote engineering team. Since its inception in 2011, Zapier has embraced a remote-first culture, allowing them to hire talent from around the globe. Helmig discussed the evolution of their remote work strategy and offered valuable advice for startups considering a similar approach.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Emergent Remote Culture&lt;/strong&gt;: Zapier&amp;rsquo;s remote work culture developed organically rather than through a deliberate strategy.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Hiring Practices&lt;/strong&gt;: The company prioritizes hiring individuals based on trust and previous relationships, often without in-person interviews.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Communication Tools&lt;/strong&gt;: Custom tools like &amp;ldquo;Async&amp;rdquo; help facilitate communication across different time zones, addressing the limitations of traditional platforms like Slack.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Overcommunication is Key&lt;/strong&gt;: To ensure clarity, Zapier emphasizes the importance of overcommunicating critical information.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Hiring Signals&lt;/strong&gt;: The company uses skill tests and reference checks to identify top talent effectively.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-emergence-of-remote-work-at-zapier"&gt;The Emergence of Remote Work at Zapier &lt;a class="hlink" href="#the-emergence-of-remote-work-at-zapier" aria-label="Link to The Emergence of Remote Work at Zapier"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Bryan Helmig explained that Zapier did not set out to be a remote company; it was a natural progression. As the team began to grow, they found themselves working remotely due to geographical constraints and the need to hire trusted individuals from various locations. This organic shift allowed them to build a diverse and skilled team without the limitations of a physical office.&lt;/p&gt;</description></item><item><title>Building the Future: Insights from Parker Conrad</title><link>https://jetthoughts.com/blog/building-future-insights-from-parker-conrad/</link><pubDate>Tue, 29 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/building-future-insights-from-parker-conrad/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=FwD0wqwUjAI"&gt;&lt;img src="https://jetthoughts.com/blog/building-future-insights-from-parker-conrad/file_0_hu_39e6f87a5a1aa9b0.webp" srcset="https://jetthoughts.com/blog/building-future-insights-from-parker-conrad/file_0_hu_39e6f87a5a1aa9b0.webp 800w, https://jetthoughts.com/blog/building-future-insights-from-parker-conrad/file_0_hu_75d0d28b886bd811.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Building the Future: Insights from Parker Conrad" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In a recent episode of &lt;em&gt;How to Build the Future&lt;/em&gt;, Garry sits down with Parker Conrad, the co-founder and CEO of Rippling, a company valued at $13.5 billion. Parker shares his journey through the startup world, discussing his early experiences, the challenges he faced, and how he views the future of software and AI in business.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Early Experiences&lt;/strong&gt;: Parker&amp;rsquo;s journey began with a fascination for computers and technology, leading him to fix computers for friends and family.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Startup Challenges&lt;/strong&gt;: He faced numerous rejections and failures before finding success with Zenefits and later Rippling.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;AI&amp;rsquo;s Role&lt;/strong&gt;: AI is set to transform how businesses operate, making larger companies run more efficiently.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Compound Software&lt;/strong&gt;: Parker advocates for a new model of software that integrates multiple functions, rather than focusing on single solutions.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="early-days-and-entrepreneurial-spirit"&gt;Early Days and Entrepreneurial Spirit &lt;a class="hlink" href="#early-days-and-entrepreneurial-spirit" aria-label="Link to Early Days and Entrepreneurial Spirit"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Parker Conrad&amp;rsquo;s story starts in his childhood, where he developed a knack for technology. He began fixing computers for family friends, which sparked his interest in the tech world. This early experience laid the groundwork for his future ventures.&lt;/p&gt;</description></item><item><title>Exploring Ruby Frontend Development: Best Practices and Tools for Modern Web Applications</title><link>https://jetthoughts.com/blog/exploring-ruby-frontend-development-best-practices/</link><pubDate>Tue, 29 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/exploring-ruby-frontend-development-best-practices/</guid><description>&lt;p&gt;Ruby has carved out a significant niche in the world of web development, particularly when it comes to creating modern web applications. Its elegant syntax and powerful frameworks make it a favorite among developers. In this article, we will explore how Ruby fits into the frontend landscape, the frameworks that enhance its capabilities, and the best practices for integrating Ruby with JavaScript. Whether you&amp;rsquo;re a seasoned developer or just starting out, understanding Ruby&amp;rsquo;s role in frontend development can help you build better applications.&lt;/p&gt;</description></item><item><title>Unlocking Creativity: The Best Open Source Website Development Tools for 2025</title><link>https://jetthoughts.com/blog/unlocking-creativity-best-open-source-website/</link><pubDate>Tue, 29 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-creativity-best-open-source-website/</guid><description>&lt;p&gt;As we step into 2025, the landscape of web development is more vibrant than ever. Open source website development tools are leading the charge, making it easier for everyone—from seasoned developers to newcomers—to create stunning websites. This article will explore the best open source tools available, the rise of no-code platforms, the influence of AI, and much more. Whether you&amp;rsquo;re looking to enhance your skills or find tools that fit your needs, there&amp;rsquo;s something here for you.&lt;/p&gt;</description></item><item><title>How To Focus On The Right Problems</title><link>https://jetthoughts.com/blog/how-focus-on-right-problems-c557/</link><pubDate>Mon, 28 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-focus-on-right-problems-c557/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=z-TeST6LnOk"&gt;&lt;img src="https://jetthoughts.com/blog/how-focus-on-right-problems-c557/file_0_hu_11ae90049eb988e1.webp" srcset="https://jetthoughts.com/blog/how-focus-on-right-problems-c557/file_0_hu_11ae90049eb988e1.webp 800w, https://jetthoughts.com/blog/how-focus-on-right-problems-c557/file_0_hu_824b94f532ac168a.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="How To Focus On The Right Problems" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;When it comes to building a successful startup, focus is critical. But how do you know if you’re spending time on the right things? In this episode, Dalton and Michael share advice for how to break through the noise and zero in on solving the problems that matter most for your business.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Focus is essential for success.&lt;/li&gt;&#10;&lt;li&gt;Complexity can distract from core goals.&lt;/li&gt;&#10;&lt;li&gt;Founders have unique superpowers that can drive results.&lt;/li&gt;&#10;&lt;li&gt;Regular audits of priorities can help maintain focus.&lt;/li&gt;&#10;&lt;li&gt;Simplicity in communication leads to clarity in business.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="the-importance-of-focus"&gt;The Importance Of Focus &lt;a class="hlink" href="#the-importance-of-focus" aria-label="Link to The Importance Of Focus"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Focus is a word that gets thrown around a lot in the startup world. It’s almost like a magic spell that can turn chaos into clarity. Dalton and Michael emphasize that when companies succeed, it often boils down to one thing: &lt;strong&gt;focus&lt;/strong&gt;. When things go wrong, it’s usually because the focus was misplaced.&lt;/p&gt;</description></item><item><title>Unlocking Agile Success: The Top 13 Scrum Tools for Project Management in 2022</title><link>https://jetthoughts.com/blog/unlocking-agile-success-top-13-scrum/</link><pubDate>Mon, 28 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-agile-success-top-13-scrum/</guid><description>&lt;p&gt;In 2022, the Scrum methodology continues to dominate the landscape of agile project management, offering teams a flexible and transparent approach to managing projects. With numerous tools available, selecting the right one can significantly enhance productivity and collaboration. Here’s a look at the top 13 Scrum tools that can help streamline your agile processes.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Scrum tools enhance flexibility and transparency in project management.&lt;/li&gt;&#10;&lt;li&gt;Each tool offers unique features tailored to different team needs.&lt;/li&gt;&#10;&lt;li&gt;Choosing the right tool can improve team collaboration and project outcomes.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="1-jira"&gt;1. Jira &lt;a class="hlink" href="#1-jira" aria-label="Link to 1\. Jira"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Jira by Atlassian is a powerhouse in agile project management, particularly favored by IT and software development teams. It offers:&lt;/p&gt;</description></item><item><title>Emerging Startup Software Companies in the USA: A 2025 Overview</title><link>https://jetthoughts.com/blog/emerging-startup-software-companies-in-usa/</link><pubDate>Sun, 27 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/emerging-startup-software-companies-in-usa/</guid><description>&lt;p&gt;The landscape of startup software companies in the USA is rapidly evolving. As we look ahead to 2025, a diverse range of innovative startups is emerging, tackling everyday challenges with fresh technology and ideas. From AI to ecommerce, these companies are not just surviving but thriving in a tough economic climate. In this overview, we’ll explore some of the fastest-growing software startups, their unique solutions, and the trends shaping their growth.&lt;/p&gt;</description></item><item><title>From Zero to One: Rujul Zaparde's Journey in Enterprise Sales</title><link>https://jetthoughts.com/blog/from-zero-one-rujul-zapardes-journey/</link><pubDate>Sun, 27 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/from-zero-one-rujul-zapardes-journey/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=wfyNj_hH5zQ"&gt;&lt;img src="https://jetthoughts.com/blog/from-zero-one-rujul-zapardes-journey/file_0_hu_f774714fa3255923.webp" srcset="https://jetthoughts.com/blog/from-zero-one-rujul-zapardes-journey/file_0_hu_f774714fa3255923.webp 800w, https://jetthoughts.com/blog/from-zero-one-rujul-zapardes-journey/file_0_hu_a89630b8ec2cfeeb.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="From Zero to One: Rujul Zaparde’s Journey in Enterprise Sales" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Starting a business is tough. Rujul Zaparde, co-founder of Zip, shared his experience on how he and his partner tackled the challenge of getting their first customers. They focused on cold outreach to prove their concept and find market fit. Here’s a look at their journey.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Cold outreach can be effective for finding initial customers.&lt;/li&gt;&#10;&lt;li&gt;Gathering feedback is crucial for understanding market needs.&lt;/li&gt;&#10;&lt;li&gt;Building a strong outbound sales strategy is essential.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="the-importance-of-time"&gt;The Importance of Time &lt;a class="hlink" href="#the-importance-of-time" aria-label="Link to The Importance of Time"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Rujul emphasizes that &lt;strong&gt;time is your most valuable asset&lt;/strong&gt;. Before diving into a new venture, it’s vital to ensure you’re investing your time wisely. This means proving that your idea has potential.&lt;/p&gt;</description></item><item><title>Transforming B2B Marketing: Embracing Brand for Sustainable Growth</title><link>https://jetthoughts.com/blog/transforming-b2b-marketing-embracing-brand-for/</link><pubDate>Sat, 26 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/transforming-b2b-marketing-embracing-brand-for/</guid><description>&lt;p&gt;In a recent episode of the Executive Guidance podcast, Peter Weinberg, co-founder of Evidenza and former global head of development at the LinkedIn B2B Institute, shared groundbreaking insights on the evolving landscape of B2B marketing. He emphasized the critical role of brand in driving long-term growth, challenging traditional marketing paradigms.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;The importance of the 95-5 rule: Focus on future buyers, not just current leads.&lt;/li&gt;&#10;&lt;li&gt;Balancing brand-building with performance marketing is essential for sustainable growth.&lt;/li&gt;&#10;&lt;li&gt;Distinctiveness is more crucial than mere differentiation in achieving long-term success.&lt;/li&gt;&#10;&lt;li&gt;Overcoming internal resistance to brand investment is vital for B2B organizations.&lt;/li&gt;&#10;&lt;li&gt;Learning from successful B2B brands can inform effective marketing strategies.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-95-5-rule-a-shift-in-focus"&gt;The 95-5 Rule: A Shift in Focus &lt;a class="hlink" href="#the-95-5-rule-a-shift-in-focus" aria-label="Link to The 95-5 Rule: A Shift in Focus"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Weinberg introduced the 95-5 rule, which posits that businesses should prioritize reaching future buyers—those who are not currently in the market—over solely targeting in-market customers. This approach encourages companies to build brand awareness and recognition, ensuring they remain top-of-mind when potential customers are ready to make a purchase.&lt;/p&gt;</description></item><item><title>Accelerate Your Hiring Process: Pre-Vetted Developers Available for 21-Day Trials</title><link>https://jetthoughts.com/blog/accelerate-your-hiring-process-pre-vetted/</link><pubDate>Fri, 25 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/accelerate-your-hiring-process-pre-vetted/</guid><description>&lt;p&gt;In a rapidly evolving tech landscape, companies are increasingly seeking efficient ways to hire skilled developers. Turing, a leading AI-powered talent platform, has introduced a unique solution that allows businesses to hire pre-vetted developers quickly through a 21-day trial period. This initiative aims to streamline the hiring process and ensure that companies can access top talent without the usual lengthy recruitment cycles.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Turing offers a 21-day risk-free trial for hiring developers.&lt;/li&gt;&#10;&lt;li&gt;The platform provides access to the top 1% of over 3 million engineers.&lt;/li&gt;&#10;&lt;li&gt;Companies can fill most roles within four days, significantly reducing hiring time.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-need-for-speed-in-hiring"&gt;The Need for Speed in Hiring &lt;a class="hlink" href="#the-need-for-speed-in-hiring" aria-label="Link to The Need for Speed in Hiring"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;In today&amp;rsquo;s competitive market, the demand for skilled developers often outpaces supply. Companies face challenges in finding the right talent quickly, which can hinder project timelines and innovation. Turing&amp;rsquo;s solution addresses this issue by leveraging AI to match businesses with pre-vetted developers who have already demonstrated their skills.&lt;/p&gt;</description></item><item><title>Choosing the Right Frontend Development Agency for Your Business in 2025</title><link>https://jetthoughts.com/blog/choosing-right-frontend-development-agency-for/</link><pubDate>Fri, 25 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/choosing-right-frontend-development-agency-for/</guid><description>&lt;p&gt;In 2025, picking the right frontend development agency can feel like a daunting task. With so many options out there, how do you know which one is the best fit for your business? This article will guide you through the essentials of frontend development, what to look for in an agency, and how to ensure you get the most out of your investment. Whether you&amp;rsquo;re launching a new product or revamping an existing one, choosing the right partner is key to your success.&lt;/p&gt;</description></item><item><title>Comprehensive List of Recruitment Agencies in the USA for 2025</title><link>https://jetthoughts.com/blog/comprehensive-list-of-recruitment-agencies-in/</link><pubDate>Fri, 25 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/comprehensive-list-of-recruitment-agencies-in/</guid><description>&lt;p&gt;As the job market continues to evolve, finding the right recruitment agency can make all the difference for businesses and job seekers alike. In 2025, the landscape of recruitment agencies in the USA is set to expand, catering to diverse needs ranging from tech talent to remote work opportunities. This article provides a detailed overview of various recruitment agencies across the country, helping you navigate your options and find the right fit for your hiring needs.&lt;/p&gt;</description></item><item><title>Mastering the Art of Hiring .Net Developers in 2024</title><link>https://jetthoughts.com/blog/mastering-art-of-hiring-net-developers/</link><pubDate>Thu, 24 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/mastering-art-of-hiring-net-developers/</guid><description>&lt;p&gt;The demand for skilled .Net software developers is surging as businesses increasingly rely on digital solutions. However, the tech talent shortage makes finding the right developers a challenge. This guide provides essential insights and strategies for hiring top .Net developers in 2024.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Understand the .Net framework and its capabilities.&lt;/li&gt;&#10;&lt;li&gt;Identify essential skills and experience in candidates.&lt;/li&gt;&#10;&lt;li&gt;Explore various hiring platforms and strategies.&lt;/li&gt;&#10;&lt;li&gt;Evaluate both technical and soft skills during interviews.&lt;/li&gt;&#10;&lt;li&gt;Consider cost implications based on hiring methods.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="understanding-net-technology"&gt;Understanding .Net Technology &lt;a class="hlink" href="#understanding-net-technology" aria-label="Link to Understanding .Net Technology"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Before hiring a .Net developer, it’s crucial to grasp what .Net technology entails. Developed by Microsoft, .Net is an open-source software development framework primarily used for building Windows-based applications. It supports multiple programming languages, including C#, F#, and Visual Basic, allowing developers to create a wide range of applications from desktop to mobile.&lt;/p&gt;</description></item><item><title>Exploring the Leading Software Companies in California, USA: A 2025 Overview</title><link>https://jetthoughts.com/blog/exploring-leading-software-companies-in-california/</link><pubDate>Wed, 23 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/exploring-leading-software-companies-in-california/</guid><description>&lt;p&gt;California is known as the heart of the tech world, and in 2025, its software companies are still leading the charge. From established giants to fresh startups, the landscape is buzzing with innovation and competition. This article takes a closer look at the key players, emerging trends, and the challenges these software companies in California, USA face today.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;California hosts some of the world&amp;rsquo;s largest and most influential software companies.&lt;/li&gt;&#10;&lt;li&gt;Emerging startups are bringing fresh ideas and attracting significant funding.&lt;/li&gt;&#10;&lt;li&gt;The software industry in California spans diverse sectors, including fintech, healthtech, and AI.&lt;/li&gt;&#10;&lt;li&gt;Silicon Valley remains a critical hub for networking and global influence in tech.&lt;/li&gt;&#10;&lt;li&gt;Sustainability efforts are becoming more important in software development practices.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="innovative-giants-shaping-the-tech-scene"&gt;Innovative Giants Shaping The Tech Scene &lt;a class="hlink" href="#innovative-giants-shaping-the-tech-scene" aria-label="Link to Innovative Giants Shaping The Tech Scene"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/exploring-leading-software-companies-in-california/file_0_hu_a61610dd710ab438.webp" srcset="https://jetthoughts.com/blog/exploring-leading-software-companies-in-california/file_0_hu_a61610dd710ab438.webp 800w, https://jetthoughts.com/blog/exploring-leading-software-companies-in-california/file_0_hu_b41ffd5fa18cb173.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="400" alt="California tech landscape with landmarks and innovation elements." loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Rails 7.1: How Ruby on Rails Developers Can Use the .with Query Method for CTEs</title><link>https://jetthoughts.com/blog/rails-71-how-ruby-on-developers/</link><pubDate>Wed, 23 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rails-71-how-ruby-on-developers/</guid><description>&lt;p&gt;For Ruby on Rails developers looking to level up their database query skills, Rails 7.1 introduced a powerful new feature that deserves your attention: the &lt;a href="https://api.rubyonrails.org/classes/ActiveRecord/QueryMethods.html#method-i-with"&gt;.with&lt;/a&gt; query method. This elegant addition allows developers to construct &lt;a href="https://www.atlassian.com/data/sql/using-common-table-expressions"&gt;Common Table Expressions (CTEs)&lt;/a&gt; directly in Active Record, making complex queries more readable and maintainable.&lt;/p&gt;&#10;&lt;h2 id="what-are-common-table-expressions"&gt;What are Common Table Expressions? &lt;a class="hlink" href="#what-are-common-table-expressions" aria-label="Link to What are Common Table Expressions?"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Before diving into implementation, let&amp;rsquo;s quickly understand what CTEs are. Common Table Expressions act as temporary result sets that you can reference within a SELECT, INSERT, UPDATE, or DELETE statement. For Rails developers working with complex data relationships, CTEs offer several advantages:&lt;/p&gt;</description></item><item><title>Unlocking Success: Essential Software Engineering Best Practices for 2025</title><link>https://jetthoughts.com/blog/unlocking-success-essential-software-engineering-best/</link><pubDate>Wed, 23 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-success-essential-software-engineering-best/</guid><description>&lt;p&gt;As we move into 2025, the landscape of software engineering continues to evolve at a rapid pace. With new technologies emerging and collaboration becoming more remote, it’s essential for software engineers to adapt and implement effective practices. This article will explore key software engineering best practices that can help you stay relevant and successful in the coming years. From embracing continuous integration to mastering remote teamwork, these strategies will set you on the path to success.&lt;/p&gt;</description></item><item><title>Mastering Asynchronous Communication: A Game Changer for Remote Teams</title><link>https://jetthoughts.com/blog/mastering-asynchronous-communication-game-changer-for/</link><pubDate>Tue, 22 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/mastering-asynchronous-communication-game-changer-for/</guid><description>&lt;p&gt;In the evolving landscape of remote work, asynchronous communication has emerged as a vital strategy for distributed teams. Companies like Basecamp, Doist, and GitHub have successfully adopted this model, allowing team members to collaborate effectively across different time zones without the constraints of real-time interaction.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Asynchronous communication allows team members to respond at their convenience, enhancing productivity.&lt;/li&gt;&#10;&lt;li&gt;Tools like Twist and Slack facilitate organized communication without the need for immediate responses.&lt;/li&gt;&#10;&lt;li&gt;Balancing synchronous and asynchronous methods can optimize team collaboration.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="understanding-asynchronous-communication"&gt;Understanding Asynchronous Communication &lt;a class="hlink" href="#understanding-asynchronous-communication" aria-label="Link to Understanding Asynchronous Communication"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Asynchronous communication refers to the exchange of information where responses are not immediate. Unlike synchronous communication, where team members interact in real-time, asynchronous methods allow individuals to engage at their own pace. This is particularly beneficial for remote teams spread across various time zones.&lt;/p&gt;</description></item><item><title>Choosing the Right MVP App Development Company for Your Startup in 2025</title><link>https://jetthoughts.com/blog/choosing-right-mvp-app-development-company/</link><pubDate>Mon, 21 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/choosing-right-mvp-app-development-company/</guid><description>&lt;p&gt;Starting a new business is exciting, but it comes with its own set of challenges. One of the first steps for many startups is developing a Minimum Viable Product (MVP). This is essentially a simple version of your product that helps you test your idea with real users. Choosing the right MVP app development company is key to turning your vision into reality, especially in 2025 when technology is rapidly evolving. In this article, we&amp;rsquo;ll explore what to look for in an MVP development partner to ensure your startup&amp;rsquo;s success.&lt;/p&gt;</description></item><item><title>From Bump to Google Photos: The Journey of David Lieb and His Team</title><link>https://jetthoughts.com/blog/from-bump-google-photos-journey-of-2eff/</link><pubDate>Mon, 21 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/from-bump-google-photos-journey-of-2eff/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=cZ3kiEyDTCQ"&gt;&lt;img src="https://jetthoughts.com/blog/from-bump-google-photos-journey-of-2eff/file_0_hu_cd1b8e4b85e6d19c.webp" srcset="https://jetthoughts.com/blog/from-bump-google-photos-journey-of-2eff/file_0_hu_cd1b8e4b85e6d19c.webp 800w, https://jetthoughts.com/blog/from-bump-google-photos-journey-of-2eff/file_0_hu_ad32fd5350bbc8df.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="From Bump to Google Photos: The Journey of David Lieb and His Team" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In a challenging period for David Lieb and his team, they faced the reality of their popular app, Bump, potentially failing. With 150 million users, the pressure was on. They sought advice from Paul Graham, which led to a pivotal shift in their approach. This article explores their journey from a struggling photo-sharing app to the foundation of Google Photos.&lt;/p&gt;</description></item><item><title>Nicolas Dessaigne's Essential Advice for New Founders</title><link>https://jetthoughts.com/blog/nicolas-dessaignes-essential-advice-for-new/</link><pubDate>Mon, 21 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/nicolas-dessaignes-essential-advice-for-new/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=JkSOIoVHKkI"&gt;&lt;img src="https://jetthoughts.com/blog/nicolas-dessaignes-essential-advice-for-new/file_0_hu_6d9f1566e002342b.webp" srcset="https://jetthoughts.com/blog/nicolas-dessaignes-essential-advice-for-new/file_0_hu_6d9f1566e002342b.webp 800w, https://jetthoughts.com/blog/nicolas-dessaignes-essential-advice-for-new/file_0_hu_c9ea07e074d2e63.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Nicolas Dessaigne’s Essential Advice for New Founders" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Starting a business can feel overwhelming. Nicolas Dessaigne, co-founder of Algolia and a partner at Y Combinator, shares practical advice for founders just starting out. His insights focus on the importance of action over perfection and learning from users.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Don’t wait for the perfect idea; start building now.&lt;/li&gt;&#10;&lt;li&gt;Focus on fast iterations and learning from users.&lt;/li&gt;&#10;&lt;li&gt;Launch early and gather feedback.&lt;/li&gt;&#10;&lt;li&gt;Spend time with your users to understand their needs.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="start-building-now"&gt;Start Building Now &lt;a class="hlink" href="#start-building-now" aria-label="Link to Start Building Now"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Many new founders get stuck waiting for that &lt;strong&gt;perfect idea&lt;/strong&gt;. But here’s the truth: it doesn’t exist. Instead of waiting, just start building. Even if your idea isn’t perfect, you’ll learn a lot as you go. The process of creating your product will lead you to better ideas.&lt;/p&gt;</description></item><item><title>Solving Target Failed to Become Healthy Kamal Error: A Practical Debugging Guide</title><link>https://jetthoughts.com/blog/solving-kamals-target-failed-become-healthy/</link><pubDate>Mon, 21 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/solving-kamals-target-failed-become-healthy/</guid><description>&lt;h2 id="the-silent-deployment-killer"&gt;The Silent Deployment Killer &lt;a class="hlink" href="#the-silent-deployment-killer" aria-label="Link to The Silent Deployment Killer"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Deployment should be the triumphant final step in your development cycle. You&amp;rsquo;ve built your application, tested it thoroughly, and you&amp;rsquo;re ready to share it with the world. You&amp;rsquo;ve chosen Kamal as your deployment tool because it provides Docker-based simplicity without Kubernetes complexity.&lt;/p&gt;&#10;&lt;p&gt;Then suddenly, your deployment grinds to a halt with this message:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;ERROR Failed to boot web on xxx.xxx.x.xx&#10;INFO First web container is unhealthy, not booting any other roles&#10;ERROR docker exit status: 1&#10;docker stdout: Nothing written&#10;docker stderr: Error: target failed to become healthy&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;This seemingly opaque error—what I call a &amp;ldquo;silent killer&amp;rdquo;—can derail your deployment momentum and leave you searching for answers in a sea of logs and configuration files.&lt;/p&gt;</description></item><item><title>The Art of Form Objects: Elegant Search Filtering in Rails 🔍</title><link>https://jetthoughts.com/blog/art-of-form-objects-elegant-search/</link><pubDate>Mon, 21 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/art-of-form-objects-elegant-search/</guid><description>&lt;h2 id="beyond-primitive-search-a-journey-into-compositional-design-"&gt;Beyond Primitive Search: A Journey into Compositional Design 🌱 &lt;a class="hlink" href="#beyond-primitive-search-a-journey-into-compositional-design-" aria-label="Link to Beyond Primitive Search: A Journey into Compositional Design 🌱"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Search functionality in Rails applications often begins as simple query parameters, then gradually accumulates complexity—like a garden that grows without thoughtful landscaping. Let&amp;rsquo;s explore how Form Objects and specialized Filter components can transform this complexity into an elegant, maintainable ecosystem.&lt;/p&gt;&#10;&lt;h2 id="the-mental-model-lenses-of-perception-"&gt;The Mental Model: Lenses of Perception 🔭 &lt;a class="hlink" href="#the-mental-model-lenses-of-perception-" aria-label="Link to The Mental Model: Lenses of Perception 🔭"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Imagine your data as a vast, multidimensional landscape. Each search parameter becomes a specialized lens, focusing on particular features:&lt;/p&gt;</description></item><item><title>Turbocharge Your Rails Apps with Smart Database Indexing</title><link>https://jetthoughts.com/blog/turbocharge-your-rails-apps-with-smart/</link><pubDate>Mon, 21 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/turbocharge-your-rails-apps-with-smart/</guid><description>&lt;p&gt;Is your Rails application running slow? Are search queries taking forever to complete? The solution might be simpler than you think. Proper database indexing can dramatically improve search and filtering performance with minimal code changes.&lt;/p&gt;&#10;&lt;h2 id="why-indexes-matter"&gt;Why Indexes Matter &lt;a class="hlink" href="#why-indexes-matter" aria-label="Link to Why Indexes Matter"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Think of indexes like the index at the back of a book. Instead of scanning every page, you can quickly find what you&amp;rsquo;re looking for. Database indexes work the same way, allowing your queries to skip full table scans and go straight to the relevant records.&lt;/p&gt;</description></item><item><title>Unlocking Success: Essential Software Development Services for Startups in 2025</title><link>https://jetthoughts.com/blog/unlocking-success-essential-software-development-services/</link><pubDate>Mon, 21 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-success-essential-software-development-services/</guid><description>&lt;p&gt;In 2025, startups face a fast-paced and competitive environment where having the right software development services can make all the difference. As new technologies and trends emerge, it&amp;rsquo;s crucial for founders to understand their unique needs and how to meet them. This guide will explore essential software development services for startups, helping you navigate the challenges of building a successful product that can adapt and grow with your business.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Speed is crucial for startups to stay competitive and adapt quickly to market changes.&lt;/li&gt;&#10;&lt;li&gt;Choosing between in-house development and outsourcing is a significant decision that impacts your startup&amp;rsquo;s growth.&lt;/li&gt;&#10;&lt;li&gt;Custom software can provide tailored solutions that off-the-shelf products often can&amp;rsquo;t deliver.&lt;/li&gt;&#10;&lt;li&gt;Utilizing the right tools for project management and collaboration can streamline your development process.&lt;/li&gt;&#10;&lt;li&gt;Building a strong and adaptable team is essential for ongoing success and innovation.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="understanding-the-unique-needs-of-startups"&gt;Understanding The Unique Needs Of Startups &lt;a class="hlink" href="#understanding-the-unique-needs-of-startups" aria-label="Link to Understanding The Unique Needs Of Startups"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;So, you&amp;rsquo;re starting a company? Cool! Software is key. But building software for a startup? It&amp;rsquo;s not the same as doing it for a big company. You have to think differently. Let&amp;rsquo;s look at what makes your needs &lt;em&gt;unique&lt;/em&gt;.&lt;/p&gt;</description></item><item><title>How to Send Custom Email Content Types in Ruby on Rails: Expert Developer's Guide</title><link>https://jetthoughts.com/blog/how-send-custom-email-content-types/</link><pubDate>Sun, 20 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-send-custom-email-content-types/</guid><description>&lt;h2 id="introduction"&gt;Introduction &lt;a class="hlink" href="#introduction" aria-label="Link to Introduction"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;This comprehensive guide is designed for Ruby on Rails developers who need to implement custom email content types in their applications. We&amp;rsquo;ll demonstrate how to enhance your Ruby on Rails development skills by implementing AMP for Email as an example, though these techniques apply to any custom content type you might need in your projects.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-send-custom-email-content-types/file_0_hu_157a0308a117a331.webp" srcset="https://jetthoughts.com/blog/how-send-custom-email-content-types/file_0_hu_157a0308a117a331.webp 800w, https://jetthoughts.com/blog/how-send-custom-email-content-types/file_0_hu_6df8601374ef4a23.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="634" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="step-1-register-the-mime-type-in-your-ruby-on-rails-application"&gt;Step 1: Register the MIME Type in Your Ruby on Rails Application &lt;a class="hlink" href="#step-1-register-the-mime-type-in-your-ruby-on-rails-application" aria-label="Link to Step 1: Register the MIME Type in Your Ruby on Rails Application"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The first essential step is to register your custom MIME type in the Rails configuration.&lt;/p&gt;</description></item><item><title>The Lightcone 2025 Forecast: Predictions for Startups, AI, and Crypto</title><link>https://jetthoughts.com/blog/lightcone-2025-forecast-predictions-for-startups/</link><pubDate>Wed, 09 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/lightcone-2025-forecast-predictions-for-startups/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=uGjv25IrjoE"&gt;&lt;img src="https://jetthoughts.com/blog/lightcone-2025-forecast-predictions-for-startups/file_0_hu_3556366c03675609.webp" srcset="https://jetthoughts.com/blog/lightcone-2025-forecast-predictions-for-startups/file_0_hu_3556366c03675609.webp 800w, https://jetthoughts.com/blog/lightcone-2025-forecast-predictions-for-startups/file_0_hu_4c9a0aec155f2ac2.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="The Lightcone 2025 Forecast: Predictions for Startups, AI, and Crypto" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Happy New Year! In this mini-episode, the Lightcone hosts ring in 2025 with their predictions for startups, AI, and crypto. They share insights on how these fields will evolve and what we can expect in the coming year.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;AI is expected to win more Nobel prizes.&lt;/li&gt;&#10;&lt;li&gt;Crypto will go mainstream with stable coins.&lt;/li&gt;&#10;&lt;li&gt;Interest rates and government spending will impact crypto prices.&lt;/li&gt;&#10;&lt;li&gt;AI will enhance virtual interactions significantly.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="ais-impact-on-science"&gt;AI&amp;rsquo;s Impact on Science &lt;a class="hlink" href="#ais-impact-on-science" aria-label="Link to AI’s Impact on Science"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Last year was a big one for AI. It won two Nobel prizes. Jeff Hinton took home the Nobel Prize in Physics for his work on deep neural networks. Demis Hassabis and his team won in Chemistry for AlphaFold, which revolutionized protein folding. This shows how &lt;strong&gt;AI is pushing boundaries&lt;/strong&gt; in science and technology.&lt;/p&gt;</description></item><item><title>Exploring Innovative Open Source Front End Projects to Boost Your Skills in 2025</title><link>https://jetthoughts.com/blog/exploring-innovative-open-source-front-end/</link><pubDate>Mon, 07 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/exploring-innovative-open-source-front-end/</guid><description>&lt;p&gt;As we enter 2025, the field of front-end development is buzzing with opportunities for growth and learning. Open source projects are an excellent way to sharpen your skills, gain practical experience, and contribute to the community. Whether you&amp;rsquo;re just starting out or looking to tackle more complex challenges, there are plenty of open source front end projects to explore. This article will guide you through essential steps to get started, highlight some exciting projects, and offer tips for making the most of your contributions.&lt;/p&gt;</description></item><item><title>Over-Complicated Pricing Could Kill A Sales Process</title><link>https://jetthoughts.com/blog/over-complicated-pricing-could-kill-sales/</link><pubDate>Mon, 07 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/over-complicated-pricing-could-kill-sales/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=ijXgeZ7p9SA"&gt;&lt;img src="https://jetthoughts.com/blog/over-complicated-pricing-could-kill-sales/file_0_hu_aa02bfd40df915aa.webp" srcset="https://jetthoughts.com/blog/over-complicated-pricing-could-kill-sales/file_0_hu_aa02bfd40df915aa.webp 800w, https://jetthoughts.com/blog/over-complicated-pricing-could-kill-sales/file_0_hu_d3f76b44e9e3842b.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Over-Complicated Pricing Could Kill A Sales Process" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;When it comes to pricing strategies, simplicity is key. Over-complicating your pricing can derail your sales process. This is especially true in uncertain economic times. Let’s break down why keeping your pricing straightforward is essential for your business.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Simple pricing helps maintain steady revenue.&lt;/li&gt;&#10;&lt;li&gt;Recurring revenue models are safer than usage-based pricing.&lt;/li&gt;&#10;&lt;li&gt;Investors prefer predictable revenue streams.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-importance-of-simple-pricing"&gt;The Importance Of Simple Pricing &lt;a class="hlink" href="#the-importance-of-simple-pricing" aria-label="Link to The Importance Of Simple Pricing"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Choosing the right pricing model is crucial. If your pricing is too complex, it can confuse customers. Confused customers are less likely to buy. They might even walk away.&lt;/p&gt;</description></item><item><title>Unlocking Creativity: The Ultimate Guide to Open Source Web Development Tools in 2025</title><link>https://jetthoughts.com/blog/unlocking-creativity-ultimate-guide-open-source/</link><pubDate>Mon, 07 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-creativity-ultimate-guide-open-source/</guid><description>&lt;p&gt;In 2025, the world of web development is buzzing with innovation and exciting new tools. Open source web development tools are at the forefront of this change, making it easier for developers and non-developers alike to create stunning websites. Whether you&amp;rsquo;re a seasoned coder or just starting out, understanding these tools can help you streamline your workflow and enhance your creative process. This guide will walk you through the best open source options available, the rise of no-code platforms, the impact of AI, and much more.&lt;/p&gt;</description></item><item><title>Top 11 Blockchain Startups Revolutionizing Real Estate</title><link>https://jetthoughts.com/blog/top-11-blockchain-startups-revolutionizing-real/</link><pubDate>Sun, 06 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/top-11-blockchain-startups-revolutionizing-real/</guid><description>&lt;p&gt;The integration of blockchain technology into the real estate sector is gaining momentum, with numerous startups emerging to tackle traditional challenges such as fraud, inefficiency, and lack of transparency. Here are 11 innovative blockchain startups that are set to transform the real estate landscape.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Blockchain technology is addressing issues like fraud and inefficiency in real estate transactions.&lt;/li&gt;&#10;&lt;li&gt;Startups are leveraging tokenization to make real estate investments more accessible.&lt;/li&gt;&#10;&lt;li&gt;Many of these companies are still in early development stages but show significant promise.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="propy"&gt;Propy &lt;a class="hlink" href="#propy" aria-label="Link to Propy"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Founded in 2015 and based in Palo Alto, Propy is an international real estate marketplace that utilizes a decentralized title registry. The platform allows users to search for properties globally and facilitates transactions using cryptocurrencies, including Bitcoin. Propy has raised $15 million to date.&lt;/p&gt;</description></item><item><title>How to Hire a Ruby on Rails Developer: Tips for Finding the Perfect Fit</title><link>https://jetthoughts.com/blog/how-hire-ruby-on-rails-developer/</link><pubDate>Sat, 05 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-hire-ruby-on-rails-developer/</guid><description>&lt;p&gt;Hiring a Ruby on Rails developer can feel overwhelming, especially with so many options out there. You want someone who not only understands the framework but also fits well with your project needs and team culture. This guide will walk you through the essential steps to find the right developer, from understanding what Ruby on Rails is all about to crafting an effective job description and conducting interviews. Let’s get started!&lt;/p&gt;</description></item><item><title>7 Essential Strategies to Boost Remote Worker Satisfaction</title><link>https://jetthoughts.com/blog/7-essential-strategies-boost-remote-worker/</link><pubDate>Fri, 04 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/7-essential-strategies-boost-remote-worker/</guid><description>&lt;p&gt;In today&amp;rsquo;s evolving work landscape, remote work has become a staple for many organizations. As companies adapt to this new normal, ensuring the happiness and engagement of remote employees is crucial for productivity and retention. Here are seven effective strategies to keep your remote workforce satisfied and motivated.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Prioritize open and honest communication.&lt;/li&gt;&#10;&lt;li&gt;Provide regular feedback and recognition.&lt;/li&gt;&#10;&lt;li&gt;Avoid scapegoating and promote a positive culture.&lt;/li&gt;&#10;&lt;li&gt;Ensure clear advancement opportunities.&lt;/li&gt;&#10;&lt;li&gt;Measure performance effectively.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-importance-of-communication"&gt;The Importance Of Communication &lt;a class="hlink" href="#the-importance-of-communication" aria-label="Link to The Importance Of Communication"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Effective communication is the cornerstone of managing remote teams. It’s essential to maintain open, honest, and transparent communication channels. Regular updates about company news, project developments, and team dynamics help remote workers feel connected and valued.&lt;/p&gt;</description></item><item><title>Astranis Launches Four Satellites with SpaceX: A New Era in Broadband</title><link>https://jetthoughts.com/blog/astranis-launches-four-satellites-with-spacex/</link><pubDate>Fri, 04 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/astranis-launches-four-satellites-with-spacex/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=u4mdcp6wIYo"&gt;&lt;img src="https://jetthoughts.com/blog/astranis-launches-four-satellites-with-spacex/file_0_hu_cba19d5c28096402.webp" srcset="https://jetthoughts.com/blog/astranis-launches-four-satellites-with-spacex/file_0_hu_cba19d5c28096402.webp 800w, https://jetthoughts.com/blog/astranis-launches-four-satellites-with-spacex/file_0_hu_2dc16851a4084b59.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Astranis Launches Four Satellites with SpaceX: A New Era in Broadband" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Yesterday marked a significant milestone in the world of satellite technology. Astranis successfully launched four broadband satellites aboard SpaceX&amp;rsquo;s Falcon 9 rocket. This event is notable as it is the first time a commercial manufacturer has sent four of its own satellites to geostationary orbit (GEO) in a single mission. Astranis has come a long way from its humble beginnings in a small apartment to becoming a leader in satellite manufacturing.&lt;/p&gt;</description></item><item><title>Discover Exciting Ruby on Rails Jobs Near Me: Your Path to a Thriving Career</title><link>https://jetthoughts.com/blog/discover-exciting-ruby-on-rails-jobs/</link><pubDate>Thu, 03 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/discover-exciting-ruby-on-rails-jobs/</guid><description>&lt;p&gt;If you&amp;rsquo;re looking to jumpstart your career in tech, particularly in Ruby on Rails, you&amp;rsquo;re in luck. There are plenty of opportunities out there, and many of them might be closer than you think. From local job boards to online communities, this guide will help you discover exciting Ruby on Rails jobs near me. Whether you&amp;rsquo;re a seasoned developer or just starting out, there&amp;rsquo;s something here for everyone. Let&amp;rsquo;s explore how you can find the right job and enhance your skills in this dynamic field.&lt;/p&gt;</description></item><item><title>Discover the Top React Development Companies of 2025 for Your Next Project</title><link>https://jetthoughts.com/blog/discover-top-react-development-companies-of/</link><pubDate>Thu, 03 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/discover-top-react-development-companies-of/</guid><description>&lt;p&gt;In the ever-evolving world of web development, React has carved out a significant niche. As we step into 2025, businesses are on the lookout for the top React development companies to help them create dynamic and efficient applications. This article highlights some of the best firms in the industry, known for their expertise in React and their ability to deliver high-quality solutions tailored to various project needs. Whether you&amp;rsquo;re a startup or an established company, finding the right partner is crucial for success.&lt;/p&gt;</description></item><item><title>2024: The Year Startups Thrived Against All Odds</title><link>https://jetthoughts.com/blog/2024-year-startups-thrived-against-all/</link><pubDate>Wed, 02 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/2024-year-startups-thrived-against-all/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=z0wt2pe_LZM"&gt;&lt;img src="https://jetthoughts.com/blog/2024-year-startups-thrived-against-all/file_0_hu_4f681c2f1431adfc.webp" srcset="https://jetthoughts.com/blog/2024-year-startups-thrived-against-all/file_0_hu_4f681c2f1431adfc.webp 800w, https://jetthoughts.com/blog/2024-year-startups-thrived-against-all/file_0_hu_e6b8f393ca3ac7ca.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="2024: The Year Startups Thrived Against All Odds" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;2024 has been a remarkable year for startups, filled with unexpected successes and lessons learned. As we approach the end of the year, the Lightcone hosts reflect on the biggest trends, moments, and setbacks that shaped the startup landscape.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Startups can generate significant revenue quickly.&lt;/li&gt;&#10;&lt;li&gt;The myth of the GPT wrapper has been debunked.&lt;/li&gt;&#10;&lt;li&gt;Open-source models are changing the game.&lt;/li&gt;&#10;&lt;li&gt;Voice AI and robotics are on the rise.&lt;/li&gt;&#10;&lt;li&gt;The startup hiring landscape is evolving.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-startup-boom"&gt;The Startup Boom &lt;a class="hlink" href="#the-startup-boom" aria-label="Link to The Startup Boom"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;This year, the startup ecosystem has seen a surge in companies making millions in just 24 months. It’s wild to think that with just a few million dollars, a startup can grow rapidly. Many companies that once struggled to secure enterprise pilots are now turning those into real revenue streams. The landscape is shifting, and it’s anyone’s game.&lt;/p&gt;</description></item><item><title>How To Focus On The Right Problems</title><link>https://jetthoughts.com/blog/how-focus-on-right-problems/</link><pubDate>Wed, 02 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-focus-on-right-problems/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=z-TeST6LnOk"&gt;&lt;img src="https://jetthoughts.com/blog/how-focus-on-right-problems/file_0_hu_11ae90049eb988e1.webp" srcset="https://jetthoughts.com/blog/how-focus-on-right-problems/file_0_hu_11ae90049eb988e1.webp 800w, https://jetthoughts.com/blog/how-focus-on-right-problems/file_0_hu_824b94f532ac168a.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="How To Focus On The Right Problems" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;When it comes to building a successful startup, focus is critical. But how do you know if you’re spending time on the right things? In this episode, Dalton and Michael share advice for how to break through the noise and zero in on solving the problems that matter most for your business.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Focus is essential for success in startups.&lt;/li&gt;&#10;&lt;li&gt;Complexity can distract from what really matters.&lt;/li&gt;&#10;&lt;li&gt;Founders have unique superpowers that can drive results.&lt;/li&gt;&#10;&lt;li&gt;Regular reflection and prioritization are key to maintaining focus.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-importance-of-focus"&gt;The Importance Of Focus &lt;a class="hlink" href="#the-importance-of-focus" aria-label="Link to The Importance Of Focus"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Focus is the name of the game in the startup world. Founders often get pulled in many directions. They might feel pressure to juggle multiple tasks, but the truth is, &lt;strong&gt;success comes from focusing on a few key areas&lt;/strong&gt;. When things go wrong, it’s often because the focus was misplaced.&lt;/p&gt;</description></item><item><title>Exploring the Best Platforms for Software Development in 2025: A Comprehensive Guide</title><link>https://jetthoughts.com/blog/exploring-best-platforms-for-software-development/</link><pubDate>Tue, 01 Apr 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/exploring-best-platforms-for-software-development/</guid><description>&lt;p&gt;As we look ahead to 2025, the landscape of software development is evolving rapidly. With new technologies and tools emerging, developers need to stay informed about the best platforms for software development. This guide will explore various platforms that are set to shape the future of development. From low-code solutions to AI-driven tools, we&amp;rsquo;ll cover what you need to know to make the best choice for your projects.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Low-code platforms are gaining traction for their ability to speed up development and reduce costs.&lt;/li&gt;&#10;&lt;li&gt;AI tools are transforming how developers work, making it easier to integrate smart features into applications.&lt;/li&gt;&#10;&lt;li&gt;Mobile app development is focusing on user experience and cross-platform compatibility.&lt;/li&gt;&#10;&lt;li&gt;Blockchain is becoming more relevant, especially for secure transactions and data integrity.&lt;/li&gt;&#10;&lt;li&gt;Community support is crucial; choose platforms with active user bases for better resources and troubleshooting.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="the-rise-of-low-code-platforms"&gt;The Rise of Low-Code Platforms &lt;a class="hlink" href="#the-rise-of-low-code-platforms" aria-label="Link to The Rise of Low-Code Platforms"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Low-code platforms? They&amp;rsquo;re kind of a big deal right now. Instead of writing mountains of code, you get to use visual tools. Think drag-and-drop interfaces and pre-built components. It&amp;rsquo;s like building with LEGOs, but for software. Seriously, who wouldn&amp;rsquo;t want that?&lt;/p&gt;</description></item><item><title>Discover the Best Recruitment Agencies in the USA for 2025</title><link>https://jetthoughts.com/blog/discover-best-recruitment-agencies-in-usa/</link><pubDate>Mon, 31 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/discover-best-recruitment-agencies-in-usa/</guid><description>&lt;p&gt;Finding the right talent can be tough, especially in today’s competitive job market. If you&amp;rsquo;re a business owner or manager looking to hire, you might want to consider working with a recruitment agency. These agencies specialize in connecting employers with the best candidates for their needs. In this article, we’ll explore some of the best recruitment agencies in the USA for 2025. Whether you’re in tech, healthcare, or any other industry, there’s an agency here that can help you find the right fit.&lt;/p&gt;</description></item><item><title>Innovative Marketing Strategies: The Creative Edge for Leading Brands</title><link>https://jetthoughts.com/blog/innovative-marketing-strategies-creative-edge-for/</link><pubDate>Mon, 31 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/innovative-marketing-strategies-creative-edge-for/</guid><description>&lt;p&gt;In a rapidly evolving marketplace, leading brands are leveraging innovative marketing strategies to drive demand and enhance customer engagement. This article explores how creativity, combined with data-driven insights, is reshaping the marketing landscape and helping brands stand out in competitive environments.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Creativity is essential for brand development and long-term success.&lt;/li&gt;&#10;&lt;li&gt;Combining traditional and digital marketing strategies can enhance brand visibility.&lt;/li&gt;&#10;&lt;li&gt;Engaging customers through community-driven initiatives fosters loyalty.&lt;/li&gt;&#10;&lt;li&gt;High-quality content remains a critical component of effective marketing.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-importance-of-creativity-in-marketing"&gt;The Importance Of Creativity In Marketing &lt;a class="hlink" href="#the-importance-of-creativity-in-marketing" aria-label="Link to The Importance Of Creativity In Marketing"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Creativity has always played a pivotal role in marketing, but its significance has surged in recent years. Brands like Apple exemplify how creativity can permeate every aspect of a business, from product design to customer experience. As companies increasingly recognize the value of creative marketing, they are shifting back towards innovative approaches that resonate with consumers.&lt;/p&gt;</description></item><item><title>YC Partner and Algolia Co-Founder Nicolas Dessaigne’s Advice for Founders Starting Out</title><link>https://jetthoughts.com/blog/yc-partner-algolia-co-founder-nicolas/</link><pubDate>Mon, 31 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/yc-partner-algolia-co-founder-nicolas/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=JkSOIoVHKkI"&gt;&lt;img src="https://jetthoughts.com/blog/yc-partner-algolia-co-founder-nicolas/file_0_hu_6d9f1566e002342b.webp" srcset="https://jetthoughts.com/blog/yc-partner-algolia-co-founder-nicolas/file_0_hu_6d9f1566e002342b.webp 800w, https://jetthoughts.com/blog/yc-partner-algolia-co-founder-nicolas/file_0_hu_c9ea07e074d2e63.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="YC Partner and Algolia Co-Founder Nicolas Dessaigne’s Advice for Founders Starting Out" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Starting a business can feel overwhelming. You might think you need the perfect idea before you even begin. But according to Nicolas Dessaigne, co-founder of Algolia and a partner at Y Combinator, that’s not the case. He emphasizes the importance of starting now, even if your idea isn’t fully formed. The journey of building your product is where the real learning happens.&lt;/p&gt;</description></item><item><title>Exploring the Future of Innovation with Software Co: A Leader in Software Development</title><link>https://jetthoughts.com/blog/exploring-future-of-innovation-with-software/</link><pubDate>Sun, 30 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/exploring-future-of-innovation-with-software/</guid><description>&lt;p&gt;In today&amp;rsquo;s fast-paced tech world, innovation in software development is more important than ever. Software Co stands out as a leader in this field, constantly pushing the boundaries of what&amp;rsquo;s possible. This article explores how Software Co is shaping the future of innovation through various strategies and practices that not only enhance their software solutions but also create a thriving environment for creativity and collaboration.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Innovation in software development means pushing boundaries to create better solutions.&lt;/li&gt;&#10;&lt;li&gt;Fostering innovation helps businesses stand out and attract top talent.&lt;/li&gt;&#10;&lt;li&gt;A collaborative culture encourages idea sharing and enhances team dynamics.&lt;/li&gt;&#10;&lt;li&gt;Continuous learning and embracing diversity are vital for driving innovation.&lt;/li&gt;&#10;&lt;li&gt;Leveraging AI can streamline processes and free up time for creative work.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="innovation-in-software-development-what-it-means"&gt;Innovation in Software Development: What It Means &lt;a class="hlink" href="#innovation-in-software-development-what-it-means" aria-label="Link to Innovation in Software Development: What It Means"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;So, what does innovation &lt;em&gt;really&lt;/em&gt; mean in the world of software? It&amp;rsquo;s more than just slapping on the latest tech. It&amp;rsquo;s about rethinking how we build, what we build, and why we build it. Think of it as pushing the boundaries of what&amp;rsquo;s possible. It&amp;rsquo;s about extending the normally accepted boundaries in the &lt;a href="https://www.numberanalytics.com/blog/10-data-literacy-trends-revolutionizing-software-2023"&gt;development lifecycle&lt;/a&gt; to upsurge the overall progress and create a new and optimized outcome altogether.&lt;/p&gt;</description></item><item><title>Unlocking the Power of Ruby on Rails Microservices for Scalable Applications</title><link>https://jetthoughts.com/blog/unlocking-power-of-ruby-on-rails/</link><pubDate>Sun, 30 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-power-of-ruby-on-rails/</guid><description>&lt;p&gt;In today&amp;rsquo;s fast-paced tech world, developers are always on the lookout for ways to improve their applications. Ruby on Rails microservices have become a popular choice for building scalable and flexible systems. This approach allows developers to break down their applications into smaller, manageable pieces, making it easier to develop, deploy, and maintain. Let&amp;rsquo;s explore how you can harness the power of Ruby on Rails microservices for your projects.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Ruby on Rails microservices simplify code management by breaking applications into smaller, independent services.&lt;/li&gt;&#10;&lt;li&gt;They enhance scalability, allowing specific parts of an application to grow without impacting the whole system.&lt;/li&gt;&#10;&lt;li&gt;Flexibility in technology choices lets teams pick the best tools for each service, optimizing performance.&lt;/li&gt;&#10;&lt;li&gt;Microservices improve fault tolerance, isolating issues to single services and preventing widespread failures.&lt;/li&gt;&#10;&lt;li&gt;Adopting an API-first approach is crucial for smooth communication between services in a Ruby on Rails microservices setup.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="simplifying-codebase-with-ruby-on-rails-microservices"&gt;Simplifying Codebase With Ruby On Rails Microservices &lt;a class="hlink" href="#simplifying-codebase-with-ruby-on-rails-microservices" aria-label="Link to Simplifying Codebase With Ruby On Rails Microservices"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/unlocking-power-of-ruby-on-rails/file_0_hu_c9e5f06ba2f832a2.webp" srcset="https://jetthoughts.com/blog/unlocking-power-of-ruby-on-rails/file_0_hu_c9e5f06ba2f832a2.webp 800w, https://jetthoughts.com/blog/unlocking-power-of-ruby-on-rails/file_0_hu_704d85b41c1760c6.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="400" alt="Illustrative image of Ruby on Rails microservices architecture." loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>From Bump to Google Photos: The Journey of David Lieb and His Team</title><link>https://jetthoughts.com/blog/from-bump-google-photos-journey-of/</link><pubDate>Sat, 29 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/from-bump-google-photos-journey-of/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=cZ3kiEyDTCQ"&gt;&lt;img src="https://jetthoughts.com/blog/from-bump-google-photos-journey-of/file_0_hu_cd1b8e4b85e6d19c.webp" srcset="https://jetthoughts.com/blog/from-bump-google-photos-journey-of/file_0_hu_cd1b8e4b85e6d19c.webp 800w, https://jetthoughts.com/blog/from-bump-google-photos-journey-of/file_0_hu_ad32fd5350bbc8df.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="From Bump to Google Photos: The Journey of David Lieb and His Team" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In a challenging time for David Lieb and his team, they faced the pressure of high expectations. With 150 million users of their app Bump, they were at the top, but they knew it was all about to change. Their second app, Flock, didn’t take off either. Running low on funds, they needed a new direction. This is the story of how they turned their struggles into the foundation for Google Photos.&lt;/p&gt;</description></item><item><title>Essential Steps to Launching a Successful Software Development Business in 2025</title><link>https://jetthoughts.com/blog/essential-steps-launching-successful-software-development/</link><pubDate>Fri, 28 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/essential-steps-launching-successful-software-development/</guid><description>&lt;p&gt;Starting a software development business in 2025 can be an exciting journey, especially with the tech world constantly evolving. If you have a passion for creating solutions and a knack for spotting opportunities, this could be the right time for you. However, before you dive in, there are several essential steps to consider. This guide will walk you through the key actions needed to set up a successful software development business, from finding your niche to scaling your operations.&lt;/p&gt;</description></item><item><title>How David Lieb Turned a Failing Startup Into Google Photos | Backstory</title><link>https://jetthoughts.com/blog/how-david-lieb-turned-failing-startup/</link><pubDate>Thu, 27 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-david-lieb-turned-failing-startup/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=CcnwFJqEnxU"&gt;&lt;img src="https://jetthoughts.com/blog/how-david-lieb-turned-failing-startup/file_0_hu_f0f191b69f31218.webp" srcset="https://jetthoughts.com/blog/how-david-lieb-turned-failing-startup/file_0_hu_f0f191b69f31218.webp 800w, https://jetthoughts.com/blog/how-david-lieb-turned-failing-startup/file_0_hu_c83be6911c0e48d5.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="How David Lieb Turned a Failing Startup Into Google Photos | Backstory" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In a world where tech startups rise and fall, David Lieb&amp;rsquo;s journey stands out. He co-founded Bump, an app that allowed users to share photos and contact info by bumping their phones together. Despite initial success, the app struggled to find a sustainable business model. However, Lieb&amp;rsquo;s perseverance led him to pivot and ultimately create Google Photos, a product that has changed how we store and share memories.&lt;/p&gt;</description></item><item><title>Mastering Product Design: A Comprehensive 6-Step Guide</title><link>https://jetthoughts.com/blog/mastering-product-design-comprehensive-6-step/</link><pubDate>Thu, 27 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/mastering-product-design-comprehensive-6-step/</guid><description>&lt;p&gt;In the fast-paced world of digital products, a well-structured design process is crucial for success. This article outlines a six-step framework that can help teams navigate the complexities of product design, ensuring that user needs are met while achieving business objectives.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Define Clear Product Goals&lt;/strong&gt;: Establish measurable objectives to guide the design process.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Conduct Thorough Research&lt;/strong&gt;: Understand user needs and market trends to inform design decisions.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Encourage Creative Ideation&lt;/strong&gt;: Foster a collaborative environment for brainstorming innovative solutions.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Utilize Prototyping&lt;/strong&gt;: Visualize concepts early to test functionality and gather feedback.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Implement User Testing&lt;/strong&gt;: Validate designs through user interactions to identify issues before launch.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Ensure Smooth Design Handoff&lt;/strong&gt;: Communicate design intent clearly to development teams for accurate implementation.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="defining-clear-product-goals"&gt;Defining Clear Product Goals &lt;a class="hlink" href="#defining-clear-product-goals" aria-label="Link to Defining Clear Product Goals"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;The foundation of any successful product design begins with clearly defined goals. These goals should be measurable and time-bound, providing a roadmap for the design process. Without well-articulated objectives, teams risk misalignment and wasted resources.&lt;/p&gt;</description></item><item><title>How To Start A Dev Tools Company: Insights From YC</title><link>https://jetthoughts.com/blog/how-start-dev-tools-company-insights-8569/</link><pubDate>Wed, 26 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-start-dev-tools-company-insights-8569/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=z1aKRhRnVNk"&gt;&lt;img src="https://jetthoughts.com/blog/how-start-dev-tools-company-insights-8569/file_0_hu_1d65026cbc9d2e6c.webp" srcset="https://jetthoughts.com/blog/how-start-dev-tools-company-insights-8569/file_0_hu_1d65026cbc9d2e6c.webp 800w, https://jetthoughts.com/blog/how-start-dev-tools-company-insights-8569/file_0_hu_178dd81429396343.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="How To Start A Dev Tools Company: Insights From YC" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Starting a dev tools company can be a thrilling journey. In a recent session at Startup School, Nicolas Dessaigne, co-founder of Algolia, shared valuable insights on how to navigate this path. He covered everything from forming a founding team to launching your product and marketing it effectively. Here’s a breakdown of the key points discussed.&lt;/p&gt;</description></item><item><title>Implementing Instant Search, Dynamic Forms, and Infinite Scroll with Hotwire and Turbo in Rails</title><link>https://jetthoughts.com/blog/implementing-instant-search-dynamic-forms-infinite/</link><pubDate>Wed, 26 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/implementing-instant-search-dynamic-forms-infinite/</guid><description>&lt;p&gt;Despite &lt;a href="https://hotwired.dev/"&gt;Hotwire&amp;rsquo;s&lt;/a&gt; growing popularity, many developers struggle with implementing it correctly. Common pitfalls lead to broken interactions, performance bottlenecks, or unmaintainable code. In this guide, I&amp;rsquo;ll walk you through the idiomatic integration of Hotwire for the most common use case: a browse page with instant search, infinite scrolling, dynamic per-record actions, and cursor-based pagination—all with minimal JavaScript and maximum performance.&lt;/p&gt;&#10;&lt;blockquote class="bq-tldr"&gt;&#10;&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; This post shows you how to build an interactive employee directory with instant search, dynamic forms, and infinite scrolling using just Hotwire (minimal JS).&lt;/p&gt;</description></item><item><title>Innovative Companies Using Ruby: How They Leverage Its Power in 2025</title><link>https://jetthoughts.com/blog/innovative-companies-using-ruby-how-they/</link><pubDate>Wed, 26 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/innovative-companies-using-ruby-how-they/</guid><description>&lt;p&gt;In 2025, Ruby on Rails continues to be a powerful tool for many businesses. From startups to established giants, companies using Ruby are finding innovative ways to harness its capabilities for growth and efficiency. This article explores how some of the leading names in the industry are utilizing Ruby on Rails and why it remains a popular choice among developers.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Ruby on Rails is still a favorite for startups due to its speed and cost-effectiveness.&lt;/li&gt;&#10;&lt;li&gt;Major companies like GitHub, Shopify, and Airbnb showcase the framework&amp;rsquo;s scalability and reliability.&lt;/li&gt;&#10;&lt;li&gt;The Ruby community is vibrant, offering extensive support and resources for developers.&lt;/li&gt;&#10;&lt;li&gt;Rails is well-suited for rapid prototyping, making it ideal for MVP development.&lt;/li&gt;&#10;&lt;li&gt;Innovative applications in e-commerce and AI integration highlight Ruby&amp;rsquo;s versatility in 2025.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="top-companies-using-ruby-on-rails-today"&gt;Top Companies Using Ruby on Rails Today &lt;a class="hlink" href="#top-companies-using-ruby-on-rails-today" aria-label="Link to Top Companies Using Ruby on Rails Today"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;So, you want to know who&amp;rsquo;s still rocking Ruby on Rails? Turns out, some big names rely on it. Let&amp;rsquo;s check them out.&lt;/p&gt;</description></item><item><title>Twitter vs. X: Product Lessons For Startup Founders</title><link>https://jetthoughts.com/blog/twitter-vs-x-product-lessons-for-3565/</link><pubDate>Wed, 26 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/twitter-vs-x-product-lessons-for-3565/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=EW9TUqOgjmQ"&gt;&lt;img src="https://jetthoughts.com/blog/twitter-vs-x-product-lessons-for-3565/file_0_hu_7ed0c1357782e244.webp" srcset="https://jetthoughts.com/blog/twitter-vs-x-product-lessons-for-3565/file_0_hu_7ed0c1357782e244.webp 800w, https://jetthoughts.com/blog/twitter-vs-x-product-lessons-for-3565/file_0_hu_d8936df176ab16a9.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Twitter vs. X: Product Lessons For Startup Founders" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Since Elon Musk took over Twitter and rebranded it as X, the platform has undergone significant changes. New features, major UX modifications, and controversial algorithm updates have sparked discussions about what founders can learn from this transformation. In this article, we explore the lessons for startup founders interested in product design.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;User Engagement vs. User Value&lt;/strong&gt;: Focusing solely on engagement metrics can lead to poor user experiences.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Algorithmic Feeds&lt;/strong&gt;: The shift to algorithm-driven content can dilute user satisfaction.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Branding Matters&lt;/strong&gt;: A name change can confuse users and dilute brand identity.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Clear Purpose&lt;/strong&gt;: Founders should articulate the purpose of their product clearly.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-shift-from-twitter-to-x"&gt;The Shift From Twitter to X &lt;a class="hlink" href="#the-shift-from-twitter-to-x" aria-label="Link to The Shift From Twitter to X"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;When Elon Musk took over Twitter, he made sweeping changes. The most notable was the shift from a chronological feed to an algorithmic one. This change aimed to increase user engagement but has led to mixed feelings among users. Many have noticed a shift in content, with more sensational posts appearing in their feeds.&lt;/p&gt;</description></item><item><title>2024: The Year the GPT Wrapper Myth Proved Wrong</title><link>https://jetthoughts.com/blog/2024-year-gpt-wrapper-myth-proved/</link><pubDate>Tue, 25 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/2024-year-gpt-wrapper-myth-proved/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=z0wt2pe_LZM"&gt;&lt;img src="https://jetthoughts.com/blog/2024-year-gpt-wrapper-myth-proved/file_0_hu_4f681c2f1431adfc.webp" srcset="https://jetthoughts.com/blog/2024-year-gpt-wrapper-myth-proved/file_0_hu_4f681c2f1431adfc.webp 800w, https://jetthoughts.com/blog/2024-year-gpt-wrapper-myth-proved/file_0_hu_e6b8f393ca3ac7ca.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="2024: The Year the GPT Wrapper Myth Proved Wrong" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;2024 has been quite the year to be part of the startup ecosystem! As we wind down and get ready for the holidays and the new year, the Lightcone hosts reflect on this year’s biggest startup trends, moments, and setbacks.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Startups are thriving, with many achieving significant revenue in just 24 months.&lt;/li&gt;&#10;&lt;li&gt;The myth that only large companies would benefit from AI has been debunked.&lt;/li&gt;&#10;&lt;li&gt;Open-source models have leveled the playing field for startups.&lt;/li&gt;&#10;&lt;li&gt;Voice AI and robotics are emerging as key areas for innovation.&lt;/li&gt;&#10;&lt;li&gt;The landscape of startup hiring is changing due to AI tools.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-startup-boom-of-2024"&gt;The Startup Boom of 2024 &lt;a class="hlink" href="#the-startup-boom-of-2024" aria-label="Link to The Startup Boom of 2024"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;This year has been a wild ride for startups. The landscape has shifted dramatically, allowing new companies to thrive. Many startups are now making &lt;strong&gt;tens of millions of dollars&lt;/strong&gt; in just two years. This is a stark contrast to previous years when skepticism surrounded the potential for rapid revenue growth.&lt;/p&gt;</description></item><item><title>Navigating IT Solutions: Staff Augmentation vs. Software Development Outsourcing in 2024</title><link>https://jetthoughts.com/blog/navigating-it-solutions-staff-augmentation-vs/</link><pubDate>Tue, 25 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/navigating-it-solutions-staff-augmentation-vs/</guid><description>&lt;p&gt;In 2024, companies face a critical decision in their IT strategies: whether to opt for staff augmentation or software development outsourcing. Both models offer unique advantages and challenges, making it essential for businesses to understand which approach aligns best with their operational needs and project goals.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Staff Augmentation provides flexibility and control, allowing companies to manage external developers directly.&lt;/li&gt;&#10;&lt;li&gt;Software Development Outsourcing offers a complete project management solution, ideal for non-technical leaders.&lt;/li&gt;&#10;&lt;li&gt;Each model has distinct advantages and disadvantages that can impact project outcomes and costs.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="understanding-software-development-outsourcing"&gt;Understanding Software Development Outsourcing &lt;a class="hlink" href="#understanding-software-development-outsourcing" aria-label="Link to Understanding Software Development Outsourcing"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Software development outsourcing involves hiring an external team to handle specific projects or tasks. This model has gained traction as companies seek to leverage specialized skills and reduce operational costs. Here are some key points:&lt;/p&gt;</description></item><item><title>Streamline Your Hiring Process: Hire Pre-vetted Developers in Days</title><link>https://jetthoughts.com/blog/streamline-your-hiring-process-hire-pre/</link><pubDate>Tue, 25 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/streamline-your-hiring-process-hire-pre/</guid><description>&lt;p&gt;In today’s fast-paced tech landscape, companies are increasingly seeking efficient ways to hire skilled developers. Turing, a leading AI-powered talent platform, offers a solution by providing access to pre-vetted developers across various specializations, enabling businesses to scale their teams quickly and effectively.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Turing provides access to the top 1% of developers globally.&lt;/li&gt;&#10;&lt;li&gt;The hiring process can be completed in as little as four days.&lt;/li&gt;&#10;&lt;li&gt;A risk-free trial period allows companies to evaluate developers before committing.&lt;/li&gt;&#10;&lt;li&gt;Developers are rigorously vetted through a series of tests to ensure high quality.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-need-for-speed-in-hiring"&gt;The Need for Speed in Hiring &lt;a class="hlink" href="#the-need-for-speed-in-hiring" aria-label="Link to The Need for Speed in Hiring"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;As businesses strive to keep up with technological advancements, the demand for skilled developers has skyrocketed. Traditional hiring methods can be time-consuming and often lead to mismatches between candidates and company needs. Turing addresses this challenge by offering a streamlined hiring process that significantly reduces the time and effort involved in finding the right talent.&lt;/p&gt;</description></item><item><title>10 Essential Developer Best Practices for Building Robust Software in 2025</title><link>https://jetthoughts.com/blog/10-essential-developer-best-practices-for/</link><pubDate>Mon, 24 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/10-essential-developer-best-practices-for/</guid><description>&lt;p&gt;As we move into 2025, the field of software development is evolving rapidly. Developers need to keep up with new tools, technologies, and practices to tackle common challenges effectively. This article will highlight ten key developer best practices that can help you create reliable and efficient software, ensuring you stay ahead in this competitive landscape.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Defensive programming helps catch errors early and improves code reliability.&lt;/li&gt;&#10;&lt;li&gt;Continuous integration streamlines the development process and reduces integration issues.&lt;/li&gt;&#10;&lt;li&gt;Automated testing saves time and ensures code quality throughout development.&lt;/li&gt;&#10;&lt;li&gt;Regular code reviews foster collaboration and maintain coding standards.&lt;/li&gt;&#10;&lt;li&gt;Version control is crucial for managing changes and collaborating effectively.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="1-defensive-programming"&gt;1. Defensive Programming &lt;a class="hlink" href="#1-defensive-programming" aria-label="Link to 1\. Defensive Programming"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Okay, so you&amp;rsquo;re writing code. Great! But what happens when things go wrong? &lt;em&gt;Spoiler alert&lt;/em&gt;: they will. That&amp;rsquo;s where defensive programming comes in. It&amp;rsquo;s like wearing a seatbelt for your code. You don&amp;rsquo;t expect to crash, but it&amp;rsquo;s good to have it, just in case.&lt;/p&gt;</description></item><item><title>Discovering the Best Recruitment Companies in the USA for 2025</title><link>https://jetthoughts.com/blog/discovering-best-recruitment-companies-in-usa/</link><pubDate>Mon, 24 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/discovering-best-recruitment-companies-in-usa/</guid><description>&lt;p&gt;If you&amp;rsquo;re hiring in the US in 2025 and want a recruitment agency to do the heavy lifting, here are seven established firms covering the most common needs - generalist staffing, temp work, tech, executive search, and creative roles.&lt;/p&gt;&#10;&lt;h2 id="top-us-recruitment-agencies-at-a-glance"&gt;Top US recruitment agencies at a glance &lt;a class="hlink" href="#top-us-recruitment-agencies-at-a-glance" aria-label="Link to Top US recruitment agencies at a glance"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Agency&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Best for&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Headquarters&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Randstad&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Generalist staffing across industries&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Atlanta, GA (US HQ)&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Kelly Services&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Temporary and contract staffing&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Troy, MI&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Insight Global&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Tech contract and contract-to-hire&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Atlanta, GA&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Robert Half&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Finance, accounting, and admin roles&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Menlo Park, CA&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Aerotek&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Industrial, engineering, and skilled trades&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Hanover, MD&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Korn Ferry&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Executive search and leadership hiring&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Los Angeles, CA&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Aquent&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Creative, marketing, and design talent&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Boston, MA&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;p&gt;All seven are still operating as of 2025. Pick the one whose specialty matches the role you&amp;rsquo;re filling, not the one with the loudest brand.&lt;/p&gt;</description></item><item><title>Exploring the Leading React Companies Transforming the Tech Landscape in 2025</title><link>https://jetthoughts.com/blog/exploring-leading-react-companies-transforming-tech/</link><pubDate>Mon, 24 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/exploring-leading-react-companies-transforming-tech/</guid><description>&lt;p&gt;As we step into 2025, the tech landscape is buzzing with innovation, and React companies are at the forefront of this transformation. React, a powerful JavaScript library, has become the go-to choice for developers looking to create dynamic user interfaces. In this article, we&amp;rsquo;ll explore some of the leading React companies that are shaping the future of technology, as well as the reasons why React continues to be a favorite among developers. Whether you&amp;rsquo;re a tech enthusiast or a business looking to harness the power of React, this guide will provide valuable insights into the current trends and future prospects in the React ecosystem.&lt;/p&gt;</description></item><item><title>Anthropic’s Claude Computer Use: A Game Changer in AI</title><link>https://jetthoughts.com/blog/anthropics-claude-computer-use-game-changer/</link><pubDate>Sun, 23 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/anthropics-claude-computer-use-game-changer/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=VDmU0jjklBo"&gt;&lt;img src="https://jetthoughts.com/blog/anthropics-claude-computer-use-game-changer/file_0_hu_822f7ac5c50e608f.webp" srcset="https://jetthoughts.com/blog/anthropics-claude-computer-use-game-changer/file_0_hu_822f7ac5c50e608f.webp 800w, https://jetthoughts.com/blog/anthropics-claude-computer-use-game-changer/file_0_hu_a93a8949a96e5110.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Anthropic’s Claude Computer Use: A Game Changer in AI" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;The age of AI agents is here, and Anthropic’s Claude Computer Use is leading the charge. This innovative tool allows AI to browse the web, click buttons, and type text all on its own. In this blog post, we’ll explore how Claude works, what it can do, and its potential impact on the future of AI.&lt;/p&gt;</description></item><item><title>Unlocking the Future: Custom Real Estate Software Development in 2024</title><link>https://jetthoughts.com/blog/unlocking-future-custom-real-estate-software/</link><pubDate>Sun, 23 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-future-custom-real-estate-software/</guid><description>&lt;p&gt;In 2024, the real estate industry is poised for a technological revolution, with custom software development becoming a crucial asset for businesses looking to thrive in a competitive market. As the demand for tailored solutions grows, understanding the benefits and steps to implement custom software is essential for real estate professionals.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Custom software offers unique features tailored to specific business needs.&lt;/li&gt;&#10;&lt;li&gt;The real estate market is projected to grow significantly, emphasizing the need for advanced software solutions.&lt;/li&gt;&#10;&lt;li&gt;Companies must weigh the pros and cons of custom versus off-the-shelf software.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-importance-of-custom-software-in-real-estate"&gt;The Importance Of Custom Software In Real Estate &lt;a class="hlink" href="#the-importance-of-custom-software-in-real-estate" aria-label="Link to The Importance Of Custom Software In Real Estate"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;The real estate sector has seen a surge in technological advancements, with a market value projected to grow at a CAGR of 15.8% from 2022 to 2030. Custom software development allows real estate companies to optimize their operations, enhance customer engagement, and make data-driven decisions.&lt;/p&gt;</description></item><item><title>Exploring Rust on Rails: The Future of Web Development for Solo Developers</title><link>https://jetthoughts.com/blog/exploring-rust-on-rails-future-of/</link><pubDate>Sat, 22 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/exploring-rust-on-rails-future-of/</guid><description>&lt;p&gt;In recent years, the tech world has seen a growing interest in Rust, especially among solo developers. With its promise of performance and safety, Rust is becoming a viable alternative to traditional frameworks like Ruby on Rails. This article will explore why Rust on Rails is gaining traction, how to get started, its key features, and what the future holds for this exciting combination.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Rust on Rails combines the best of both worlds: Rust&amp;rsquo;s performance and Rails&amp;rsquo; developer-friendly features.&lt;/li&gt;&#10;&lt;li&gt;Setting up a Rust on Rails environment is straightforward, allowing developers to hit the ground running.&lt;/li&gt;&#10;&lt;li&gt;The framework offers built-in authentication and easy scaffolding to accelerate development.&lt;/li&gt;&#10;&lt;li&gt;Rust&amp;rsquo;s type safety helps catch errors early, making code more reliable.&lt;/li&gt;&#10;&lt;li&gt;While there’s a learning curve, the community support for Rust on Rails is growing, making it easier for newcomers.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="why-rust-on-rails-is-gaining-popularity"&gt;Why Rust on Rails Is Gaining Popularity &lt;a class="hlink" href="#why-rust-on-rails-is-gaining-popularity" aria-label="Link to Why Rust on Rails Is Gaining Popularity"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="the-shift-from-ruby-to-rust"&gt;The Shift from Ruby to Rust &lt;a class="hlink" href="#the-shift-from-ruby-to-rust" aria-label="Link to The Shift from Ruby to Rust"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;For years, Ruby on Rails was &lt;em&gt;the&lt;/em&gt; choice for rapid web development. It let you build things fast. But times change. Developers are now looking for better performance and safety. Rust offers both. Some developers are moving from Ruby to Rust. They want the speed and reliability of Rust, but they still like the Rails way of doing things. It is a big shift, but it makes sense for many projects.&lt;/p&gt;</description></item><item><title>Transforming Marketing: Insights from Airbnb, Salesforce, and Logitech</title><link>https://jetthoughts.com/blog/transforming-marketing-insights-from-airbnb-salesforce/</link><pubDate>Fri, 21 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/transforming-marketing-insights-from-airbnb-salesforce/</guid><description>&lt;p&gt;In a recent episode of the Executive Guidance podcast, marketing leader Hayley Nelson shared her insights on building content-driven, agile marketing teams. Drawing from her experiences at industry giants like Airbnb, Salesforce, and Logitech, she emphasized the importance of storytelling, customer insights, and agile methodologies in modern marketing strategies.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Agile Principles in Marketing&lt;/strong&gt;: Applying agile product development principles can enhance marketing efficiency and responsiveness.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;The Role of Journalism&lt;/strong&gt;: Incorporating journalistic techniques can build brand trust and credibility.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Team Structure for Impact&lt;/strong&gt;: Structuring content marketing teams for speed and effectiveness is crucial for success.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Balancing Leadership and Marketing&lt;/strong&gt;: Finding the right balance between thought leadership and product marketing is essential.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Leveraging Customer Insights&lt;/strong&gt;: Utilizing deep customer insights can lead to the creation of high-impact content.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Future of Personalized Marketing&lt;/strong&gt;: The marketing landscape is evolving towards more personalized and engaging content strategies.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-shift-towards-agile-marketing"&gt;The Shift Towards Agile Marketing &lt;a class="hlink" href="#the-shift-towards-agile-marketing" aria-label="Link to The Shift Towards Agile Marketing"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Hayley Nelson, with her extensive background in content strategy and brand storytelling, has been at the forefront of transforming marketing approaches in the tech industry. At Salesforce, she led a significant shift towards a content revolution, focusing on creating narratives that resonate with customers rather than just pushing sales messages.&lt;/p&gt;</description></item><item><title>Essential Strategies to Find Developers for Your Startup in 2025</title><link>https://jetthoughts.com/blog/essential-strategies-find-developers-for-your/</link><pubDate>Thu, 20 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/essential-strategies-find-developers-for-your/</guid><description>&lt;p&gt;Finding the right developers for your startup in 2025 is a challenge that many entrepreneurs face. With the tech landscape constantly changing and competition for talent heating up, having a clear strategy is essential. This article lays out effective ways to find developers for startup needs, ensuring you attract the right talent to help bring your vision to life. From understanding your specific requirements to utilizing the latest hiring platforms, we’ll cover everything you need to know to build a strong tech team.&lt;/p&gt;</description></item><item><title>How To Make The Most Out Of Your 20s</title><link>https://jetthoughts.com/blog/how-make-most-out-of-your-dca7/</link><pubDate>Thu, 20 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-make-most-out-of-your-dca7/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=H_XMqRhLhic"&gt;&lt;img src="https://jetthoughts.com/blog/how-make-most-out-of-your-dca7/file_0_hu_a707bb8f8049e891.webp" srcset="https://jetthoughts.com/blog/how-make-most-out-of-your-dca7/file_0_hu_a707bb8f8049e891.webp 800w, https://jetthoughts.com/blog/how-make-most-out-of-your-dca7/file_0_hu_f5f707f77eba6263.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="How To Make The Most Out Of Your 20s" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Your 20s are a unique time in life. It’s a decade filled with opportunities, risks, and self-discovery. Many people find themselves with fewer responsibilities, making it the perfect time to explore, take chances, and invest in personal growth. In this post, we’ll dive into how to navigate this pivotal decade effectively.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Embrace the idea of the &lt;strong&gt;hedonic treadmill&lt;/strong&gt; and learn to delay gratification.&lt;/li&gt;&#10;&lt;li&gt;Focus on doing the &lt;strong&gt;hardcore things&lt;/strong&gt; early in your career.&lt;/li&gt;&#10;&lt;li&gt;Be &lt;strong&gt;risk-seeking&lt;/strong&gt; rather than risk-averse.&lt;/li&gt;&#10;&lt;li&gt;Surround yourself with &lt;strong&gt;positive influences&lt;/strong&gt; and like-minded people.&lt;/li&gt;&#10;&lt;li&gt;Consider the benefits of &lt;strong&gt;long-term relationships&lt;/strong&gt; in your 20s.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="understanding-the-hedonic-treadmill"&gt;Understanding The Hedonic Treadmill &lt;a class="hlink" href="#understanding-the-hedonic-treadmill" aria-label="Link to Understanding The Hedonic Treadmill"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;The &lt;strong&gt;hedonic treadmill&lt;/strong&gt; is a concept that explains how we quickly adapt to new experiences. When you get something new, like a toy as a kid, it feels amazing at first. But soon, that excitement fades, and you find yourself wanting more. This cycle can lead to a constant chase for new experiences without ever feeling satisfied.&lt;/p&gt;</description></item><item><title>How To Make The Most Out Of Your 20s</title><link>https://jetthoughts.com/blog/how-make-most-out-of-your/</link><pubDate>Thu, 20 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-make-most-out-of-your/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=H_XMqRhLhic"&gt;&lt;img src="https://jetthoughts.com/blog/how-make-most-out-of-your/file_0_hu_a707bb8f8049e891.webp" srcset="https://jetthoughts.com/blog/how-make-most-out-of-your/file_0_hu_a707bb8f8049e891.webp 800w, https://jetthoughts.com/blog/how-make-most-out-of-your/file_0_hu_f5f707f77eba6263.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="How To Make The Most Out Of Your 20s" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Your 20s can be a wild ride. It’s a decade filled with opportunities, risks, and the chance to shape your future. In this post, we’ll explore how to navigate this crucial time in your life, drawing insights from experienced voices who have been there and done that.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Embrace risks and seek challenges.&lt;/li&gt;&#10;&lt;li&gt;Delay gratification to enjoy future rewards.&lt;/li&gt;&#10;&lt;li&gt;Surround yourself with positive influences.&lt;/li&gt;&#10;&lt;li&gt;Consider long-term relationships for support.&lt;/li&gt;&#10;&lt;li&gt;Don’t rush through your 20s; build a solid foundation.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-hedonic-treadmill"&gt;The Hedonic Treadmill &lt;a class="hlink" href="#the-hedonic-treadmill" aria-label="Link to The Hedonic Treadmill"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Let’s kick things off with a concept called the &lt;strong&gt;hedonic treadmill&lt;/strong&gt;. It’s the idea that no matter what you achieve or acquire, you’ll quickly get used to it. Remember that shiny new toy you got as a kid? You loved it for a couple of days, then it was just another thing in your room.&lt;/p&gt;</description></item><item><title>Fintech 2.0: The New Era of Financial Startups</title><link>https://jetthoughts.com/blog/fintech-20-new-era-of-financial-0428/</link><pubDate>Wed, 19 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/fintech-20-new-era-of-financial-0428/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=jJp13H5a-jE"&gt;&lt;img src="https://jetthoughts.com/blog/fintech-20-new-era-of-financial-0428/file_0_hu_e0f7f3a75762adcd.webp" srcset="https://jetthoughts.com/blog/fintech-20-new-era-of-financial-0428/file_0_hu_e0f7f3a75762adcd.webp 800w, https://jetthoughts.com/blog/fintech-20-new-era-of-financial-0428/file_0_hu_e29d817c3e5f43fd.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Fintech 2.0: The New Era of Financial Startups" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;The fintech landscape has seen some tough times recently. The collapse of Silicon Valley Bank shook things up, leading to stricter regulations and a retreat from investors. But now, there’s a glimmer of hope. It’s a great time to build a fintech startup, and here’s why.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;New technologies like AI and stablecoins are changing the game.&lt;/li&gt;&#10;&lt;li&gt;Startups can now compete with established banks more easily.&lt;/li&gt;&#10;&lt;li&gt;There’s a wide-open field for innovation in various financial sectors.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-changing-landscape-of-fintech"&gt;The Changing Landscape of Fintech &lt;a class="hlink" href="#the-changing-landscape-of-fintech" aria-label="Link to The Changing Landscape of Fintech"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Historically, starting a fintech company was no walk in the park. Getting a bank deal or finding a regulated partner was a major hurdle. But things are different now. Thanks to companies like &lt;strong&gt;Stripe&lt;/strong&gt; and the rise of &lt;strong&gt;cryptocurrencies&lt;/strong&gt;, especially &lt;strong&gt;stablecoins&lt;/strong&gt;, the barriers are lower than ever.&lt;/p&gt;</description></item><item><title>Making Virtual Meetings Feel Real: Strategies for Success</title><link>https://jetthoughts.com/blog/making-virtual-meetings-feel-real-strategies/</link><pubDate>Wed, 19 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/making-virtual-meetings-feel-real-strategies/</guid><description>&lt;p&gt;In an era where remote work has become the norm, the challenge of conducting effective virtual meetings has never been more pressing. As teams spread across different time zones and locations, managers must find innovative ways to bridge the distance and foster a sense of connection among team members. Here are some strategies to make virtual meetings feel more engaging and productive.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Establish clear roles and responsibilities to build trust.&lt;/li&gt;&#10;&lt;li&gt;Utilize effective communication tools to enhance interaction.&lt;/li&gt;&#10;&lt;li&gt;Foster a positive team culture through regular feedback and recognition.&lt;/li&gt;&#10;&lt;li&gt;Implement structured meeting practices to ensure efficiency.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="building-trust-in-remote-teams"&gt;Building Trust in Remote Teams &lt;a class="hlink" href="#building-trust-in-remote-teams" aria-label="Link to Building Trust in Remote Teams"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Trust is the foundation of any successful team, especially in a remote setting. To cultivate trust among team members:&lt;/p&gt;</description></item><item><title>Choosing the Right MVP Developers: Key Factors for Startup Success</title><link>https://jetthoughts.com/blog/choosing-right-mvp-developers-key-factors/</link><pubDate>Tue, 18 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/choosing-right-mvp-developers-key-factors/</guid><description>&lt;p&gt;When you&amp;rsquo;re starting a new business, getting your product out there quickly and efficiently can make all the difference. That&amp;rsquo;s where MVP developers come into play. A Minimum Viable Product (MVP) is a stripped-down version of your product that lets you test your ideas without breaking the bank. Choosing the right team to build your MVP is crucial for your startup&amp;rsquo;s success. In this article, we&amp;rsquo;ll break down some key factors to consider when selecting MVP developers to help you launch your product effectively.&lt;/p&gt;</description></item><item><title>How To Start A Dev Tools Company: Insights From YC</title><link>https://jetthoughts.com/blog/how-start-dev-tools-company-insights/</link><pubDate>Tue, 18 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-start-dev-tools-company-insights/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=z1aKRhRnVNk"&gt;&lt;img src="https://jetthoughts.com/blog/how-start-dev-tools-company-insights/file_0_hu_1d65026cbc9d2e6c.webp" srcset="https://jetthoughts.com/blog/how-start-dev-tools-company-insights/file_0_hu_1d65026cbc9d2e6c.webp 800w, https://jetthoughts.com/blog/how-start-dev-tools-company-insights/file_0_hu_178dd81429396343.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="How To Start A Dev Tools Company: Insights From YC" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Starting a dev tools company can be a thrilling journey. In a recent talk, Nicolas Dessaigne, co-founder of Algolia, shared valuable insights on how to navigate this space. He covered everything from forming a founding team to launching your product and marketing it effectively. Here’s a breakdown of the key points.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Understand Your Audience&lt;/strong&gt;: You are your own customer.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Build Quickly&lt;/strong&gt;: Don’t over-engineer your prototype.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Talk to Users&lt;/strong&gt;: Gather feedback early and often.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Launch Early&lt;/strong&gt;: Get your product out there to learn.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Consider Open Source&lt;/strong&gt;: It can be a powerful model for dev tools.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="what-is-a-dev-tool"&gt;What Is A Dev Tool? &lt;a class="hlink" href="#what-is-a-dev-tool" aria-label="Link to What Is A Dev Tool?"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;A dev tool is software that helps developers build products. This includes everything from coding and testing to deploying and running applications. Examples include IDEs like VSCode, APIs like Stripe, and cloud services like AWS. The category is broad and diverse, which means there’s plenty of room for innovation.&lt;/p&gt;</description></item><item><title>Discover the Best IT Companies Hiring in 2025: Your Guide to Career Opportunities</title><link>https://jetthoughts.com/blog/discover-best-it-companies-hiring-in/</link><pubDate>Mon, 17 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/discover-best-it-companies-hiring-in/</guid><description>&lt;p&gt;If you&amp;rsquo;re thinking about a career in tech, 2025 is shaping up to be an exciting year. With so many IT companies hiring, there are plenty of opportunities out there. Whether you&amp;rsquo;re just starting or looking to switch roles, knowing where to look and what skills to develop can make all the difference. This guide will help you navigate the tech job market and find the best roles suited for you.&lt;/p&gt;</description></item><item><title>Revolutionizing Mobile Apps: The Impact of Augmented Reality</title><link>https://jetthoughts.com/blog/revolutionizing-mobile-apps-impact-of-augmented/</link><pubDate>Mon, 17 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/revolutionizing-mobile-apps-impact-of-augmented/</guid><description>&lt;p&gt;Augmented Reality (AR) is transforming the landscape of mobile app development, offering innovative ways to enhance user experiences across various sectors. With the success of apps like Pokémon Go, the potential for AR in mobile applications is becoming increasingly evident, leading to a projected market value of $162 billion by 2024.&lt;/p&gt;&#10;&lt;h3 id="what-is-augmented-reality"&gt;What Is Augmented Reality? &lt;a class="hlink" href="#what-is-augmented-reality" aria-label="Link to What Is Augmented Reality?"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Augmented Reality is a technology that overlays digital information onto the real world, allowing users to interact with both physical and digital elements simultaneously. Unlike Virtual Reality (VR), which immerses users in a completely virtual environment, AR enhances the real world with additional data and visuals.&lt;/p&gt;</description></item><item><title>Vertical AI Agents: The Next Big Thing in Tech</title><link>https://jetthoughts.com/blog/vertical-ai-agents-next-big-thing/</link><pubDate>Sun, 16 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/vertical-ai-agents-next-big-thing/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=ASABxNenD_U"&gt;&lt;img src="https://jetthoughts.com/blog/vertical-ai-agents-next-big-thing/file_0_hu_a7871ac6075518a.webp" srcset="https://jetthoughts.com/blog/vertical-ai-agents-next-big-thing/file_0_hu_a7871ac6075518a.webp 800w, https://jetthoughts.com/blog/vertical-ai-agents-next-big-thing/file_0_hu_5fe8d4351b21b95f.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Vertical AI Agents: The Next Big Thing in Tech" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;As the tech world evolves, vertical AI agents are emerging as a game-changer. These agents promise to replace entire teams and functions in enterprises, creating a new wave of startups. In this blog post, we explore the potential of vertical AI agents and their impact on the SaaS landscape.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Vertical AI agents could create $300 billion companies.&lt;/li&gt;&#10;&lt;li&gt;The rise of competition in AI is beneficial for consumers and founders.&lt;/li&gt;&#10;&lt;li&gt;Historical parallels between SaaS and vertical AI agents.&lt;/li&gt;&#10;&lt;li&gt;The importance of identifying repetitive tasks for AI solutions.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-rise-of-vertical-ai-agents"&gt;The Rise of Vertical AI Agents &lt;a class="hlink" href="#the-rise-of-vertical-ai-agents" aria-label="Link to The Rise of Vertical AI Agents"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Every few months, advancements in AI have been remarkable. We are now discussing &lt;strong&gt;vertical AI agents&lt;/strong&gt; that can take over entire teams in businesses. This shift is mind-blowing. Previously, there was a dominant player in AI, but now competition is heating up. This competition is essential for a healthy market where consumers have choices and founders can thrive.&lt;/p&gt;</description></item><item><title>Unlocking Success: How MVP Software Development Services Propel Startups Forward</title><link>https://jetthoughts.com/blog/unlocking-success-how-mvp-software-development/</link><pubDate>Sat, 15 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-success-how-mvp-software-development/</guid><description>&lt;p&gt;Starting a new venture can be a tough journey, and having a solid strategy is key. One effective approach for many startups is to create a Minimum Viable Product (MVP). This means building a basic version of your product to test the waters and gather user feedback. It’s a smart way to ensure you’re on the right path before pouring in too much time and money. MVP software development services can really help you move forward with confidence, making the process smoother and more efficient.&lt;/p&gt;</description></item><item><title>Unlocking the Secrets of Remote Development: Insights from Craig Cannon</title><link>https://jetthoughts.com/blog/unlocking-secrets-of-remote-development-insights/</link><pubDate>Sat, 15 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-secrets-of-remote-development-insights/</guid><description>&lt;p&gt;In a recent interview, Craig Cannon, Director of Marketing at Y Combinator, shared valuable insights on effectively working with remote developers. With a fully distributed engineering team for his personal project, Cannon&amp;rsquo;s experience sheds light on the growing trend of remote work in the tech industry.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Remote teams can be more cost-effective and efficient.&lt;/li&gt;&#10;&lt;li&gt;Clear communication and documentation are essential for success.&lt;/li&gt;&#10;&lt;li&gt;Hiring strong communicators is crucial to overcoming remote work challenges.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-appeal-of-remote-teams"&gt;The Appeal of Remote Teams &lt;a class="hlink" href="#the-appeal-of-remote-teams" aria-label="Link to The Appeal of Remote Teams"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Cannon explained that many founders opt for remote teams for two primary reasons: immediate onboarding and cost-effectiveness. For contractors, the need for quick hiring often drives the decision, while for long-term employees, the ability to tap into a global talent pool can lead to a more competitive and diverse team.&lt;/p&gt;</description></item><item><title>Twitter vs. X: Product Lessons For Startup Founders</title><link>https://jetthoughts.com/blog/twitter-vs-x-product-lessons-for/</link><pubDate>Fri, 14 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/twitter-vs-x-product-lessons-for/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=EW9TUqOgjmQ"&gt;&lt;img src="https://jetthoughts.com/blog/twitter-vs-x-product-lessons-for/file_0_hu_7ed0c1357782e244.webp" srcset="https://jetthoughts.com/blog/twitter-vs-x-product-lessons-for/file_0_hu_7ed0c1357782e244.webp 800w, https://jetthoughts.com/blog/twitter-vs-x-product-lessons-for/file_0_hu_d8936df176ab16a9.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Twitter vs. X: Product Lessons For Startup Founders" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Since Elon Musk took over Twitter and rebranded it as X, the platform has undergone significant changes. New features, major UX modifications, and controversial algorithm updates have sparked discussions about what founders can learn from this transformation. In this article, we explore the lessons for startup founders interested in product design.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;User Engagement vs. User Value&lt;/strong&gt;: Focusing solely on engagement metrics can lead to poor user experiences.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Algorithmic Feeds&lt;/strong&gt;: The shift to algorithm-driven content can dilute user satisfaction.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Branding Matters&lt;/strong&gt;: A name change can confuse users and dilute brand identity.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Clear Purpose&lt;/strong&gt;: Founders should articulate the purpose of their product clearly.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-shift-from-twitter-to-x"&gt;The Shift From Twitter to X &lt;a class="hlink" href="#the-shift-from-twitter-to-x" aria-label="Link to The Shift From Twitter to X"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;When Elon Musk took over Twitter, he made sweeping changes. The platform shifted from a chronological feed to an algorithmic one, similar to TikTok. This change aimed to increase user engagement but raised questions about the quality of content users were seeing.&lt;/p&gt;</description></item><item><title>Unlocking Growth: The Essential Structure of a Modern Marketing Agency</title><link>https://jetthoughts.com/blog/unlocking-growth-essential-structure-of-modern/</link><pubDate>Thu, 13 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-growth-essential-structure-of-modern/</guid><description>&lt;p&gt;In the rapidly evolving landscape of marketing, agencies are rethinking their structures to maximize growth and efficiency. A recent analysis highlights the importance of a well-defined agency structure that balances core teams with flexible freelance talent to meet diverse client needs.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Core Team&lt;/strong&gt;: Essential for stability and consistent service delivery.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Client Team Specialists&lt;/strong&gt;: Focused on existing clients with specialized skills.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Freelance Experts&lt;/strong&gt;: Vital for niche projects and scaling quickly.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;In-Demand Skills&lt;/strong&gt;: Emphasis on technical and software capabilities.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-core-team-foundation-of-success"&gt;The Core Team: Foundation of Success &lt;a class="hlink" href="#the-core-team-foundation-of-success" aria-label="Link to The Core Team: Foundation of Success"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;The core team is the backbone of any marketing agency. This group typically includes executives, account managers, strategists, and campaign delivery personnel. Their roles are crucial for maintaining client relationships and ensuring the agency&amp;rsquo;s operational stability.&lt;/p&gt;</description></item><item><title>Revolutionizing Engineering: The Future of AI-Aided Tools</title><link>https://jetthoughts.com/blog/revolutionizing-engineering-future-of-ai-aided-88ae/</link><pubDate>Wed, 12 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/revolutionizing-engineering-future-of-ai-aided-88ae/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=1asr6PkU8HQ"&gt;&lt;img src="https://jetthoughts.com/blog/revolutionizing-engineering-future-of-ai-aided-88ae/file_0_hu_d9827de291a49313.webp" srcset="https://jetthoughts.com/blog/revolutionizing-engineering-future-of-ai-aided-88ae/file_0_hu_d9827de291a49313.webp 800w, https://jetthoughts.com/blog/revolutionizing-engineering-future-of-ai-aided-88ae/file_0_hu_75f7a26f76861a16.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Revolutionizing Engineering: The Future of AI-Aided Tools" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Engineering tools have been stuck in a time warp for decades. Think about it: CAD software for mechanical design, EDA tools for circuit design, and CFD tools for fluid analysis. They all rely on complex numerical solvers and physics simulations. These tools are not just old; they are also &lt;strong&gt;computationally expensive&lt;/strong&gt; and often require a PhD to use effectively. But what if that could change?&lt;/p&gt;</description></item><item><title>Why The Next AI Breakthroughs Will Be In Reasoning, Not Scaling</title><link>https://jetthoughts.com/blog/why-next-ai-breakthroughs-will-be/</link><pubDate>Wed, 12 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/why-next-ai-breakthroughs-will-be/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=JiwiqYGw4iU"&gt;&lt;img src="https://jetthoughts.com/blog/why-next-ai-breakthroughs-will-be/file_0_hu_4880c31d2ceec37d.webp" srcset="https://jetthoughts.com/blog/why-next-ai-breakthroughs-will-be/file_0_hu_4880c31d2ceec37d.webp 800w, https://jetthoughts.com/blog/why-next-ai-breakthroughs-will-be/file_0_hu_98017e5ab4a0ee6d.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Why The Next AI Breakthroughs Will Be In Reasoning, Not Scaling" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In a recent episode of the Lightcone podcast, the hosts discussed the future of AI and its potential breakthroughs, particularly focusing on reasoning capabilities rather than just scaling. They highlighted the recent YC o1 hackathon, where innovative startups showcased how advanced reasoning models can unlock new possibilities in technology and productivity.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;AI is moving towards reasoning capabilities, which could lead to significant advancements in various fields.&lt;/li&gt;&#10;&lt;li&gt;The o1 hackathon demonstrated real-world applications of AI in chip design and engineering.&lt;/li&gt;&#10;&lt;li&gt;Startups are leveraging AI to automate complex tasks, improving efficiency and accuracy.&lt;/li&gt;&#10;&lt;li&gt;The future of AI may involve a shift from scaling models to enhancing reasoning and problem-solving abilities.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-intelligence-age"&gt;The Intelligence Age &lt;a class="hlink" href="#the-intelligence-age" aria-label="Link to The Intelligence Age"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;The conversation kicked off with a reflection on the evolution of AI. A year ago, discussions about Artificial General Intelligence (AGI) seemed far-fetched. Now, with advancements in AI, the idea of machines designing chips better than humans is becoming a reality. The hosts noted that we are on a path to achieving greater intelligence through AI, which could revolutionize various industries.&lt;/p&gt;</description></item><item><title>Efficient Percentile Ranking in PostgreSQL</title><link>https://jetthoughts.com/blog/efficient-percentile-ranking-in-postgresql-webdev/</link><pubDate>Tue, 11 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/efficient-percentile-ranking-in-postgresql-webdev/</guid><description>&lt;p&gt;When analyzing data, percentiles help us understand the relative ranking of records within a dataset. In PostgreSQL, we can compute percentiles efficiently using the &lt;code&gt;PERCENT_RANK() OVER&lt;/code&gt; window function.&lt;/p&gt;&#10;&lt;h2 id="understanding-percentiles"&gt;Understanding Percentiles &lt;a class="hlink" href="#understanding-percentiles" aria-label="Link to Understanding Percentiles"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The &lt;code&gt;PERCENT_RANK()&lt;/code&gt; function calculates the relative rank of a row within a partitioned dataset. The formula used internally is:&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/efficient-percentile-ranking-in-postgresql-webdev/file_0_hu_f078b2a51667e26d.webp" srcset="https://jetthoughts.com/blog/efficient-percentile-ranking-in-postgresql-webdev/file_0_hu_f078b2a51667e26d.webp 384w, https://jetthoughts.com/blog/efficient-percentile-ranking-in-postgresql-webdev/file_0_hu_f078b2a51667e26d.webp 384w" sizes="(max-width: 760px) 100vw, 556px" width="384" height="107" alt="percentile formula" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;This results in values ranging from 0.0 (for the lowest-ranked row) to 1.0 (for the highest-ranked row), providing a useful measure of distribution.&lt;/p&gt;</description></item><item><title>Essential Development Best Practices for Modern Software Projects in 2025</title><link>https://jetthoughts.com/blog/essential-development-best-practices-for-modern/</link><pubDate>Tue, 11 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/essential-development-best-practices-for-modern/</guid><description>&lt;p&gt;As we move into 2025, the software development landscape is changing rapidly. To keep up with the competition and deliver quality products, developers need to adopt effective practices. These development best practices are essential for ensuring that projects are successful, efficient, and secure. In this article, we’ll explore the key strategies that every software team should consider for modern development.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Agile methodologies boost team collaboration and adaptability, making it easier to respond to changes.&lt;/li&gt;&#10;&lt;li&gt;Writing clean code is crucial for maintainability and reduces the risk of bugs in the long run.&lt;/li&gt;&#10;&lt;li&gt;Automated testing saves time and ensures that software works correctly before it goes live.&lt;/li&gt;&#10;&lt;li&gt;Version control is essential for tracking changes and collaborating effectively among team members.&lt;/li&gt;&#10;&lt;li&gt;Prioritizing security from the start protects your software from vulnerabilities and builds trust with users.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="embracing-agile-methodologies"&gt;Embracing Agile Methodologies &lt;a class="hlink" href="#embracing-agile-methodologies" aria-label="Link to Embracing Agile Methodologies"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/essential-development-best-practices-for-modern/file_0_hu_c12bfe79aba55d4b.webp" srcset="https://jetthoughts.com/blog/essential-development-best-practices-for-modern/file_0_hu_c12bfe79aba55d4b.webp 800w, https://jetthoughts.com/blog/essential-development-best-practices-for-modern/file_0_hu_29bc59838941b551.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="400" alt="Team collaboration using modern technology in software development." loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Is a Startup Consultancy Worth It in 2024?</title><link>https://jetthoughts.com/blog/startup-consultancy-worth-it-in-2024/</link><pubDate>Mon, 10 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/startup-consultancy-worth-it-in-2024/</guid><description>&lt;p&gt;As entrepreneurs gear up for 2024, many are left wondering whether hiring a startup consultancy is a wise investment. With the startup landscape constantly evolving, understanding the value of expert guidance can be crucial for success. This article explores the benefits and considerations of engaging a consultancy for your startup journey.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Startups often face unique challenges that require specialized knowledge.&lt;/li&gt;&#10;&lt;li&gt;Hiring a consultant can provide valuable insights and save time.&lt;/li&gt;&#10;&lt;li&gt;Look for consultants with practical experience, preferably those who have previously founded startups.&lt;/li&gt;&#10;&lt;li&gt;Conduct thorough interviews to ensure the consultant aligns with your business needs.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-unique-challenges-of-startups"&gt;The Unique Challenges of Startups &lt;a class="hlink" href="#the-unique-challenges-of-startups" aria-label="Link to The Unique Challenges of Startups"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Starting a new business is an exhilarating yet daunting task. Entrepreneurs often find themselves navigating uncharted waters, facing questions such as:&lt;/p&gt;</description></item><item><title>One Million Jobs 2.0: Embracing the Future of Work</title><link>https://jetthoughts.com/blog/one-million-jobs-20-embracing-future/</link><pubDate>Mon, 10 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/one-million-jobs-20-embracing-future/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=BAeBkS2gBpo"&gt;&lt;img src="https://jetthoughts.com/blog/one-million-jobs-20-embracing-future/file_0_hu_6a89d34a074d95b8.webp" srcset="https://jetthoughts.com/blog/one-million-jobs-20-embracing-future/file_0_hu_6a89d34a074d95b8.webp 800w, https://jetthoughts.com/blog/one-million-jobs-20-embracing-future/file_0_hu_e6960df9c9e04c6a.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="One Million Jobs 2.0: Embracing the Future of Work" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In a world where technology is changing fast, the job landscape is shifting too. Historically, when big tech changes happened, people found themselves in new roles. Often, these new jobs had better conditions and were more beneficial to society. This initiative aims to fund startups that can create a million jobs that only humans can do, without relying on AI.&lt;/p&gt;</description></item><item><title>Why I Hire Engineering: Unlocking the Secrets to Successful Recruitment in Tech</title><link>https://jetthoughts.com/blog/why-i-hire-engineering-unlocking-secrets/</link><pubDate>Mon, 10 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/why-i-hire-engineering-unlocking-secrets/</guid><description>&lt;p&gt;Hiring engineers is no small feat, especially in today’s fast-paced tech world. The competition is fierce, and finding the right fit for your team can feel overwhelming. But with the right strategies and insights, you can simplify the recruitment process. In this article, I’ll share my approach to hiring engineering talent and the key steps to ensure you attract and retain the best candidates. Let’s dive into the details of successful tech recruitment.&lt;/p&gt;</description></item><item><title>Maximizing Efficiency: The Ultimate Guide to In-House Software Development in 2025</title><link>https://jetthoughts.com/blog/maximizing-efficiency-ultimate-guide-in-house/</link><pubDate>Sun, 09 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/maximizing-efficiency-ultimate-guide-in-house/</guid><description>&lt;p&gt;In-house software development is becoming increasingly important for businesses looking to maintain control over their projects while boosting efficiency. As we step into 2025, the landscape of software development is evolving, and organizations need to adapt to stay competitive. This guide will walk you through the essentials of in-house software development, from building a strong team to utilizing the right tools and methodologies. Whether you&amp;rsquo;re just starting out or looking to enhance your current processes, we&amp;rsquo;ve got you covered with practical insights and strategies.&lt;/p&gt;</description></item><item><title>Navigating Web Design and Development: 8 Essential Considerations for 2024</title><link>https://jetthoughts.com/blog/navigating-web-design-development-8-essential/</link><pubDate>Sat, 08 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/navigating-web-design-development-8-essential/</guid><description>&lt;p&gt;In 2024, selecting the right web design and development company is crucial for businesses aiming to enhance their online presence. With numerous agencies claiming to offer both services, understanding the distinctions and requirements is essential for achieving your goals.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Understand the difference between web design and development.&lt;/li&gt;&#10;&lt;li&gt;Evaluate the agency&amp;rsquo;s track record and portfolio.&lt;/li&gt;&#10;&lt;li&gt;Ensure cost-effectiveness without compromising quality.&lt;/li&gt;&#10;&lt;li&gt;Verify design skills and coding knowledge.&lt;/li&gt;&#10;&lt;li&gt;Prioritize responsive customer service and communication.&lt;/li&gt;&#10;&lt;li&gt;Look for relevant certifications and positive reviews.&lt;/li&gt;&#10;&lt;li&gt;Adhere to timelines to avoid project delays.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="understanding-web-design-and-development"&gt;Understanding Web Design and Development &lt;a class="hlink" href="#understanding-web-design-and-development" aria-label="Link to Understanding Web Design and Development"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Web design focuses on the aesthetics and user experience of a website, including layout, color schemes, and navigation. Designers utilize tools like Adobe Photoshop and InVision to create visually appealing sites that engage users.&lt;/p&gt;</description></item><item><title>Revolutionizing Chip Design with LLMs</title><link>https://jetthoughts.com/blog/revolutionizing-chip-design-with-llms/</link><pubDate>Sat, 08 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/revolutionizing-chip-design-with-llms/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=ZgQPB0qpk2A"&gt;&lt;img src="https://jetthoughts.com/blog/revolutionizing-chip-design-with-llms/file_0_hu_e69ababeb58249da.webp" srcset="https://jetthoughts.com/blog/revolutionizing-chip-design-with-llms/file_0_hu_e69ababeb58249da.webp 800w, https://jetthoughts.com/blog/revolutionizing-chip-design-with-llms/file_0_hu_fcc510665f2072ca.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Revolutionizing Chip Design with LLMs" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;We are witnessing a major shift in technology. Large Language Models (LLMs) are changing how we approach chip design, especially for custom ASICs and FPGAs. This new wave of innovation promises to make the design process faster and cheaper, opening doors for startups and tech enthusiasts alike.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;LLMs can significantly reduce costs in ASIC and FPGA design.&lt;/li&gt;&#10;&lt;li&gt;Custom digital systems are becoming more accessible.&lt;/li&gt;&#10;&lt;li&gt;Specialized computations can be optimized with LLMs.&lt;/li&gt;&#10;&lt;li&gt;There are high-value business opportunities in this space.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-shift-in-chip-design"&gt;The Shift in Chip Design &lt;a class="hlink" href="#the-shift-in-chip-design" aria-label="Link to The Shift in Chip Design"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Chip design has always been a complex and expensive process. Traditionally, creating custom digital systems required a lot of time and resources. Engineers had to spend countless hours on design, development, and testing. This made it hard for smaller companies to compete.&lt;/p&gt;</description></item><item><title>Mastering MVP Software Design: Essential Strategies for Successful Development</title><link>https://jetthoughts.com/blog/mastering-mvp-software-design-essential-strategies/</link><pubDate>Fri, 07 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/mastering-mvp-software-design-essential-strategies/</guid><description>&lt;p&gt;Creating a Minimum Viable Product (MVP) is a vital step for anyone looking to launch a new software project. It’s about finding that sweet spot where you can test your ideas with real users without going overboard on features and costs. This guide will walk you through essential strategies for MVP software design, helping you to build a product that not only meets market needs but also evolves based on user feedback.&lt;/p&gt;</description></item><item><title>Fintech 2.0: The New Era of Financial Startups</title><link>https://jetthoughts.com/blog/fintech-20-new-era-of-financial/</link><pubDate>Thu, 06 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/fintech-20-new-era-of-financial/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=jJp13H5a-jE"&gt;&lt;img src="https://jetthoughts.com/blog/fintech-20-new-era-of-financial/file_0_hu_e0f7f3a75762adcd.webp" srcset="https://jetthoughts.com/blog/fintech-20-new-era-of-financial/file_0_hu_e0f7f3a75762adcd.webp 800w, https://jetthoughts.com/blog/fintech-20-new-era-of-financial/file_0_hu_e29d817c3e5f43fd.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Fintech 2.0: The New Era of Financial Startups" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;The fintech landscape has seen its fair share of ups and downs. Recent years have been tough for new startups, especially after the SVB collapse. This led to stricter regulations and investors pulling back. But there’s a silver lining. Now might just be the best time to launch a fintech startup.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;The fintech industry is evolving with new technologies.&lt;/li&gt;&#10;&lt;li&gt;AI tools are set to change the financial landscape.&lt;/li&gt;&#10;&lt;li&gt;Startups can leverage new infrastructure like cryptocurrencies and stablecoins.&lt;/li&gt;&#10;&lt;li&gt;There are opportunities in various sectors like insurance, investment banking, and international payments.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Historically, starting a financial technology startup was no walk in the park. The biggest hurdle? Getting a bank deal or finding a regulated partner. But guess what? We’re in a new era now. Thanks to providers like &lt;strong&gt;Stripe&lt;/strong&gt; and the rise of core technologies such as &lt;strong&gt;cryptocurrencies&lt;/strong&gt; and &lt;strong&gt;stablecoins&lt;/strong&gt;, the game has changed.&lt;/p&gt;</description></item><item><title>Unlocking Success: Amazon Marketing Strategies for 2024</title><link>https://jetthoughts.com/blog/unlocking-success-amazon-marketing-strategies-for/</link><pubDate>Thu, 06 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-success-amazon-marketing-strategies-for/</guid><description>&lt;p&gt;As e-commerce continues to evolve, Amazon remains a dominant force in the online marketplace. With 63% of online shoppers starting their product searches on Amazon, businesses must adapt their marketing strategies to stand out in this competitive environment. Here’s a look at the key trends and tips for crafting an effective Amazon marketing strategy in 2024.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Video Content is Essential&lt;/strong&gt;: Utilize video to engage customers and showcase products effectively.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Leverage Sponsored Display Ads&lt;/strong&gt;: Target specific customer preferences to boost conversions.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Adopt Omnichannel Marketing&lt;/strong&gt;: Reach customers across multiple platforms for greater visibility.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Utilize Data for Targeting&lt;/strong&gt;: Use insights to refine your advertising strategies.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Encourage User-Generated Content&lt;/strong&gt;: Build trust through reviews and ratings.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-importance-of-an-amazon-marketing-strategy"&gt;The Importance of an Amazon Marketing Strategy &lt;a class="hlink" href="#the-importance-of-an-amazon-marketing-strategy" aria-label="Link to The Importance of an Amazon Marketing Strategy"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;In 2024, having a robust Amazon marketing strategy is crucial for any e-commerce brand. With Amazon accounting for nearly 40% of e-commerce sales, businesses must ensure their products are visible to potential buyers. A well-crafted strategy not only enhances brand awareness but also improves customer trust and shopping experiences.&lt;/p&gt;</description></item><item><title>Stablecoins 2.0: The Future of Payments</title><link>https://jetthoughts.com/blog/stablecoins-20-future-of-payments-1810/</link><pubDate>Wed, 05 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/stablecoins-20-future-of-payments-1810/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=woAM_PbnCak"&gt;&lt;img src="https://jetthoughts.com/blog/stablecoins-20-future-of-payments-1810/file_0_hu_92d46fc5752b647e.webp" srcset="https://jetthoughts.com/blog/stablecoins-20-future-of-payments-1810/file_0_hu_92d46fc5752b647e.webp 800w, https://jetthoughts.com/blog/stablecoins-20-future-of-payments-1810/file_0_hu_54a7ada6b43ac56c.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Stablecoins 2.0: The Future of Payments" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;This year has been a game-changer for stablecoins. With payment volumes soaring, they are now outpacing giants like PayPal and Mastercard. The landscape is shifting, and the future looks bright for stablecoin startups.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Stablecoin payment volumes have surpassed PayPal&amp;rsquo;s total payment volume.&lt;/li&gt;&#10;&lt;li&gt;Stablecoins now facilitate nearly 30% of global remittances.&lt;/li&gt;&#10;&lt;li&gt;Recent acquisitions, like Stripe&amp;rsquo;s purchase of a stablecoin startup, signal growing investor interest.&lt;/li&gt;&#10;&lt;li&gt;A more crypto-friendly government may lead to sensible regulations.&lt;/li&gt;&#10;&lt;li&gt;This is an ideal time for B2B stablecoin startups.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-surge-in-stablecoin-payment-volumes"&gt;The Surge in Stablecoin Payment Volumes &lt;a class="hlink" href="#the-surge-in-stablecoin-payment-volumes" aria-label="Link to The Surge in Stablecoin Payment Volumes"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;At the start of this year, we posted a request for startups (RFS) focused on stablecoins. Since then, the growth has been impressive. Stablecoin payment volumes have surged, now exceeding PayPal&amp;rsquo;s total payment volume. To put it in perspective, stablecoins account for over a fifth of Mastercard&amp;rsquo;s volume. This is a clear sign that stablecoins are becoming a preferred method for transactions.&lt;/p&gt;</description></item><item><title>Unlocking Creativity: Designers Share Insights on Adobe Firefly’s Generative AI Features</title><link>https://jetthoughts.com/blog/unlocking-creativity-designers-share-insights-on/</link><pubDate>Wed, 05 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-creativity-designers-share-insights-on/</guid><description>&lt;p&gt;Adobe Firefly has emerged as a game-changer in the design world, offering a suite of generative AI tools that enhance creativity and streamline workflows. Designers Jessica Souza and Sérgio Estrella shared their experiences and insights on how these features are reshaping their creative processes.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Adobe Firefly integrates generative AI tools into Photoshop and Illustrator.&lt;/li&gt;&#10;&lt;li&gt;Designers report significant time savings and enhanced creativity.&lt;/li&gt;&#10;&lt;li&gt;AI tools are user-friendly, making them accessible for novice designers.&lt;/li&gt;&#10;&lt;li&gt;Limitations exist, particularly in the quality of AI-generated images.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-rise-of-adobe-firefly"&gt;The Rise of Adobe Firefly &lt;a class="hlink" href="#the-rise-of-adobe-firefly" aria-label="Link to The Rise of Adobe Firefly"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Launched in 2022, Adobe Firefly has quickly become a vital resource for designers. With its generative AI capabilities, it allows users to create detailed images from simple text prompts, significantly reducing the time spent on image editing and creation. As of 2024, Adobe reports that its AI tools have generated over 6.5 billion images, showcasing their widespread adoption.&lt;/p&gt;</description></item><item><title>Unlocking Efficiency: The Best Developer Tools for 2025</title><link>https://jetthoughts.com/blog/unlocking-efficiency-best-developer-tools-for/</link><pubDate>Wed, 05 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-efficiency-best-developer-tools-for/</guid><description>&lt;p&gt;As we step into 2025, developers are on the lookout for tools that not only streamline their workflow but also make collaboration and coding easier. The right tools can truly change the game, allowing teams to work more efficiently and effectively. In this article, we&amp;rsquo;ll explore some of the best developer tools that can help you tackle common challenges and enhance your productivity.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Collaboration tools are essential for smooth teamwork and effective communication.&lt;/li&gt;&#10;&lt;li&gt;Modern IDEs should be user-friendly and adaptable to individual developer needs.&lt;/li&gt;&#10;&lt;li&gt;Automation tools can significantly reduce repetitive tasks and save time.&lt;/li&gt;&#10;&lt;li&gt;AI coding assistants are becoming vital for error detection and smart suggestions.&lt;/li&gt;&#10;&lt;li&gt;Project management tools should focus on clarity and ease of use for better tracking and reporting.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="essential-tools-for-seamless-collaboration"&gt;Essential Tools For Seamless Collaboration &lt;a class="hlink" href="#essential-tools-for-seamless-collaboration" aria-label="Link to Essential Tools For Seamless Collaboration"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/unlocking-efficiency-best-developer-tools-for/file_0_hu_f6cd1e202124e13c.webp" srcset="https://jetthoughts.com/blog/unlocking-efficiency-best-developer-tools-for/file_0_hu_f6cd1e202124e13c.webp 800w, https://jetthoughts.com/blog/unlocking-efficiency-best-developer-tools-for/file_0_hu_9dbdb3a0351d1327.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="400" alt="Developers collaborating with digital tools in a modern workspace." loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Building High-Performance Data Labeling Teams: Strategies for Success</title><link>https://jetthoughts.com/blog/building-high-performance-data-labeling-teams/</link><pubDate>Tue, 04 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/building-high-performance-data-labeling-teams/</guid><description>&lt;p&gt;In the rapidly evolving field of artificial intelligence, the demand for high-quality labeled data is more critical than ever. Effective data labeling teams are essential for creating robust datasets that drive machine learning success. This article explores strategies for structuring and scaling high-performance data labeling teams, emphasizing the importance of human insight in the annotation process.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Quality annotation is vital for accurate AI predictions.&lt;/li&gt;&#10;&lt;li&gt;Different types of data labeling teams include manual, automated, and hybrid.&lt;/li&gt;&#10;&lt;li&gt;Structuring teams effectively involves defining roles and responsibilities.&lt;/li&gt;&#10;&lt;li&gt;Continuous training and upskilling are crucial for maintaining high standards.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-importance-of-quality-annotation"&gt;The Importance Of Quality Annotation &lt;a class="hlink" href="#the-importance-of-quality-annotation" aria-label="Link to The Importance Of Quality Annotation"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Quality annotation is crucial for the success of AI models. While automated tools have emerged, human expertise remains irreplaceable. Humans excel at understanding context, emotions, and nuances that algorithms may overlook. For instance, in sentiment analysis, human annotators can detect irony and cultural references that machines might misinterpret.&lt;/p&gt;</description></item><item><title>Discover the Top Job Recruiting Agencies to Elevate Your Career in 2025</title><link>https://jetthoughts.com/blog/discover-top-job-recruiting-agencies-elevate/</link><pubDate>Mon, 03 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/discover-top-job-recruiting-agencies-elevate/</guid><description>&lt;p&gt;As we approach 2025, the job market is changing fast, and finding the right job can be tough. That’s where the top job recruiting agencies come in. These agencies can make your job search easier by connecting you with the right opportunities and helping you stand out. In this article, we’ll look at the best recruiting agencies that can help you take your career to the next level this year.&lt;/p&gt;</description></item><item><title>Revolutionizing Engineering: The Future of AI-Aided Tools</title><link>https://jetthoughts.com/blog/revolutionizing-engineering-future-of-ai-aided/</link><pubDate>Mon, 03 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/revolutionizing-engineering-future-of-ai-aided/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=1asr6PkU8HQ"&gt;&lt;img src="https://jetthoughts.com/blog/revolutionizing-engineering-future-of-ai-aided/file_0_hu_d9827de291a49313.webp" srcset="https://jetthoughts.com/blog/revolutionizing-engineering-future-of-ai-aided/file_0_hu_d9827de291a49313.webp 800w, https://jetthoughts.com/blog/revolutionizing-engineering-future-of-ai-aided/file_0_hu_75f7a26f76861a16.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Revolutionizing Engineering: The Future of AI-Aided Tools" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Engineering tools for the physical world have seen little change over the years. Traditional software like CAD, CAM, and EDA still depend on complex numerical solvers and physics simulations. These methods are not only costly but also require extensive training, often demanding a PhD to use effectively.&lt;/p&gt;&#10;&lt;p&gt;However, the future looks bright. We believe that the next generation of &lt;strong&gt;AI-powered tools&lt;/strong&gt; will transform the engineering landscape. Imagine a world where engineers can design and build physical systems—like planes, buildings, circuits, chips, and satellites—faster and better than ever before.&lt;/p&gt;</description></item><item><title>Unlocking Success: Essential Software Development Best Practices for 2025</title><link>https://jetthoughts.com/blog/unlocking-success-essential-software-development-best/</link><pubDate>Mon, 03 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-success-essential-software-development-best/</guid><description>&lt;p&gt;As we step into 2025, the landscape of software development is evolving rapidly. Developers are constantly seeking new ways to improve their processes and deliver better results. This article explores key software development best practices that can help teams stay ahead of the curve. From embracing emerging technologies to fostering collaboration, these insights will guide developers in crafting successful projects in the coming year.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Embrace AI to enhance coding efficiency and reduce errors.&lt;/li&gt;&#10;&lt;li&gt;Utilize low-code platforms to speed up development and accessibility.&lt;/li&gt;&#10;&lt;li&gt;Focus on scalability from the beginning to accommodate future growth.&lt;/li&gt;&#10;&lt;li&gt;Streamline workflows to eliminate bottlenecks and boost productivity.&lt;/li&gt;&#10;&lt;li&gt;Stay informed about industry trends to keep your skills relevant.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="embracing-new-technologies-for-better-development"&gt;Embracing New Technologies for Better Development &lt;a class="hlink" href="#embracing-new-technologies-for-better-development" aria-label="Link to Embracing New Technologies for Better Development"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="leveraging-ai-for-smarter-coding"&gt;Leveraging AI for Smarter Coding &lt;a class="hlink" href="#leveraging-ai-for-smarter-coding" aria-label="Link to Leveraging AI for Smarter Coding"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;You can speed up coding with AI. It helps find bugs and writes some code parts for you. &lt;strong&gt;AI tools let you save time and focus on the hard parts.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Stablecoins 2.0: The Future of Payments</title><link>https://jetthoughts.com/blog/stablecoins-20-future-of-payments/</link><pubDate>Sat, 01 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/stablecoins-20-future-of-payments/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=woAM_PbnCak"&gt;&lt;img src="https://jetthoughts.com/blog/stablecoins-20-future-of-payments/file_0_hu_92d46fc5752b647e.webp" srcset="https://jetthoughts.com/blog/stablecoins-20-future-of-payments/file_0_hu_92d46fc5752b647e.webp 800w, https://jetthoughts.com/blog/stablecoins-20-future-of-payments/file_0_hu_54a7ada6b43ac56c.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Stablecoins 2.0: The Future of Payments" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;At the start of this year, we posted a request for startups (RFS) around stablecoins. Since then, things have only gotten better for stablecoin startups. &lt;strong&gt;Stablecoin payment volumes have surged&lt;/strong&gt; this year. They are now higher than the total payment volume on PayPal and over a fifth of Mastercard&amp;rsquo;s volume. Almost 30% of global remittances are now facilitated through stablecoins.&lt;/p&gt;</description></item><item><title>Unlocking Potential: Innovative Open Source Web Development Projects to Explore in 2025</title><link>https://jetthoughts.com/blog/unlocking-potential-innovative-open-source-web/</link><pubDate>Sat, 01 Mar 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-potential-innovative-open-source-web/</guid><description>&lt;p&gt;As we step into 2025, the world of open source web development is buzzing with new ideas and tools. This article highlights innovative projects that can help developers of all skill levels enhance their abilities while contributing to the open source community. Whether you&amp;rsquo;re just starting out or looking to take on more challenging tasks, there&amp;rsquo;s something here for everyone. Let&amp;rsquo;s explore the exciting landscape of open source web development and see what awaits us this year!&lt;/p&gt;</description></item><item><title>Unlocking Government Efficiency: The AI Software Opportunity</title><link>https://jetthoughts.com/blog/unlocking-government-efficiency-ai-software-opportunity/</link><pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-government-efficiency-ai-software-opportunity/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=kwmaCLAkpwQ"&gt;&lt;img src="https://jetthoughts.com/blog/unlocking-government-efficiency-ai-software-opportunity/file_0_hu_4605beea5cb87281.webp" srcset="https://jetthoughts.com/blog/unlocking-government-efficiency-ai-software-opportunity/file_0_hu_4605beea5cb87281.webp 800w, https://jetthoughts.com/blog/unlocking-government-efficiency-ai-software-opportunity/file_0_hu_911f34603ea47e5.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Unlocking Government Efficiency: The AI Software Opportunity" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In recent times, the government has faced mounting pressure to cut costs and improve efficiency. With the rise of AI technology, there’s a unique opportunity for innovators to step in and create software that can help streamline government operations. This article explores the potential of building AI solutions for government needs.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Government software sales are challenging but rewarding.&lt;/li&gt;&#10;&lt;li&gt;AI can automate repetitive tasks, saving time and money.&lt;/li&gt;&#10;&lt;li&gt;The current economic climate makes this a prime time for innovation.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-challenge-of-selling-software-to-government"&gt;The Challenge of Selling Software to Government &lt;a class="hlink" href="#the-challenge-of-selling-software-to-government" aria-label="Link to The Challenge of Selling Software to Government"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Selling software to the government is not for the faint of heart. Many engineers shy away from this market due to its complexities. However, the rewards can be significant. For instance, Palantir, a company that successfully navigated this space, boasts a market cap of $125 billion today.&lt;/p&gt;</description></item><item><title>Unlocking the Power of Ruby Backend Development: A Comprehensive Guide for Modern Applications</title><link>https://jetthoughts.com/blog/unlocking-power-of-ruby-backend-development/</link><pubDate>Thu, 27 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-power-of-ruby-backend-development/</guid><description>&lt;p&gt;Ruby has carved out a special place in the world of backend development. It&amp;rsquo;s not just about writing code; it&amp;rsquo;s about crafting efficient and smooth-running applications. This guide dives into how Ruby can power modern apps, making them more responsive and robust. Whether you&amp;rsquo;re pairing it with frontend frameworks like React or handling complex databases, Ruby&amp;rsquo;s got the tools to make it happen. Let&amp;rsquo;s explore how Ruby stands out and why developers love using it for backend services.&lt;/p&gt;</description></item><item><title>Unlocking Success: 12 Innovative B2B Marketing Strategies for 2024</title><link>https://jetthoughts.com/blog/unlocking-success-12-innovative-b2b-marketing/</link><pubDate>Wed, 26 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-success-12-innovative-b2b-marketing/</guid><description>&lt;p&gt;As businesses gear up for 2024, the landscape of B2B marketing is evolving rapidly. Companies are seeking innovative strategies to enhance their marketing efforts, drive growth, and improve ROI. Here are twelve killer B2B marketing strategies that can help businesses stay ahead of the competition in the coming year.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Focus on creating an intent funnel for SEO keywords.&lt;/li&gt;&#10;&lt;li&gt;Leverage emotional connections in advertising.&lt;/li&gt;&#10;&lt;li&gt;Personalize content to enhance user experience.&lt;/li&gt;&#10;&lt;li&gt;Utilize user-generated content and case studies for credibility.&lt;/li&gt;&#10;&lt;li&gt;Invest in analytics to measure campaign effectiveness.&lt;/li&gt;&#10;&lt;li&gt;Explore B2B influencer marketing for lead generation.&lt;/li&gt;&#10;&lt;li&gt;Implement a referral system to boost leads.&lt;/li&gt;&#10;&lt;li&gt;Expand content marketing strategies beyond traditional formats.&lt;/li&gt;&#10;&lt;li&gt;Develop a mobile app to engage on-the-go users.&lt;/li&gt;&#10;&lt;li&gt;Provide training resources to ease customer onboarding.&lt;/li&gt;&#10;&lt;li&gt;Embrace technology for immersive marketing experiences.&lt;/li&gt;&#10;&lt;li&gt;Apply neuromarketing principles to understand buyer psychology.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="create-an-intent-funnel-for-your-seo-keywords"&gt;Create An Intent Funnel For Your SEO Keywords &lt;a class="hlink" href="#create-an-intent-funnel-for-your-seo-keywords" aria-label="Link to Create An Intent Funnel For Your SEO Keywords"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;B2B content marketing is essential for capturing audience attention and establishing thought leadership. To maximize results, businesses should target keywords that align with different stages of the buyer&amp;rsquo;s journey, from awareness to decision-making.&lt;/p&gt;</description></item><item><title>Building The Future: Insights From Sam Altman</title><link>https://jetthoughts.com/blog/building-future-insights-from-sam-altman/</link><pubDate>Tue, 25 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/building-future-insights-from-sam-altman/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=xXCBz_8hM9w"&gt;&lt;img src="https://jetthoughts.com/blog/building-future-insights-from-sam-altman/file_0_hu_457b0c7a6d8b42d7.webp" srcset="https://jetthoughts.com/blog/building-future-insights-from-sam-altman/file_0_hu_457b0c7a6d8b42d7.webp 800w, https://jetthoughts.com/blog/building-future-insights-from-sam-altman/file_0_hu_82f26f643b73335b.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Building The Future: Insights From Sam Altman" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In a recent conversation, Sam Altman, CEO of OpenAI, shared his thoughts on the future of technology and the exciting opportunities for startups. He discussed the rapid advancements in AI, the importance of conviction in pursuing ambitious goals, and the potential for a new age of abundance driven by technology. This dialogue is a must-read for anyone interested in the tech landscape and the future of innovation.&lt;/p&gt;</description></item><item><title>Exploring Innovative Ruby on Rails Open Source Projects for Developers</title><link>https://jetthoughts.com/blog/exploring-innovative-ruby-on-rails-open/</link><pubDate>Tue, 25 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/exploring-innovative-ruby-on-rails-open/</guid><description>&lt;p&gt;Ruby on Rails open source projects are like a treasure chest for developers. They&amp;rsquo;re packed with tools, ideas, and opportunities to grow your skills. Whether you&amp;rsquo;re a beginner or a seasoned pro, these projects let you learn, collaborate, and contribute to something meaningful. Plus, they&amp;rsquo;re a great way to connect with a community that’s all about sharing and innovation.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Ruby on Rails open source projects offer hands-on learning and real-world coding experience.&lt;/li&gt;&#10;&lt;li&gt;These projects are a great way to connect with a supportive developer community.&lt;/li&gt;&#10;&lt;li&gt;Contributions to open source can boost your resume and open up career opportunities.&lt;/li&gt;&#10;&lt;li&gt;Rails projects often focus on solving common developer problems with creative solutions.&lt;/li&gt;&#10;&lt;li&gt;Scalable and performance-driven, these projects grow alongside your needs.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="hidden-gems-in-ruby-on-rails-open-source-projects"&gt;Hidden Gems in Ruby on Rails Open Source Projects &lt;a class="hlink" href="#hidden-gems-in-ruby-on-rails-open-source-projects" aria-label="Link to Hidden Gems in Ruby on Rails Open Source Projects"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/exploring-innovative-ruby-on-rails-open/file_0_hu_44597dc377add249.webp" srcset="https://jetthoughts.com/blog/exploring-innovative-ruby-on-rails-open/file_0_hu_44597dc377add249.webp 800w, https://jetthoughts.com/blog/exploring-innovative-ruby-on-rails-open/file_0_hu_8c790e8d4e473b.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="400" alt="Colorful Ruby on Rails logos with a tech background." loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Navigating the Future: Trends in Staff Augmentation and IT Consulting</title><link>https://jetthoughts.com/blog/navigating-future-trends-in-staff-augmentation/</link><pubDate>Tue, 25 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/navigating-future-trends-in-staff-augmentation/</guid><description>&lt;p&gt;In today&amp;rsquo;s rapidly evolving digital landscape, businesses are increasingly turning to staff augmentation and IT consulting to enhance their operational efficiency and adapt to changing market demands. This article explores the latest trends in these sectors, highlighting the benefits and strategies that organizations can leverage to stay competitive.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Staff augmentation provides access to specialized skills without long-term commitments.&lt;/li&gt;&#10;&lt;li&gt;IT consulting helps businesses align technology initiatives with strategic goals.&lt;/li&gt;&#10;&lt;li&gt;Flexibility and cost-effectiveness are driving the popularity of these models.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="understanding-staff-augmentation"&gt;Understanding Staff Augmentation &lt;a class="hlink" href="#understanding-staff-augmentation" aria-label="Link to Understanding Staff Augmentation"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Staff augmentation is a strategic approach that allows companies to fill skill gaps by hiring external professionals temporarily. This model is particularly beneficial for:&lt;/p&gt;</description></item><item><title>Looking to Hire Someone? Essential Strategies for Finding the Perfect Candidate in 2025</title><link>https://jetthoughts.com/blog/looking-hire-someone-essential-strategies-for/</link><pubDate>Mon, 24 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/looking-hire-someone-essential-strategies-for/</guid><description>&lt;p&gt;Hiring the right person for your team can feel like a challenge, especially with how quickly things change in the job market. If you&amp;rsquo;re looking to hire someone in 2025, you&amp;rsquo;ll need to think beyond the usual methods. From crafting job descriptions to building a strong employer brand, every step counts. This guide breaks down practical strategies to help you find and keep the best talent.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Write clear and inclusive job descriptions that showcase your company’s culture.&lt;/li&gt;&#10;&lt;li&gt;Use technology like AI and video platforms to simplify your hiring process.&lt;/li&gt;&#10;&lt;li&gt;Create a strong employer brand to attract top candidates.&lt;/li&gt;&#10;&lt;li&gt;Ask thoughtful questions during interviews to evaluate both skills and personality.&lt;/li&gt;&#10;&lt;li&gt;Expand your search by considering freelancers, niche job boards, and educational partnerships.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="crafting-a-job-description-that-attracts-top-talent"&gt;Crafting a Job Description That Attracts Top Talent &lt;a class="hlink" href="#crafting-a-job-description-that-attracts-top-talent" aria-label="Link to Crafting a Job Description That Attracts Top Talent"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="highlighting-key-responsibilities-and-expectations"&gt;Highlighting Key Responsibilities and Expectations &lt;a class="hlink" href="#highlighting-key-responsibilities-and-expectations" aria-label="Link to Highlighting Key Responsibilities and Expectations"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Your job description is the first handshake with potential candidates. Start by clearly defining what the role involves. Avoid vague terms like &amp;ldquo;assist with various tasks.&amp;rdquo; Instead, be specific. For example:&lt;/p&gt;</description></item><item><title>Navigating AI Innovation: A Comparative Look at Claude 3 on AWS and ChatGPT on Azure</title><link>https://jetthoughts.com/blog/navigating-ai-innovation-comparative-look-at/</link><pubDate>Mon, 24 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/navigating-ai-innovation-comparative-look-at/</guid><description>&lt;p&gt;In the rapidly evolving landscape of artificial intelligence, two major players have emerged: Claude 3, hosted on Amazon Web Services (AWS), and ChatGPT, powered by Microsoft Azure. This article explores the unique features, capabilities, and implications of these two AI models, providing insights for businesses and developers looking to leverage AI technology.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Claude 3 offers advanced natural language processing capabilities with a focus on enterprise solutions.&lt;/li&gt;&#10;&lt;li&gt;ChatGPT excels in conversational AI, making it ideal for customer service applications.&lt;/li&gt;&#10;&lt;li&gt;Both platforms provide robust integration options, but their underlying architectures differ significantly.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="overview-of-claude-3-on-aws"&gt;Overview of Claude 3 on AWS &lt;a class="hlink" href="#overview-of-claude-3-on-aws" aria-label="Link to Overview of Claude 3 on AWS"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Claude 3, developed by Anthropic, is designed to enhance productivity and decision-making in various business environments. Leveraging the power of AWS, Claude 3 benefits from high scalability and reliability. Key features include:&lt;/p&gt;</description></item><item><title>Navigating Software Development Problems: Strategies for Success in 2025</title><link>https://jetthoughts.com/blog/navigating-software-development-problems-strategies-for/</link><pubDate>Sun, 23 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/navigating-software-development-problems-strategies-for/</guid><description>&lt;p&gt;Software development is always evolving, and with 2025 just around the corner, it&amp;rsquo;s clear that developers face both exciting opportunities and tough challenges. From dealing with tight deadlines to keeping up with new technologies, the road can be bumpy. But don&amp;rsquo;t worry—there are ways to make the journey smoother. This article digs into common software development problems and offers practical strategies to tackle them head-on.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Deadlines often fail due to unclear goals or changing requirements.&lt;/li&gt;&#10;&lt;li&gt;Miscommunication can lead to costly mistakes in projects.&lt;/li&gt;&#10;&lt;li&gt;Balancing new tech adoption with stability is a major challenge.&lt;/li&gt;&#10;&lt;li&gt;Burnout in teams can derail even the best-laid plans.&lt;/li&gt;&#10;&lt;li&gt;Writing scalable, secure, and maintainable code is more important than ever.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="understanding-the-root-causes-of-software-development-problems"&gt;Understanding the Root Causes of Software Development Problems &lt;a class="hlink" href="#understanding-the-root-causes-of-software-development-problems" aria-label="Link to Understanding the Root Causes of Software Development Problems"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/navigating-software-development-problems-strategies-for/file_0_hu_797db3ff29166947.webp" srcset="https://jetthoughts.com/blog/navigating-software-development-problems-strategies-for/file_0_hu_797db3ff29166947.webp 800w, https://jetthoughts.com/blog/navigating-software-development-problems-strategies-for/file_0_hu_5a1eb50842424173.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="400" alt="Developers collaborating on software solutions in a modern office." loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Enhancing Dev Experience: Strategies for a Better Developer Journey in 2025</title><link>https://jetthoughts.com/blog/enhancing-dev-experience-strategies-for-better-developer-journey-in-2025/</link><pubDate>Fri, 21 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/enhancing-dev-experience-strategies-for-better-developer-journey-in-2025/</guid><description>&lt;p&gt;Developer experience, or DX, is becoming a big deal for companies looking to stay ahead in 2025. It’s not just about writing code anymore—it&amp;rsquo;s about making sure developers have the tools, culture, and support they need to do their best work. Whether you&amp;rsquo;re a manager, a team leader, or a developer yourself, improving DX can lead to better productivity and happier teams. This article breaks down key strategies to make the developer journey smoother and more effective.&lt;/p&gt;</description></item><item><title>Mastering Ruby on Rails and React: A Comprehensive Guide for Developers in 2025</title><link>https://jetthoughts.com/blog/mastering-ruby-on-rails-react-comprehensive-guide-for-developers-in-2025/</link><pubDate>Fri, 21 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/mastering-ruby-on-rails-react-comprehensive-guide-for-developers-in-2025/</guid><description>&lt;p&gt;So, you&amp;rsquo;re curious about Ruby on Rails and React, huh? Well, you&amp;rsquo;ve come to the right place. This guide is all about getting your hands dirty with these two powerful frameworks. Whether you&amp;rsquo;re just starting or looking to sharpen your skills, we&amp;rsquo;ve got something for everyone. From setting up your environment to deploying your first app, we&amp;rsquo;ll walk you through the whole process. And don&amp;rsquo;t worry, it&amp;rsquo;s not all tech talk—there&amp;rsquo;s plenty of practical advice to help you along the way. Let&amp;rsquo;s get started!&lt;/p&gt;</description></item><item><title>Mastering Data Labeling: Strategies for Fine-Tuning LLMs in Your Industry</title><link>https://jetthoughts.com/blog/mastering-data-labeling-strategies-for-fine-tuning-llms-in-your-industry/</link><pubDate>Fri, 14 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/mastering-data-labeling-strategies-for-fine-tuning-llms-in-your-industry/</guid><description>&lt;p&gt;In the rapidly evolving landscape of artificial intelligence, fine-tuning large language models (LLMs) with industry-specific data is becoming essential. This process enhances the models&amp;rsquo; capabilities, allowing them to perform specialized tasks more effectively. The recent discussion on optimal data labeling strategies highlighted the importance of high-quality training data and the methodologies to achieve it.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Fine-tuning LLMs requires domain-specific data for improved performance.&lt;/li&gt;&#10;&lt;li&gt;High-quality data labeling is crucial for effective model training.&lt;/li&gt;&#10;&lt;li&gt;Various industries, including healthcare and finance, benefit from fine-tuned LLMs.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="understanding-fine-tuning-of-llms"&gt;Understanding Fine-Tuning of LLMs &lt;a class="hlink" href="#understanding-fine-tuning-of-llms" aria-label="Link to Understanding Fine-Tuning of LLMs"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Fine-tuning involves taking a pretrained LLM and training it further on a smaller, domain-specific dataset. This process allows the model to adapt its general knowledge to specialized tasks, enhancing its performance in specific industries.&lt;/p&gt;</description></item><item><title>The Future of AI: Exploring the 10 Trillion Parameter Model</title><link>https://jetthoughts.com/blog/future-of-ai-exploring-10-trillion-parameter-model/</link><pubDate>Thu, 13 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/future-of-ai-exploring-10-trillion-parameter-model/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=lbJilIQhHko"&gt;&lt;img src="https://jetthoughts.com/blog/future-of-ai-exploring-10-trillion-parameter-model/file_0_hu_7c3d903fd6ea81db.webp" srcset="https://jetthoughts.com/blog/future-of-ai-exploring-10-trillion-parameter-model/file_0_hu_7c3d903fd6ea81db.webp 800w, https://jetthoughts.com/blog/future-of-ai-exploring-10-trillion-parameter-model/file_0_hu_48870f37fbbc5741.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="The Future of AI: Exploring the 10 Trillion Parameter Model" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Earlier this month, OpenAI made headlines by raising a staggering $6.6 billion, marking the largest venture round ever. This funding is set to propel AI technology into a new era, with discussions around the implications of ultra-intelligent models and their potential to reshape industries.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;OpenAI&amp;rsquo;s recent funding highlights the increasing capital intensity of AI development.&lt;/li&gt;&#10;&lt;li&gt;The next generation of AI models could reach 10 trillion parameters, significantly surpassing current models.&lt;/li&gt;&#10;&lt;li&gt;The evolution of AI may lead to more deterministic outputs, allowing developers to focus on user experience.&lt;/li&gt;&#10;&lt;li&gt;Distillation of larger models into smaller, more efficient ones could democratize access to advanced AI capabilities.&lt;/li&gt;&#10;&lt;li&gt;Voice applications are rapidly growing, indicating a shift in how users interact with AI.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-impact-of-openais-funding"&gt;The Impact of OpenAI&amp;rsquo;s Funding &lt;a class="hlink" href="#the-impact-of-openais-funding" aria-label="Link to The Impact of OpenAI’s Funding"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;OpenAI&amp;rsquo;s recent funding round is a game changer. With $6.6 billion, the company aims to enhance its computational capabilities and attract top talent. The CFO of OpenAI, Sarah Friar, emphasized that the focus is on compute power, which is becoming increasingly expensive. This investment is crucial as we enter a phase where the scale of AI models is expanding exponentially.&lt;/p&gt;</description></item><item><title>Unlocking Customer Trust: A 4-Step Content Marketing Framework</title><link>https://jetthoughts.com/blog/unlocking-customer-trust-4-step-content-marketing-framework/</link><pubDate>Wed, 12 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-customer-trust-4-step-content-marketing-framework/</guid><description>&lt;p&gt;In today&amp;rsquo;s competitive market, building customer trust is essential for sustainable growth. A recent article outlines a proven 4-step content marketing framework designed to help businesses foster trust and engage effectively with their audience. This framework emphasizes the importance of relationships, education, amusement, and lead magnets in creating a genuine online presence.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Trust is crucial for consumer purchasing decisions.&lt;/li&gt;&#10;&lt;li&gt;The REAL framework consists of four pillars: Relationships, Education, Amusement, and Lead Magnets.&lt;/li&gt;&#10;&lt;li&gt;Consistent content delivery and audience engagement are vital for success.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="understanding-the-importance-of-trust"&gt;Understanding The Importance Of Trust &lt;a class="hlink" href="#understanding-the-importance-of-trust" aria-label="Link to Understanding The Importance Of Trust"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Trust has become a significant factor in consumer purchasing choices. According to recent surveys, over 70% of consumers believe that being able to trust brands is more important today than ever before. This shift highlights the need for businesses to prioritize trust-building strategies in their marketing efforts.&lt;/p&gt;</description></item><item><title>How to Effectively Hire Ruby Developers for Your Next Project</title><link>https://jetthoughts.com/blog/how-effectively-hire-ruby-developers-for-your-next-project/</link><pubDate>Mon, 10 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-effectively-hire-ruby-developers-for-your-next-project/</guid><description>&lt;p&gt;Hiring Ruby developers can feel like a big task. You want someone who knows their stuff but also fits in with your team. In this guide, we&amp;rsquo;ll walk you through the steps to find the right Ruby talent for your project. From understanding their role to making an offer they can&amp;rsquo;t refuse, we&amp;rsquo;ve got you covered.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Understand what a Ruby developer does and the skills they need.&lt;/li&gt;&#10;&lt;li&gt;Write a clear job description to attract the right candidates.&lt;/li&gt;&#10;&lt;li&gt;Use tech platforms and communities to find top Ruby talent.&lt;/li&gt;&#10;&lt;li&gt;Evaluate candidates with technical tests and portfolio reviews.&lt;/li&gt;&#10;&lt;li&gt;Offer competitive pay and benefits to secure the best developers.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="understanding-the-role-of-a-ruby-developer"&gt;Understanding the Role of a Ruby Developer &lt;a class="hlink" href="#understanding-the-role-of-a-ruby-developer" aria-label="Link to Understanding the Role of a Ruby Developer"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-effectively-hire-ruby-developers-for-your-next-project/file_0_hu_34c4ae48a91dd8c0.webp" srcset="https://jetthoughts.com/blog/how-effectively-hire-ruby-developers-for-your-next-project/file_0_hu_34c4ae48a91dd8c0.webp 800w, https://jetthoughts.com/blog/how-effectively-hire-ruby-developers-for-your-next-project/file_0_hu_88bc53d3244b49f6.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="400" alt="Ruby developer coding on a laptop in a cozy workspace." loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>The Ultimate List of Recruiting Agencies for Job Seekers in 2025</title><link>https://jetthoughts.com/blog/ultimate-list-of-recruiting-agencies-for-job-seekers-in-2025/</link><pubDate>Mon, 10 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ultimate-list-of-recruiting-agencies-for-job-seekers-in-2025/</guid><description>&lt;p&gt;Finding the right recruiting agency can feel like searching for a needle in a haystack, especially in 2025. With so many options out there, how do you choose the one that fits your career goals and needs? This guide is here to help. We&amp;rsquo;ll break down some top recruiting agencies making waves this year and give you tips on how to pick the right one for you. Whether you&amp;rsquo;re looking for remote work opportunities or specialized industry roles, there&amp;rsquo;s an agency out there ready to help you land your dream job.&lt;/p&gt;</description></item><item><title>You Don't Have To Be A Billionaire To Launch Satellites</title><link>https://jetthoughts.com/blog/you-dont-have-be-billionaire-launch-satellites/</link><pubDate>Mon, 10 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/you-dont-have-be-billionaire-launch-satellites/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Q0Xs0lGgwVA"&gt;&lt;img src="https://jetthoughts.com/blog/you-dont-have-be-billionaire-launch-satellites/file_0_hu_1ad0b7ce773f9b36.webp" srcset="https://jetthoughts.com/blog/you-dont-have-be-billionaire-launch-satellites/file_0_hu_1ad0b7ce773f9b36.webp 800w, https://jetthoughts.com/blog/you-dont-have-be-billionaire-launch-satellites/file_0_hu_2880c60be2384f53.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="You Don’t Have To Be A Billionaire To Launch Satellites" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Last year, the team at Astranis launched their first commercial satellite into space, marking a significant milestone in the aerospace industry. They’ve proven that you don’t need billions to build a hard tech company. Their journey from a small apartment to launching satellites is inspiring for aspiring founders.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Start Small&lt;/strong&gt;: Begin with a minimum viable product (MVP) to test your ideas.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Set Ambitious Goals&lt;/strong&gt;: Aim high during critical phases like funding rounds.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Scrappy Mindset&lt;/strong&gt;: Use limited resources creatively to achieve your objectives.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Prove Your Concept&lt;/strong&gt;: Demonstrate your technology works before seeking large investments.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-birth-of-astranis"&gt;The Birth of Astranis &lt;a class="hlink" href="#the-birth-of-astranis" aria-label="Link to The Birth of Astranis"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Astranis started in a small apartment in downtown San Francisco. Co-founders John Gedmark and Ryan McLinko had a vision to create a new kind of satellite. They realized that the traditional approach to satellite design was outdated and saw an opportunity to innovate.&lt;/p&gt;</description></item><item><title>Navigating the Intersection of AI and Cybersecurity: Insights and Innovations</title><link>https://jetthoughts.com/blog/navigating-intersection-of-ai-cybersecurity-insights-innovations/</link><pubDate>Sun, 09 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/navigating-intersection-of-ai-cybersecurity-insights-innovations/</guid><description>&lt;p&gt;In a recent episode of the Executive Guidance podcast, experts discussed the transformative impact of artificial intelligence (AI) on cybersecurity. The conversation highlighted the challenges and opportunities that arise from integrating AI into security frameworks, emphasizing the need for collaboration between public and private sectors to enhance government technology and workforce efficiency.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;The importance of balancing legacy systems with emerging technologies in government.&lt;/li&gt;&#10;&lt;li&gt;Utilizing AI to streamline cybersecurity processes and reduce repetitive tasks.&lt;/li&gt;&#10;&lt;li&gt;The necessity of building public-private partnerships to foster innovation and efficiency.&lt;/li&gt;&#10;&lt;li&gt;Ensuring trust and ethical considerations in AI implementation.&lt;/li&gt;&#10;&lt;li&gt;The role of continuous monitoring in securing AI systems.&lt;/li&gt;&#10;&lt;li&gt;Strategies for workforce development in an AI-driven landscape.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-role-of-ai-in-cybersecurity"&gt;The Role of AI in Cybersecurity &lt;a class="hlink" href="#the-role-of-ai-in-cybersecurity" aria-label="Link to The Role of AI in Cybersecurity"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;AI is increasingly becoming a cornerstone in the fight against cyber threats. By automating routine tasks, AI allows cybersecurity professionals to focus on more complex issues. This shift not only enhances efficiency but also improves the overall security posture of organizations.&lt;/p&gt;</description></item><item><title>Revolutionizing Development: The Ultimate Guide to Backend Tools in 2025</title><link>https://jetthoughts.com/blog/revolutionizing-development-ultimate-guide-backend-tools-in-2025/</link><pubDate>Sat, 08 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/revolutionizing-development-ultimate-guide-backend-tools-in-2025/</guid><description>&lt;p&gt;In 2025, the world of backend development is buzzing with new tools and tech that are changing the game for developers. From microservices to AI, the landscape is constantly shifting, offering fresh solutions to everyday challenges. This guide dives into the must-know backend tools and trends shaping the future. Whether you&amp;rsquo;re just starting out or a seasoned pro, staying updated is key to tackling the most common problems developers face today.&lt;/p&gt;</description></item><item><title>The 'Overnight Success' Of Kalshi</title><link>https://jetthoughts.com/blog/overnight-success-of-kalshi/</link><pubDate>Sat, 08 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/overnight-success-of-kalshi/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Wi_Wj3Miugo"&gt;&lt;img src="https://jetthoughts.com/blog/overnight-success-of-kalshi/file_0_hu_5e37a4351d7967d6.webp" srcset="https://jetthoughts.com/blog/overnight-success-of-kalshi/file_0_hu_5e37a4351d7967d6.webp 800w, https://jetthoughts.com/blog/overnight-success-of-kalshi/file_0_hu_8da90d223b8239e0.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="The “Overnight Success” Of Kalshi" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In the world of startups, the term &amp;ldquo;overnight success&amp;rdquo; often masks the years of hard work and struggle behind it. Kalshi, a prediction marketplace, is a prime example of this phenomenon. After five years of dedication, the company is finally making waves on the app store charts, and it’s time to celebrate their journey.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Kalshi is a prediction marketplace that has gained significant traction recently.&lt;/li&gt;&#10;&lt;li&gt;The company’s success is the result of five years of hard work and perseverance.&lt;/li&gt;&#10;&lt;li&gt;Founders and their team faced numerous challenges, including regulatory hurdles.&lt;/li&gt;&#10;&lt;li&gt;The app is now available on the App Store, and it’s worth checking out.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-journey-to-success"&gt;The Journey To Success &lt;a class="hlink" href="#the-journey-to-success" aria-label="Link to The Journey To Success"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;When we think of successful apps, we often picture a quick rise to fame. But Kalshi’s story is different. Founded in 2019, the company has been grinding away for years. They faced a lot of challenges along the way, from navigating complex regulations to building a product that truly resonates with users.&lt;/p&gt;</description></item><item><title>Unlocking Cybersecurity: Insights from Google Cloud's Digital Transformation</title><link>https://jetthoughts.com/blog/unlocking-cybersecurity-insights-from-google-clouds-digital-transformation/</link><pubDate>Fri, 07 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-cybersecurity-insights-from-google-clouds-digital-transformation/</guid><description>&lt;p&gt;In a recent episode of the Executive Guidance podcast, experts from Google Cloud shared valuable insights on the intersection of cybersecurity and digital transformation. The discussion highlighted how agile cybersecurity practices and workforce enablement are essential for businesses navigating the complexities of the digital landscape.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Agile Cybersecurity Practices&lt;/strong&gt;: Emphasizing the need for flexibility in security measures to adapt to rapidly changing threats.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Workforce Enablement&lt;/strong&gt;: The importance of training and empowering security teams to effectively manage cybersecurity challenges.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Public vs. Private Sector&lt;/strong&gt;: Differences in cybersecurity approaches between public institutions and private enterprises.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Role of MSSPs&lt;/strong&gt;: Managed Security Service Providers (MSSPs) can significantly aid small and medium-sized businesses in scaling their cybersecurity operations.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Building Trust&lt;/strong&gt;: Establishing long-term client relationships through trust is crucial for effective cybersecurity.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Innovation and Agility&lt;/strong&gt;: How agility in the private sector fosters innovation and enhances problem-solving capabilities.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Emerging Technologies&lt;/strong&gt;: Balancing the adoption of new technologies with the need to address evolving cyber threats.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-importance-of-agile-cybersecurity"&gt;The Importance Of Agile Cybersecurity &lt;a class="hlink" href="#the-importance-of-agile-cybersecurity" aria-label="Link to The Importance Of Agile Cybersecurity"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Agility in cybersecurity is not just a buzzword; it is a necessity in today’s fast-paced digital environment. As cyber threats evolve, organizations must be able to pivot quickly and implement new security measures without disrupting their operations. This adaptability allows businesses to stay ahead of potential breaches and maintain their integrity.&lt;/p&gt;</description></item><item><title>Unlocking Growth: Innovative Strategies for B2B SaaS Marketing</title><link>https://jetthoughts.com/blog/unlocking-growth-innovative-strategies-for-b2b-saas-marketing/</link><pubDate>Fri, 07 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-growth-innovative-strategies-for-b2b-saas-marketing/</guid><description>&lt;p&gt;In a recent episode of the Executive Guidance podcast, industry experts Jeff Gangemi and Andrew Racine delved into the essential strategies for driving innovation and growth in the B2B SaaS sector. They emphasized the importance of building authentic customer relationships and adapting marketing approaches to meet evolving demands.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Building Authentic Communities&lt;/strong&gt;: Focus on creating genuine, non-monetized communities that foster trust and engagement among customers.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Empathy in Marketing&lt;/strong&gt;: Bridge the gap between technical complexity and customer needs by employing empathy in your marketing strategies.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Partnership Strategies&lt;/strong&gt;: Develop impactful partnerships that can enhance your market presence and drive growth.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Demand Creation vs. Demand Generation&lt;/strong&gt;: Shift your focus from merely generating demand to creating demand through innovative storytelling and customer engagement.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Long-Term Brand Investments&lt;/strong&gt;: Prioritize long-term investments in branding to scale your startup effectively.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Customer-Driven Insights&lt;/strong&gt;: Utilize insights from customer interactions to inform your marketing strategies and storytelling.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-role-of-authentic-communities"&gt;The Role of Authentic Communities &lt;a class="hlink" href="#the-role-of-authentic-communities" aria-label="Link to The Role of Authentic Communities"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Creating authentic communities is crucial in the B2B SaaS landscape. These communities should not be monetized but rather serve as platforms for customers to connect, share experiences, and provide feedback. This approach not only builds trust but also enhances customer loyalty.&lt;/p&gt;</description></item><item><title>The Evolution of Engineering Leadership in Berlin: Insights from a VP Engineering's Journey</title><link>https://jetthoughts.com/blog/evolution-of-engineering-leadership-in-berlin-insights-from-vp-engineerings-journey-product-management/</link><pubDate>Thu, 06 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/evolution-of-engineering-leadership-in-berlin-insights-from-vp-engineerings-journey-product-management/</guid><description>&lt;p&gt;With Berlin&amp;rsquo;s startup ecosystem growing 28% in the first half of 2024, the path to engineering leadership is transforming alongside this expansion. As part of my ongoing exploration of technical leadership in Berlin, I recently had an insightful conversation with &lt;a href="https://www.linkedin.com/in/mataneylon/"&gt;Matan Eylon, VP of Engineering&lt;/a&gt; at &lt;a href="https://www.nostos-genomics.com/"&gt;Nostos Genomics&lt;/a&gt;. His journey from test automation specialist to executive leadership offers valuable perspectives on how engineering management is evolving in Germany&amp;rsquo;s leading innovation hub.&lt;/p&gt;&#10;&lt;h2 id="the-unconventional-path-from-test-automation-to-executive-leadership"&gt;The Unconventional Path: From Test Automation to Executive Leadership &lt;a class="hlink" href="#the-unconventional-path-from-test-automation-to-executive-leadership" aria-label="Link to The Unconventional Path: From Test Automation to Executive Leadership"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="breaking-traditional-patterns"&gt;Breaking Traditional Patterns &lt;a class="hlink" href="#breaking-traditional-patterns" aria-label="Link to Breaking Traditional Patterns"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Matan&amp;rsquo;s career trajectory challenges conventional wisdom about engineering leadership. His story begins not with traditional software development, but in test automation and build engineering – areas often overlooked in traditional leadership paths. &amp;ldquo;I was making people more efficient,&amp;rdquo; Matan reflects on his early career. &amp;ldquo;I was building frameworks for people that they could do in a fraction of time what they used to be able to do before.&amp;rdquo;&lt;/p&gt;</description></item><item><title>Navigating the Future: 3 Essential AI Security Practices for Cyber Defense</title><link>https://jetthoughts.com/blog/navigating-future-3-essential-ai-security-practices-for-cyber-defense/</link><pubDate>Wed, 05 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/navigating-future-3-essential-ai-security-practices-for-cyber-defense/</guid><description>&lt;p&gt;In an era where artificial intelligence (AI) is rapidly transforming business operations, organizations face unprecedented security challenges. As AI tools become commonplace, the need for robust cybersecurity measures has never been more critical. This article explores three emerging AI security practices that can help organizations proactively defend against cyber threats.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Embrace AI with proper governance and monitoring.&lt;/li&gt;&#10;&lt;li&gt;Establish clear guidelines for employee use of AI tools.&lt;/li&gt;&#10;&lt;li&gt;Implement data loss prevention strategies tailored for AI.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-rise-of-ai-and-its-security-implications"&gt;The Rise of AI and Its Security Implications &lt;a class="hlink" href="#the-rise-of-ai-and-its-security-implications" aria-label="Link to The Rise of AI and Its Security Implications"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;AI is becoming ubiquitous in the workplace, with employees leveraging tools like ChatGPT and Google Gemini for various tasks. However, this widespread adoption introduces significant security risks, particularly concerning data leakage and unauthorized access to sensitive information. Organizations must adapt their cybersecurity strategies to address these evolving threats.&lt;/p&gt;</description></item><item><title>Now Anyone Can Code: How AI Agents Can Build Your Whole App</title><link>https://jetthoughts.com/blog/now-anyone-can-code-how-ai-agents-build-your-whole-app/</link><pubDate>Tue, 04 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/now-anyone-can-code-how-ai-agents-build-your-whole-app/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=jbIQfoldLag"&gt;&lt;img src="https://jetthoughts.com/blog/now-anyone-can-code-how-ai-agents-build-your-whole-app/file_0_hu_1e831731c53df7b8.webp" srcset="https://jetthoughts.com/blog/now-anyone-can-code-how-ai-agents-build-your-whole-app/file_0_hu_1e831731c53df7b8.webp 800w, https://jetthoughts.com/blog/now-anyone-can-code-how-ai-agents-build-your-whole-app/file_0_hu_9ae83a25a4447fd8.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Now Anyone Can Code: How AI Agents Can Build Your Whole App" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In a groundbreaking episode of Lightcone, the hosts discuss the revolutionary potential of AI in software development with Amjad Masad, CEO of Replit. With the launch of Replit Agent, coding is becoming accessible to everyone, allowing users to create functional applications with just a few prompts.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;AI is democratizing coding, making it accessible to non-programmers.&lt;/li&gt;&#10;&lt;li&gt;Replit Agent can build apps based on simple user prompts.&lt;/li&gt;&#10;&lt;li&gt;Users still need to understand coding basics to troubleshoot and debug.&lt;/li&gt;&#10;&lt;li&gt;The technology behind Replit Agent is a multi-agent system that enhances coding efficiency.&lt;/li&gt;&#10;&lt;li&gt;Real-world applications have already been created in minutes, showcasing the tool&amp;rsquo;s potential.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;The year 1984 marked the arrival of personal computing with the Mac, and now, in 2024, we are witnessing the dawn of personal software. Imagine orchestrating a team of AI agents to build whatever you want, whenever you want. This is the vision that Amjad Masad shares, likening it to the magical scene in Disney&amp;rsquo;s Fantasia where Mickey Mouse commands the brooms to dance. With Replit Agent, anyone with an idea can create an app in mere minutes, even if they’ve been waiting years to do so.&lt;/p&gt;</description></item><item><title>Unlocking Success: How Backend Development Services Propel Your Business Forward</title><link>https://jetthoughts.com/blog/unlocking-success-how-backend-development-services-propel-your-business-forward/</link><pubDate>Tue, 04 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-success-how-backend-development-services-propel-your-business-forward/</guid><description>&lt;p&gt;In today&amp;rsquo;s fast-paced digital world, backend development services are like the engine under the hood of a car. They keep everything running smoothly, ensuring that your business can move forward without a hitch. Whether you&amp;rsquo;re running a small website or a large e-commerce platform, having a solid backend is crucial. It handles everything behind the scenes, from data processing to user authentication, making sure your applications work efficiently and securely. Let&amp;rsquo;s dive into how backend development can propel your business to new heights.&lt;/p&gt;</description></item><item><title>Innovative Hiring Strategies for Startups: Building a High-Performance Team from Day One</title><link>https://jetthoughts.com/blog/innovative-hiring-strategies-for-startups-building-high-performance-team-from-day-one/</link><pubDate>Mon, 03 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/innovative-hiring-strategies-for-startups-building-high-performance-team-from-day-one/</guid><description>&lt;p&gt;Hiring the right people is a big deal for startups. It&amp;rsquo;s not just about filling seats; it&amp;rsquo;s about finding folks who will help your company grow and succeed. Startups have unique challenges when it comes to hiring, and the strategies that work for big companies might not cut it here. You&amp;rsquo;ve got to be creative and think outside the box to attract top talent. In this article, we&amp;rsquo;ll explore some innovative hiring strategies that can help startups build a high-performance team from the ground up.&lt;/p&gt;</description></item><item><title>Mastering Cloud Cost Optimization: Strategies for Efficiency and Savings</title><link>https://jetthoughts.com/blog/mastering-cloud-cost-optimization-strategies-for-efficiency-savings/</link><pubDate>Mon, 03 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/mastering-cloud-cost-optimization-strategies-for-efficiency-savings/</guid><description>&lt;p&gt;In today&amp;rsquo;s digital landscape, many organizations are grappling with the challenge of managing cloud costs effectively. Despite the initial promise of cost savings associated with cloud services, a significant number of companies find their expenses spiraling out of control. This article explores a strategic framework for cloud cost optimization that can help businesses lower costs while enhancing operational efficiency.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Establish corporate guardrails to align cloud spending with business objectives.&lt;/li&gt;&#10;&lt;li&gt;Engage in strategic vendor negotiations to secure better pricing and terms.&lt;/li&gt;&#10;&lt;li&gt;Continuously monitor and optimize cloud infrastructure for efficiency.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="understanding-cloud-cost-challenges"&gt;Understanding Cloud Cost Challenges &lt;a class="hlink" href="#understanding-cloud-cost-challenges" aria-label="Link to Understanding Cloud Cost Challenges"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;The early adoption of cloud computing was driven by promises of scalability, agility, and reduced capital expenditures. However, a recent survey revealed that nearly 60% of companies are struggling with rising cloud costs. The primary challenges include:&lt;/p&gt;</description></item><item><title>The Ultimate Showdown: Figma, Adobe XD, and Sketch for UI Design</title><link>https://jetthoughts.com/blog/ultimate-showdown-figma-adobe-xd-sketch-for-ui-design/</link><pubDate>Mon, 03 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ultimate-showdown-figma-adobe-xd-sketch-for-ui-design/</guid><description>&lt;p&gt;In the ever-evolving world of UI design, choosing the right tool can significantly impact the workflow and outcome of a project. As of 2024, Figma, Adobe XD, and Sketch are three of the most popular platforms, each offering unique features tailored to different design needs. This article explores their strengths and weaknesses to help designers make an informed choice.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Figma&lt;/strong&gt; excels in real-time collaboration and is browser-based, making it accessible from any device.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Adobe XD&lt;/strong&gt; integrates seamlessly with the Adobe Creative Cloud, appealing to users familiar with Adobe products.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Sketch&lt;/strong&gt; is favored by Mac users for its extensive plugin ecosystem and strong vector drawing capabilities.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="overview-of-the-tools"&gt;Overview Of The Tools &lt;a class="hlink" href="#overview-of-the-tools" aria-label="Link to Overview Of The Tools"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Figma is a browser-based design tool known for its collaborative features, allowing multiple users to work on a project simultaneously. Adobe XD, while no longer available for standalone purchase, continues to support existing users and integrates well with other Adobe products. Sketch, designed exclusively for macOS, is popular for its focus on screen design and a rich array of plugins.&lt;/p&gt;</description></item><item><title>Innovative Solutions from a Startup Development Company: Transforming Ideas into Reality</title><link>https://jetthoughts.com/blog/innovative-solutions-from-startup-development-company-transforming-ideas-into-reality/</link><pubDate>Sun, 02 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/innovative-solutions-from-startup-development-company-transforming-ideas-into-reality/</guid><description>&lt;p&gt;In today&amp;rsquo;s fast-moving tech world, startups are popping up everywhere with big ideas. But turning those ideas into real, working apps? That&amp;rsquo;s the tricky part. That&amp;rsquo;s where startup development companies come in. They&amp;rsquo;re like the secret sauce, helping these new businesses take their concepts from just thoughts to something you can actually use on your phone or computer. They know the ropes, they have the tools, and they&amp;rsquo;re ready to help bring those ideas to life.&lt;/p&gt;</description></item><item><title>Why Vertical LLM Agents Are The New $1 Billion SaaS Opportunities</title><link>https://jetthoughts.com/blog/why-vertical-llm-agents-are-new-1-billion-saas-opportunities/</link><pubDate>Sun, 02 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/why-vertical-llm-agents-are-new-1-billion-saas-opportunities/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=eBVi_sLaYsc"&gt;&lt;img src="https://jetthoughts.com/blog/why-vertical-llm-agents-are-new-1-billion-saas-opportunities/file_0_hu_f85efb034217cf5b.webp" srcset="https://jetthoughts.com/blog/why-vertical-llm-agents-are-new-1-billion-saas-opportunities/file_0_hu_f85efb034217cf5b.webp 800w, https://jetthoughts.com/blog/why-vertical-llm-agents-are-new-1-billion-saas-opportunities/file_0_hu_e030a7c75ef827ec.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Why Vertical LLM Agents Are The New $1 Billion SaaS Opportunities" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;As large language models (LLMs) continue to evolve, the potential for vertical AI agents to transform industries is becoming increasingly clear. In this episode of Lightcone, hosts Gary, Jared, and Diana chat with Jake Heller, co-founder and CEO of Casetext, about his journey in building a successful vertical AI company and the challenges faced along the way.&lt;/p&gt;</description></item><item><title>The Best Consumer Companies Incorporate Both Virality And Network Effect To Grow Organically</title><link>https://jetthoughts.com/blog/best-consumer-companies-incorporate-both-virality-network-effect-grow-organically/</link><pubDate>Sat, 01 Feb 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/best-consumer-companies-incorporate-both-virality-network-effect-grow-organically/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=nty_szMaNTs"&gt;&lt;img src="https://jetthoughts.com/blog/best-consumer-companies-incorporate-both-virality-network-effect-grow-organically/file_0_hu_e6f5f571b1232b40.webp" srcset="https://jetthoughts.com/blog/best-consumer-companies-incorporate-both-virality-network-effect-grow-organically/file_0_hu_e6f5f571b1232b40.webp 800w, https://jetthoughts.com/blog/best-consumer-companies-incorporate-both-virality-network-effect-grow-organically/file_0_hu_a88c90c42da96a18.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="The Best Consumer Companies Incorporate Both Virality And Network Effect To Grow Organically" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In today’s digital landscape, understanding how companies grow is essential. The best consumer companies have figured out a way to blend &lt;strong&gt;virality&lt;/strong&gt; and &lt;strong&gt;network effects&lt;/strong&gt; to expand their user base without relying heavily on traditional marketing. This article explores these concepts and how they work together to create successful products.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Network Effect: The value of a product increases as more people use it.&lt;/li&gt;&#10;&lt;li&gt;Virality: The ability of a product to spread quickly through user recommendations.&lt;/li&gt;&#10;&lt;li&gt;Successful companies leverage both to enhance growth.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="what-is-a-network-effect"&gt;What Is A Network Effect? &lt;a class="hlink" href="#what-is-a-network-effect" aria-label="Link to What Is A Network Effect?"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;A network effect is a phenomenon where the value of a product or service increases as more people use it. This idea comes from &lt;strong&gt;Metcalfe&amp;rsquo;s Law&lt;/strong&gt;, which states that the value of a network is proportional to the square of the number of users.&lt;/p&gt;</description></item><item><title>Design Insights: Katie Dill Reviews Startup Websites</title><link>https://jetthoughts.com/blog/design-insights-katie-dill-reviews-startup-websites/</link><pubDate>Fri, 31 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/design-insights-katie-dill-reviews-startup-websites/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=DY5Z-uZ6ZMc"&gt;&lt;img src="https://jetthoughts.com/blog/design-insights-katie-dill-reviews-startup-websites/file_0_hu_70a3f8087323360.webp" srcset="https://jetthoughts.com/blog/design-insights-katie-dill-reviews-startup-websites/file_0_hu_70a3f8087323360.webp 800w, https://jetthoughts.com/blog/design-insights-katie-dill-reviews-startup-websites/file_0_hu_b0da93b917f86554.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Design Insights: Katie Dill Reviews Startup Websites" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In a recent episode of Design Review, Stripe’s Head of Design, &lt;strong&gt;Katie Dill&lt;/strong&gt;, shared her expertise by reviewing several startup websites. Joined by Aaron Epstein, they provided valuable feedback aimed at improving user experience and increasing conversions. The discussion highlighted the importance of clarity, trust, and engaging design in creating effective landing pages.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;First Impressions Matter&lt;/strong&gt;: The initial look of a website can set the tone for user engagement.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Clarity Is Key&lt;/strong&gt;: Clear messaging and intuitive navigation are essential for user retention.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Visual Hierarchy&lt;/strong&gt;: Properly structured information helps users understand the value proposition quickly.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;User-Centric Design&lt;/strong&gt;: Always consider the target audience when designing a website.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-importance-of-first-impressions"&gt;The Importance Of First Impressions &lt;a class="hlink" href="#the-importance-of-first-impressions" aria-label="Link to The Importance Of First Impressions"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Katie emphasized that the first impression a user gets from a website is crucial. For instance, when reviewing &lt;strong&gt;Mito&lt;/strong&gt;, she noted that the site felt more daunting than uplifting. Users should feel encouraged and excited, not overwhelmed. A website should communicate its purpose clearly and engage users right from the start.&lt;/p&gt;</description></item><item><title>Exploring the Best Rails Open Source Projects for Developers in 2025</title><link>https://jetthoughts.com/blog/exploring-best-rails-open-source-projects-for-developers-in-2025/</link><pubDate>Fri, 31 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/exploring-best-rails-open-source-projects-for-developers-in-2025/</guid><description>&lt;p&gt;So, you&amp;rsquo;re diving into the world of Rails open source projects in 2025? That&amp;rsquo;s a smart move. Rails is still rocking the web development scene, and open source projects are like a playground for developers. You get to learn, contribute, and maybe even make some new friends along the way. Plus, there&amp;rsquo;s a ton of cool stuff happening in the Rails community right now.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Rails open source projects are a great way to learn and grow as a developer.&lt;/li&gt;&#10;&lt;li&gt;The Rails community is active and supportive, making it easier to get involved.&lt;/li&gt;&#10;&lt;li&gt;Contributing to projects can boost your resume and open up job opportunities.&lt;/li&gt;&#10;&lt;li&gt;Open source projects help drive innovation and collaboration in the tech world.&lt;/li&gt;&#10;&lt;li&gt;Exploring these projects can lead to discovering new tools and technologies.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="why-rails-open-source-projects-are-a-developers-best-friend"&gt;Why Rails Open Source Projects Are a Developer&amp;rsquo;s Best Friend &lt;a class="hlink" href="#why-rails-open-source-projects-are-a-developers-best-friend" aria-label="Link to Why Rails Open Source Projects Are a Developer’s Best Friend"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="the-power-of-community-driven-development"&gt;The Power of Community-Driven Development &lt;a class="hlink" href="#the-power-of-community-driven-development" aria-label="Link to The Power of Community-Driven Development"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;When you dive into Rails open source projects, you join a vibrant community. It&amp;rsquo;s like having a massive support network. You&amp;rsquo;re not alone in your coding journey. Developers worldwide contribute, share ideas, and improve the code. This collective effort leads to better software. Plus, you get to meet folks who are as passionate about Rails as you are.&lt;/p&gt;</description></item><item><title>Finding The Right Co-Founder: A Guide For Startups</title><link>https://jetthoughts.com/blog/finding-right-co-founder-guide-for-startups/</link><pubDate>Wed, 29 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/finding-right-co-founder-guide-for-startups/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=Fk9BCr5pLTU"&gt;&lt;img src="https://jetthoughts.com/blog/finding-right-co-founder-guide-for-startups/file_0_hu_687b01d51d6c3e31.webp" srcset="https://jetthoughts.com/blog/finding-right-co-founder-guide-for-startups/file_0_hu_687b01d51d6c3e31.webp 800w, https://jetthoughts.com/blog/finding-right-co-founder-guide-for-startups/file_0_hu_fd8cf829589deb66.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Finding The Right Co-Founder: A Guide For Startups" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;Building a startup is no small feat, especially when you’re trying to break into a competitive market. Having the right co-founder can make all the difference in your journey. In this article, we’ll explore why co-founders are essential, how to find one, and tips for maintaining a strong partnership.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Importance of Co-Founders&lt;/strong&gt;: They help share the workload and provide emotional support.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Finding a Co-Founder&lt;/strong&gt;: Look within your network and be open to possibilities.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Maintaining Relationships&lt;/strong&gt;: Regular communication is key to avoiding conflicts.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="why-you-need-a-co-founder"&gt;Why You Need A Co-Founder &lt;a class="hlink" href="#why-you-need-a-co-founder" aria-label="Link to Why You Need A Co-Founder"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Starting a company is tough. Here are three reasons why having a co-founder is crucial:&lt;/p&gt;</description></item><item><title>Unlocking Success: How a Software Engineer Can Build a Thriving Business in 2025</title><link>https://jetthoughts.com/blog/unlocking-success-how-software-engineer-can-build-thriving-business-in-2025/</link><pubDate>Wed, 29 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-success-how-software-engineer-can-build-thriving-business-in-2025/</guid><description>&lt;p&gt;Thinking about starting your own business as a software engineer in 2025? You&amp;rsquo;re not alone. Many are turning their coding skills into successful ventures. It&amp;rsquo;s not just about writing code anymore; it&amp;rsquo;s about seeing opportunities and knowing how to make them work for you. Whether you&amp;rsquo;re looking to fill a gap in the market or use your tech skills in new ways, there&amp;rsquo;s a path for you. Let&amp;rsquo;s explore how to make it happen.&lt;/p&gt;</description></item><item><title>LangChain Python Tutorial: Complete Guide</title><link>https://jetthoughts.com/blog/langchain-python-tutorial-complete-guide/</link><pubDate>Tue, 28 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/langchain-python-tutorial-complete-guide/</guid><description>&lt;p&gt;Building AI-powered features in your Python applications has never been more accessible. With LangChain, you can integrate OpenAI, Anthropic, and other LLM providers directly into your Django and FastAPI projects without wrestling with complex API integrations.&lt;/p&gt;&#10;&lt;p&gt;This comprehensive tutorial walks you through everything you need to build your first AI agent in Python, from installation to production deployment. By the end, you&amp;rsquo;ll have working code examples and understand how to integrate LangChain into real Python applications.&lt;/p&gt;</description></item><item><title>Getting Started with LangChain-Ruby: A Complete Guide</title><link>https://jetthoughts.com/blog/getting-started-langchain-ruby-complete-guide/</link><pubDate>Mon, 27 Jan 2025 18:30:00 +0000</pubDate><guid>https://jetthoughts.com/blog/getting-started-langchain-ruby-complete-guide/</guid><description>&lt;p&gt;Building AI-powered features in your Ruby applications has never been more accessible. With the official LangChain-Ruby SDK (released in 2025), you can integrate OpenAI, Anthropic, and other LLM providers directly into your Rails apps without wrestling with complex API integrations.&lt;/p&gt;&#10;&lt;p&gt;This guide walks you through everything you need to build your first AI agent in Ruby—from installation to production deployment. By the end, you&amp;rsquo;ll have working code examples and understand how to integrate LangChain-Ruby into real Rails applications.&lt;/p&gt;</description></item><item><title>Innovative Rails Companies Leading the Tech Revolution in 2025</title><link>https://jetthoughts.com/blog/innovative-rails-companies-leading-tech-revolution-in-2025/</link><pubDate>Mon, 27 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/innovative-rails-companies-leading-tech-revolution-in-2025/</guid><description>&lt;p&gt;In 2025, the rail industry is buzzing with innovation, and it&amp;rsquo;s the rails companies at the forefront who are making waves. These companies are not just riding the tech wave; they&amp;rsquo;re leading it. From AI to green technologies, they&amp;rsquo;re transforming how we think about trains and rail systems. This article dives into the exciting advancements and the companies behind them, setting the stage for a new era in rail travel.&lt;/p&gt;</description></item><item><title>Understanding Fractional Positions: The Future of Flexible Employment in 2025</title><link>https://jetthoughts.com/blog/understanding-fractional-positions-future-of-flexible-employment-in-2025/</link><pubDate>Mon, 27 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/understanding-fractional-positions-future-of-flexible-employment-in-2025/</guid><description>&lt;p&gt;Fractional positions are changing how we work, giving both companies and workers more flexibility. In 2025, this trend is expected to grow even more. Instead of hiring full-time, businesses are bringing in experts for part-time roles. This helps them save money and get the skills they need without long-term commitments. For workers, it&amp;rsquo;s about having the freedom to choose projects and balance their lives better. As the job market evolves, fractional work is becoming a key part of the employment landscape, offering a win-win for all involved.&lt;/p&gt;</description></item><item><title>What Founder Mode Really Means</title><link>https://jetthoughts.com/blog/what-founder-mode-really-means/</link><pubDate>Mon, 27 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/what-founder-mode-really-means/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=FlonCU9txXI"&gt;&lt;img src="https://jetthoughts.com/blog/what-founder-mode-really-means/file_0_hu_6b00fde7b6d3d83d.webp" srcset="https://jetthoughts.com/blog/what-founder-mode-really-means/file_0_hu_6b00fde7b6d3d83d.webp 800w, https://jetthoughts.com/blog/what-founder-mode-really-means/file_0_hu_27dc5dd6bb1f394a.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="What Founder Mode Really Means" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In a recent talk at a Y Combinator alumni event, Airbnb CEO Brian Chesky shared insights on the concept of &amp;ldquo;founder mode&amp;rdquo;. This idea has sparked discussions among late-stage founders about the challenges they face as their companies grow. Chesky&amp;rsquo;s message resonated with many, emphasizing that regardless of company size, founders can still influence their organizations positively.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Founder mode is about staying engaged as a leader, even in large organizations.&lt;/li&gt;&#10;&lt;li&gt;Bureaucracy can hinder effective management and decision-making.&lt;/li&gt;&#10;&lt;li&gt;Great managers understand the value of a founder&amp;rsquo;s involvement.&lt;/li&gt;&#10;&lt;li&gt;Founders should actively work to cut through layers of management.&lt;/li&gt;&#10;&lt;li&gt;Learning from mistakes is crucial for growth and improvement.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="understanding-founder-mode"&gt;Understanding Founder Mode &lt;a class="hlink" href="#understanding-founder-mode" aria-label="Link to Understanding Founder Mode"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Founder mode refers to the mindset and approach that founders should maintain as their companies grow. It’s easy to lose touch with the core of the business when layers of management and bureaucracy start to build up. Brian Chesky highlighted that even in large companies, founders can still make a significant impact if they remain engaged and proactive.&lt;/p&gt;</description></item><item><title>Hanami Framework for Rails Developers: Complete Guide</title><link>https://jetthoughts.com/blog/hanami-framework-rails-developers-guide/</link><pubDate>Sun, 26 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/hanami-framework-rails-developers-guide/</guid><description>&lt;p&gt;The Ruby web development landscape has long been dominated by Rails, but Hanami has emerged as a compelling alternative that challenges conventional Ruby web application architecture. If you&amp;rsquo;re a Rails developer curious about Hanami, this comprehensive guide will walk you through the key differences, architectural philosophies, and practical considerations for choosing between these frameworks.&lt;/p&gt;&#10;&lt;h2 id="introduction-why-hanami-matters"&gt;Introduction: Why Hanami Matters &lt;a class="hlink" href="#introduction-why-hanami-matters" aria-label="Link to Introduction: Why Hanami Matters"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Hanami (formerly known as Lotus) represents a different approach to Ruby web development. While Rails prioritizes convention over configuration and rapid prototyping, Hanami emphasizes clean architecture, explicit dependencies, and long-term maintainability. This isn&amp;rsquo;t about one framework being &amp;ldquo;better&amp;rdquo; than the other—it&amp;rsquo;s about understanding when each approach serves your project&amp;rsquo;s needs.&lt;/p&gt;</description></item><item><title>Rails Performance Monitoring: Complete Guide 2025</title><link>https://jetthoughts.com/blog/rails-performance-monitoring-complete-guide/</link><pubDate>Sun, 26 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rails-performance-monitoring-complete-guide/</guid><description>&lt;h1 id="rails-performance-monitoring-complete-guide-2025"&gt;Rails Performance Monitoring: Complete Guide 2025 &lt;a class="hlink" href="#rails-performance-monitoring-complete-guide-2025" aria-label="Link to Rails Performance Monitoring: Complete Guide 2025"&gt;#&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Performance monitoring is crucial for maintaining healthy Rails applications in production. This comprehensive guide covers everything you need to know about monitoring Rails performance, from choosing the right APM tools to implementing custom instrumentation.&lt;/p&gt;&#10;&lt;h2 id="table-of-contents"&gt;Table of Contents &lt;a class="hlink" href="#table-of-contents" aria-label="Link to Table of Contents"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#why-rails-performance-monitoring-matters"&gt;Why Rails Performance Monitoring Matters&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#understanding-rails-performance-metrics"&gt;Understanding Rails Performance Metrics&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#apm-tools-comparison"&gt;APM Tools Comparison&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#custom-monitoring-with-rails-instrumentation"&gt;Custom Monitoring with Rails Instrumentation&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#opentelemetry-integration"&gt;OpenTelemetry Integration&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#database-performance-monitoring"&gt;Database Performance Monitoring&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#performance-optimization-checklist"&gt;Performance Optimization Checklist&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#troubleshooting-common-issues"&gt;Troubleshooting Common Issues&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#best-practices"&gt;Best Practices&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#conclusion"&gt;Conclusion&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="why-rails-performance-monitoring-matters"&gt;Why Rails Performance Monitoring Matters &lt;a class="hlink" href="#why-rails-performance-monitoring-matters" aria-label="Link to Why Rails Performance Monitoring Matters"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Rails performance monitoring provides visibility into your application&amp;rsquo;s health, helping you identify bottlenecks, optimize resource usage, and maintain excellent user experience. Without proper monitoring, performance issues can go undetected until they impact users.&lt;/p&gt;</description></item><item><title>Ruby Concurrency Patterns: Modern Guide 2025</title><link>https://jetthoughts.com/blog/ruby-concurrency-patterns-modern-guide-2025/</link><pubDate>Sun, 26 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ruby-concurrency-patterns-modern-guide-2025/</guid><description>&lt;p&gt;Ruby has evolved dramatically in its concurrency capabilities. From the early days of the Global Interpreter Lock (GVL) limiting true parallelism to Ruby 3.4&amp;rsquo;s sophisticated concurrency primitives, the landscape has transformed. This comprehensive guide explores modern Ruby concurrency patterns, helping you choose the right approach for your applications.&lt;/p&gt;&#10;&lt;h2 id="understanding-rubys-concurrency-evolution"&gt;Understanding Ruby&amp;rsquo;s Concurrency Evolution &lt;a class="hlink" href="#understanding-rubys-concurrency-evolution" aria-label="Link to Understanding Ruby’s Concurrency Evolution"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Ruby&amp;rsquo;s concurrency story began with threads hampered by the GVL, evolved through fibers for cooperative concurrency, and now includes Ractors for true parallelism. Each approach serves specific use cases, and understanding when to use each is crucial for building performant applications.&lt;/p&gt;</description></item><item><title>How To Convert Customers With Cold Emails | Startup School</title><link>https://jetthoughts.com/blog/how-convert-customers-with-cold-emails-startup-school/</link><pubDate>Sat, 25 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-convert-customers-with-cold-emails-startup-school/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=7Kh_fpxP1yY"&gt;&lt;img src="https://jetthoughts.com/blog/how-convert-customers-with-cold-emails-startup-school/file_0_hu_744e928f4e172fbe.webp" srcset="https://jetthoughts.com/blog/how-convert-customers-with-cold-emails-startup-school/file_0_hu_744e928f4e172fbe.webp 800w, https://jetthoughts.com/blog/how-convert-customers-with-cold-emails-startup-school/file_0_hu_b56b0fbb84024a87.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="How To Convert Customers With Cold Emails | Startup School" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In the world of startups, cold emailing can be a game changer. Whether you&amp;rsquo;re looking to boost sales, recruit talent, or forge new partnerships, knowing how to craft effective cold emails is essential. In this article, we’ll explore key strategies shared by YC Group Partner Aaron Epstein on how to write cold emails that not only get opened but also convert leads into customers.&lt;/p&gt;</description></item><item><title>Rails 8.0 Enterprise Migration Guide: Complete Strategy for Production Applications</title><link>https://jetthoughts.com/blog/rails-8-enterprise-migration-guide/</link><pubDate>Sat, 25 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rails-8-enterprise-migration-guide/</guid><description>&lt;h1 id="rails-80-enterprise-migration-guide-complete-strategy-for-production-applications"&gt;Rails 8.0 Enterprise Migration Guide: Complete Strategy for Production Applications &lt;a class="hlink" href="#rails-80-enterprise-migration-guide-complete-strategy-for-production-applications" aria-label="Link to Rails 8.0 Enterprise Migration Guide: Complete Strategy for Production Applications"&gt;#&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Rails 8.0 represents a paradigm shift in how we build and deploy Rails applications. With its #NOBUILD and #NOPAAS philosophy, Rails 8 eliminates many external dependencies while introducing powerful new features like Solid Cache, Solid Queue, and built-in authentication generators. For enterprise applications, this migration offers significant opportunities to reduce infrastructure complexity and operational costs.&lt;/p&gt;</description></item><item><title>Unlocking Potential: Innovative Strategies for Making Money with Software in 2025</title><link>https://jetthoughts.com/blog/unlocking-potential-innovative-strategies-for-making-money-with-software-in-2025/</link><pubDate>Sat, 25 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-potential-innovative-strategies-for-making-money-with-software-in-2025/</guid><description>&lt;p&gt;In 2025, making money with software is all about creativity and innovation. With technology advancing at a rapid pace, there are endless ways to earn a living or supplement your income. Whether you&amp;rsquo;re diving into the gig economy, leveraging social media, or exploring new e-commerce platforms, the opportunities are vast and varied. This article explores some of the most promising strategies for using software to boost your earnings in the coming year.&lt;/p&gt;</description></item><item><title>Once You Identify The Problem And Fix It, You Can Always Launch Again</title><link>https://jetthoughts.com/blog/once-you-identify-problem-fix-it-can-always-launch-again/</link><pubDate>Fri, 24 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/once-you-identify-problem-fix-it-can-always-launch-again/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=PHgqbdcWTuk"&gt;&lt;img src="https://jetthoughts.com/blog/once-you-identify-problem-fix-it-can-always-launch-again/file_0_hu_cbc067431482fa02.webp" srcset="https://jetthoughts.com/blog/once-you-identify-problem-fix-it-can-always-launch-again/file_0_hu_cbc067431482fa02.webp 800w, https://jetthoughts.com/blog/once-you-identify-problem-fix-it-can-always-launch-again/file_0_hu_1cefa4e78a953857.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Once You Identify The Problem And Fix It, You Can Always Launch Again" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In the world of startups, facing challenges is part of the journey. When a product is out there and nobody seems to use it, it can feel disheartening. But the best founders don’t just cry over it; they see it as a chance to learn and adapt. They approach the situation like a puzzle that needs solving, treating every setback as an opportunity to diagnose and improve.&lt;/p&gt;</description></item><item><title>TDD Workflow Automation Rails Guide 2025</title><link>https://jetthoughts.com/blog/tdd-workflow-automation-rails-teams/</link><pubDate>Thu, 23 Jan 2025 10:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/tdd-workflow-automation-rails-teams/</guid><description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: Automated TDD workflows reduce test feedback time from 30+ minutes to under 30 seconds, enabling true test-driven development at scale. Here&amp;rsquo;s the complete toolchain and methodology we use with Rails client teams—including our proprietary anti-test-smell framework and shameless green refactoring approach.&lt;/p&gt;&#10;&lt;h2 id="why-tdd-slows-teams-down-and-how-automation-fixes-it"&gt;Why TDD Slows Teams Down (And How Automation Fixes It) &lt;a class="hlink" href="#why-tdd-slows-teams-down-and-how-automation-fixes-it" aria-label="Link to Why TDD Slows Teams Down (And How Automation Fixes It)"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&amp;ldquo;We practice TDD, but our test suite takes 35 minutes to run.&amp;rdquo;&lt;/p&gt;</description></item><item><title>The Essential Skills Every Rails Engineer Needs to Succeed in 2025</title><link>https://jetthoughts.com/blog/essential-skills-every-rails-engineer-needs-succeed-in-2025/</link><pubDate>Thu, 23 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/essential-skills-every-rails-engineer-needs-succeed-in-2025/</guid><description>&lt;p&gt;Being a Rails engineer in 2025 means being ready for a constantly changing tech world. Rails is still a big deal for web development, but it&amp;rsquo;s not just about knowing the framework. It&amp;rsquo;s also about getting the hang of Ruby, diving into databases, and working with front-end stuff. Plus, you need to be good with people and always willing to learn new things. If you want to be a top-notch Rails engineer, you&amp;rsquo;ve got to keep up with all these skills.&lt;/p&gt;</description></item><item><title>When Machines Learn to Delete: An 8-Week Experiment in AI Autonomy</title><link>https://jetthoughts.com/blog/when-machines-learn-delete-an-8/</link><pubDate>Thu, 23 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/when-machines-learn-delete-an-8/</guid><description>&lt;p&gt;In 8 weeks, AI agents achieved:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;-73%&lt;/strong&gt; code duplication&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;-81%&lt;/strong&gt; breaking changes&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;4x&lt;/strong&gt; deployment confidence&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;-40%&lt;/strong&gt; maintenance burden&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Not by coding faster - but by unlearning decades of human dysfunction.&lt;/p&gt;&#10;&lt;hr&gt;&#10;&lt;h2 id="tldr-story-teaser"&gt;TL;DR Story Teaser &lt;a class="hlink" href="#tldr-story-teaser" aria-label="Link to TL;DR Story Teaser"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;When I first set AI agents loose on my codebase, I expected magic. Instead, I got a &lt;strong&gt;perfect 10k lines of duplication&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;By week 2, the agents had created &lt;strong&gt;seven different authentication systems&lt;/strong&gt;. They weren’t broken. They were simply &lt;em&gt;imitating us&lt;/em&gt;: duplicating, hoarding, avoiding deletion.&lt;/p&gt;</description></item><item><title>Y Combinator Co-Founder Jessica Livingston on the Beginnings of YC</title><link>https://jetthoughts.com/blog/y-combinator-co-founder-jessica-livingston-on-beginnings-of-yc/</link><pubDate>Wed, 22 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/y-combinator-co-founder-jessica-livingston-on-beginnings-of-yc/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=ywdFD0cAq2E"&gt;&lt;img src="https://jetthoughts.com/blog/y-combinator-co-founder-jessica-livingston-on-beginnings-of-yc/file_0_hu_1e5886200452fda5.webp" srcset="https://jetthoughts.com/blog/y-combinator-co-founder-jessica-livingston-on-beginnings-of-yc/file_0_hu_1e5886200452fda5.webp 800w, https://jetthoughts.com/blog/y-combinator-co-founder-jessica-livingston-on-beginnings-of-yc/file_0_hu_ee304bdf0302c0e.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Y Combinator Co-Founder Jessica Livingston on the Beginnings of YC" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;In the early days of startup culture, there was a significant gap in funding options for entrepreneurs. Jessica Livingston, co-founder of Y Combinator, shares insights into how YC was born out of necessity, aiming to fill that void for early-stage startups.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Y Combinator was created to support early-stage startups.&lt;/li&gt;&#10;&lt;li&gt;The funding landscape in 2005 was limited, especially in Boston.&lt;/li&gt;&#10;&lt;li&gt;YC aimed to provide small checks to help founders test their ideas.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-need-for-early-stage-funding"&gt;The Need For Early-Stage Funding &lt;a class="hlink" href="#the-need-for-early-stage-funding" aria-label="Link to The Need For Early-Stage Funding"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Back in 2005, the startup scene was quite different. If you wanted funding, you had two main options: venture capitalists or random angels. Venture capitalists were looking for businesses that were already somewhat established. They wanted business plans and tested ideas. On the other hand, there weren&amp;rsquo;t many angel investors around, and small seed funds were practically non-existent.&lt;/p&gt;</description></item><item><title>Building Trust at Scale: How ToolTime Runs 76 Microservices through Empowerment</title><link>https://jetthoughts.com/blog/building-trust-at-scale-how-tooltime-runs-76-microservices-through-empowerment-startup-management/</link><pubDate>Tue, 21 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/building-trust-at-scale-how-tooltime-runs-76-microservices-through-empowerment-startup-management/</guid><description>&lt;p&gt;If you&amp;rsquo;re an engineering leader wrestling with scaling teams while preserving autonomy, this story will transform your thoughts about trust and technical leadership.&lt;/p&gt;&#10;&lt;p&gt;I&amp;rsquo;ve spent months exploring how Berlin&amp;rsquo;s top tech companies handle growth. But what I found at &lt;a href="https://www.tooltime.app/"&gt;ToolTime&lt;/a&gt; wasn&amp;rsquo;t just another management philosophy – a masterclass in building self-sustaining engineering cultures.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/building-trust-at-scale-how-tooltime-runs-76-microservices-through-empowerment-startup-management/file_0_hu_d97cdc87dcdf5e53.webp" srcset="https://jetthoughts.com/blog/building-trust-at-scale-how-tooltime-runs-76-microservices-through-empowerment-startup-management/file_0_hu_d97cdc87dcdf5e53.webp 800w, https://jetthoughts.com/blog/building-trust-at-scale-how-tooltime-runs-76-microservices-through-empowerment-startup-management/file_0_hu_d97cdc87dcdf5e53.webp 800w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="800" alt="Slawomir Smiechura Photo" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Picture this: 76 microservices, 20 developers, no dedicated SRE team, and zero traditional managers. Impossible? That&amp;rsquo;s what I thought, too. However, ToolTime&amp;rsquo;s approach challenges everything we assume about technical leadership and team scaling.&lt;/p&gt;</description></item><item><title>Why Choosing the Right MVP Software Development Company is Crucial for Startup Success in 2025</title><link>https://jetthoughts.com/blog/why-choosing-right-mvp-software-development-company-crucial-for-startup-success-in-2025/</link><pubDate>Tue, 21 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/why-choosing-right-mvp-software-development-company-crucial-for-startup-success-in-2025/</guid><description>&lt;p&gt;Starting a business is tough, especially if you&amp;rsquo;re trying to break into the tech world. One of the first things you&amp;rsquo;ll need is a Minimum Viable Product, or MVP. But here&amp;rsquo;s the catch—choosing the right MVP software development company can make or break your startup. Why? Because these companies help you get your MVP out there fast, without blowing your budget. And in 2025, with competition fiercer than ever, getting this right is more important than ever. So what should you look for? Experience, communication skills, and post-launch support, for starters. Let&amp;rsquo;s dive into why picking the right partner is so crucial.&lt;/p&gt;</description></item><item><title>Unlocking Success: Innovative Strategies to Find Employees for Free in 2025</title><link>https://jetthoughts.com/blog/unlocking-success-innovative-strategies-find-employees-for-free-in-2025/</link><pubDate>Mon, 20 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-success-innovative-strategies-find-employees-for-free-in-2025/</guid><description>&lt;p&gt;Finding employees without spending a dime might seem impossible, but in 2025, it&amp;rsquo;s all about creativity and smart strategies. The modern job market is filled with untapped resources and innovative methods to attract talent without breaking the bank. Whether you&amp;rsquo;re a startup or an established business, these approaches can help you build a strong team without the hefty price tag. Let&amp;rsquo;s dive into some key takeaways to get you started on this cost-effective recruitment journey.&lt;/p&gt;</description></item><item><title>Understanding the Distinctions: Web Development and Software Development Explained</title><link>https://jetthoughts.com/blog/understanding-distinctions-web-development-software-explained/</link><pubDate>Sun, 19 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/understanding-distinctions-web-development-software-explained/</guid><description>&lt;p&gt;When it comes to tech careers, web development and software development often get tossed around like they&amp;rsquo;re the same thing. But they&amp;rsquo;re not. Web development is like crafting the storefront of a shop, making it look good and work well for customers. Software development, on the other hand, is like building tools and applications that people use, whether on a computer, phone, or other devices. Both are super important in the tech world, but they require different skills and focus on different things. Let&amp;rsquo;s dive into what sets them apart and what you need to know if you&amp;rsquo;re thinking about a career in either field.&lt;/p&gt;</description></item><item><title>pgvector Rails Production Guide: Semantic Search 2025</title><link>https://jetthoughts.com/blog/pgvector-rails-tutorial-production-semantic-search/</link><pubDate>Sat, 18 Jan 2025 10:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/pgvector-rails-tutorial-production-semantic-search/</guid><description>&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: pgvector runs vector similarity search inside the PostgreSQL you already operate, which removes a service, a bill, and a synchronisation path. Here&amp;rsquo;s how to migrate a Rails app off an external vector database.&lt;/p&gt;&#10;&lt;h2 id="why-am-i-paying-for-a-separate-vector-database"&gt;Why Am I Paying for a Separate Vector Database? &lt;a class="hlink" href="#why-am-i-paying-for-a-separate-vector-database" aria-label="Link to Why Am I Paying for a Separate Vector Database?"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;A separate vector database means a second store holding a copy of your data, a sync path between the two, a second uptime dependency, and a bill. For a catalogue that already lives in Postgres, every one of those is a cost you took on to get one feature.&lt;/p&gt;</description></item><item><title>Reviving Defense Technology: Silicon Valley's Next Chapter</title><link>https://jetthoughts.com/blog/reviving-defense-technology-silicon-valleys-next-chapter/</link><pubDate>Sat, 18 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/reviving-defense-technology-silicon-valleys-next-chapter/</guid><description>&lt;p&gt;The U.S. has long been a leader in defense technology, but recent trends show that the defense contractors we rely on have become sluggish and inefficient. New tech companies, especially those emerging from Silicon Valley, like Palantir and SpaceX, are stepping up to fill this gap. As we gear up for the next Y Combinator batch, there’s hope that more founders will venture into this space.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;U.S. defense technology is at a crossroads.&lt;/li&gt;&#10;&lt;li&gt;Traditional defense contractors are becoming bloated and slow.&lt;/li&gt;&#10;&lt;li&gt;New tech companies are emerging as potential solutions.&lt;/li&gt;&#10;&lt;li&gt;Silicon Valley has deep roots in military R&amp;amp;D.&lt;/li&gt;&#10;&lt;li&gt;The next decade is crucial for revitalizing these connections.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Silicon Valley&amp;rsquo;s roots trace back to its origins as a research and development hub for the U.S. military. The very building where Y Combinator operates today was once a naval shipbuilding center during World War II. The machinery left behind serves as a reminder of this rich history.&lt;/p&gt;</description></item><item><title>The Future of Software Development and Web Development: Trends to Watch in 2025</title><link>https://jetthoughts.com/blog/future-of-software-development-web-trends-watch-in-2025/</link><pubDate>Fri, 17 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/future-of-software-development-web-trends-watch-in-2025/</guid><description>&lt;p&gt;Hey there! So, we&amp;rsquo;re diving into the future of software development and web development, looking ahead to 2025. It&amp;rsquo;s crazy how fast things are changing, right? With AI making coding easier, blockchain adding security, and cloud computing transforming everything, there&amp;rsquo;s a lot to keep up with. Not to mention, progressive web apps and low-code platforms are making waves too. Let&amp;rsquo;s break down what&amp;rsquo;s coming up and why it matters for anyone in the tech world.&lt;/p&gt;</description></item><item><title>Rails 8 Deep Dive: Solid Queue vs DelayedJob - Migration Guide for Production Apps</title><link>https://jetthoughts.com/blog/rails-8-solid-queue-migration-guide/</link><pubDate>Thu, 16 Jan 2025 19:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rails-8-solid-queue-migration-guide/</guid><description>&lt;p&gt;If you run DelayedJob at any volume you know the shape of the bad night: the worker pegged at 100% CPU, the jobs table grown to millions of rows, queries timing out, and the queue going backwards while you watch. Rails 8&amp;rsquo;s Solid Queue is a different design rather than a faster DelayedJob, and the difference shows up under contention rather than on a throughput chart. Here is what moving from one to the other actually involves.&lt;/p&gt;</description></item><item><title>Internal product teams: From cost center to profit driver</title><link>https://jetthoughts.com/blog/internal-product-teams-from-cost-center-to-profit-driver/</link><pubDate>Thu, 16 Jan 2025 10:00:00 -0500</pubDate><guid>https://jetthoughts.com/blog/internal-product-teams-from-cost-center-to-profit-driver/</guid><description>&lt;p&gt;Your internal product team costs $3M annually. The CFO wants to outsource everything. Your development backlog is 18 months deep. Business stakeholders are questioning every feature request.&lt;/p&gt;&#10;&lt;p&gt;Sound familiar?&lt;/p&gt;&#10;&lt;p&gt;If you&amp;rsquo;re leading internal products at a large corporation, you&amp;rsquo;ve probably been in this exact situation. We&amp;rsquo;ve worked with dozens of internal product leaders who face the same challenge: proving that their teams create real business value, not just technical overhead.&lt;/p&gt;</description></item><item><title>Complete Guide to Ruby on Rails AI Integration 2025</title><link>https://jetthoughts.com/blog/complete-guide-ruby-rails-ai-integration-2025/</link><pubDate>Thu, 16 Jan 2025 10:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/complete-guide-ruby-rails-ai-integration-2025/</guid><description>&lt;p&gt;Ruby on Rails developers face a critical decision in 2025: &lt;strong&gt;Which AI SDK should I use for my production Rails application?&lt;/strong&gt; With OpenAI&amp;rsquo;s GPT-4, Anthropic&amp;rsquo;s Claude, and emerging tools like LangChain.rb, the Ruby AI ecosystem has exploded. Yet most guides skip the production deployment challenges that CTOs and engineering teams actually face.&lt;/p&gt;&#10;&lt;p&gt;This guide solves that problem. You&amp;rsquo;ll learn how to integrate AI into Rails apps using battle-tested patterns, avoid costly mistakes, and deploy with confidence.&lt;/p&gt;</description></item><item><title>Rails performance at scale: 10K to 1M users roadmap</title><link>https://jetthoughts.com/blog/rails-performance-at-scale-10k-to-1m-users-roadmap/</link><pubDate>Thu, 16 Jan 2025 10:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rails-performance-at-scale-10k-to-1m-users-roadmap/</guid><description>&lt;p&gt;Your Rails app handles 10K users fine. But at 50K, everything breaks. Here&amp;rsquo;s the exact roadmap we&amp;rsquo;ve used to scale Rails applications from 10K to 1M users, complete with real metrics, code examples, and architecture decisions that actually work.&lt;/p&gt;&#10;&lt;p&gt;We&amp;rsquo;ve guided dozens of companies through this scaling journey. The patterns are predictable, the bottlenecks are known, and the solutions are proven. Let&amp;rsquo;s walk through each stage of growth and the specific optimizations that&amp;rsquo;ll get you there.&lt;/p&gt;</description></item><item><title>How to manage developers when you can't code</title><link>https://jetthoughts.com/blog/how-to-manage-developers-when-you-cant-code/</link><pubDate>Thu, 16 Jan 2025 09:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-to-manage-developers-when-you-cant-code/</guid><description>&lt;p&gt;Your dev team says they need two months. Is that reasonable? You have no idea.&lt;/p&gt;&#10;&lt;p&gt;This scenario plays out in thousands of startups every day. You&amp;rsquo;re brilliant at your business domain – maybe you&amp;rsquo;re a killer salesperson, a design genius, or an industry expert. But when your technical co-founder left or you&amp;rsquo;re hiring your first dev team, you&amp;rsquo;re suddenly responsible for managing people who speak in acronyms and seem to live in a world of mysterious complexity.&lt;/p&gt;</description></item><item><title>How YC Was Created With Jessica Livingston</title><link>https://jetthoughts.com/blog/how-yc-was-created-with-jessica-livingston/</link><pubDate>Thu, 16 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-yc-was-created-with-jessica-livingston/</guid><description>&lt;p&gt;In a recent conversation at the Lightcone podcast, Jessica Livingston, one of the co-founders of Y Combinator (YC), shared her insights on the early days of YC and the unique culture that has shaped it into a powerhouse for startups. Her stories reflect the passion and determination that fueled the creation of YC back in 2005.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;YC was founded to support early-stage startups with small checks to help them test their ideas.&lt;/li&gt;&#10;&lt;li&gt;Events and community building are central to YC&amp;rsquo;s approach, fostering connections among founders.&lt;/li&gt;&#10;&lt;li&gt;The first batch of YC was a magical experience, filled with eager founders and innovative ideas.&lt;/li&gt;&#10;&lt;li&gt;YC&amp;rsquo;s DNA emphasizes support for founders, encouraging them to pursue their visions.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-birth-of-y-combinator"&gt;The Birth Of Y Combinator &lt;a class="hlink" href="#the-birth-of-y-combinator" aria-label="Link to The Birth Of Y Combinator"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Jessica reminisced about the inception of YC, highlighting the lack of funding options for early-stage startups back in 2005. Traditional venture capitalists required extensive business plans and proof of concept, which discouraged many potential founders. Jessica and Paul Graham recognized this gap and decided to create a platform that would provide small amounts of funding to help founders quit their jobs and explore their ideas.&lt;/p&gt;</description></item><item><title>Kamal 2: Your First Rails Deploy</title><link>https://jetthoughts.com/blog/kamal-2.0-complete-rails-deployment-guide-deploy-without-heroku-in-2025/</link><pubDate>Wed, 15 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/kamal-2.0-complete-rails-deployment-guide-deploy-without-heroku-in-2025/</guid><description>&lt;p&gt;Kamal 2 moved the pieces that most published Kamal tutorials spend their time on. Copy one of those configs forward and the deploy stops before it opens an SSH connection:&lt;/p&gt;&#10;&lt;pre tabindex="0"&gt;&lt;code&gt;ERROR (Kamal::ConfigurationError): unknown key: traefik&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Kamal validates every top-level key, so a stale config fails at once instead of misbehaving quietly. That part is a gift. The catch is that the error names what died without naming its replacement, and &lt;code&gt;traefik&lt;/code&gt; is only the first key you&amp;rsquo;ll hit.&lt;/p&gt;</description></item><item><title>Rails Testing Best Practices 2025: Complete Guide</title><link>https://jetthoughts.com/blog/rails-testing-best-practices-complete-guide-2025/</link><pubDate>Wed, 15 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rails-testing-best-practices-complete-guide-2025/</guid><description>&lt;h1 id="rails-testing-best-practices-2025-complete-guide"&gt;Rails Testing Best Practices 2025: Complete Guide &lt;a class="hlink" href="#rails-testing-best-practices-2025-complete-guide" aria-label="Link to Rails Testing Best Practices 2025: Complete Guide"&gt;#&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Testing is the backbone of maintainable Rails applications. In 2025, the Rails testing ecosystem continues to evolve with improved tooling, clearer best practices, and better integration with modern development workflows. This comprehensive guide covers everything you need to know about testing Rails applications effectively.&lt;/p&gt;&#10;&lt;h2 id="table-of-contents"&gt;Table of Contents &lt;a class="hlink" href="#table-of-contents" aria-label="Link to Table of Contents"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;&#10;&lt;li&gt;&lt;a href="#introduction"&gt;Introduction to Rails Testing Philosophy&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#rspec-vs-minitest"&gt;RSpec vs Minitest: Making the Right Choice&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#tdd-methodology"&gt;Test-Driven Development (TDD) in Rails&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#unit-testing"&gt;Unit Testing Best Practices&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#integration-testing"&gt;Integration Testing Strategies&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#system-testing"&gt;System Testing and End-to-End Tests&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#test-coverage"&gt;Test Coverage and Quality Metrics&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#ci-cd-integration"&gt;CI/CD Integration&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#performance-testing"&gt;Performance Testing&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#anti-patterns"&gt;Common Anti-Patterns and Pitfalls&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="introduction"&gt;Introduction to Rails Testing Philosophy &lt;a class="hlink" href="#introduction" aria-label="Link to Introduction to Rails Testing Philosophy"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Rails has always emphasized testing as a core principle. The framework provides robust testing infrastructure out of the box, supporting multiple testing approaches to ensure your applications are reliable, maintainable, and bug-free.&lt;/p&gt;</description></item><item><title>Ruby on Rails Development Cost Guide 2025: Complete Pricing Breakdown</title><link>https://jetthoughts.com/blog/ruby-on-rails-development-cost-guide-2025-complete-pricing-breakdown/</link><pubDate>Wed, 15 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ruby-on-rails-development-cost-guide-2025-complete-pricing-breakdown/</guid><description>&lt;h1 id="ruby-on-rails-development-cost-guide-2025-what-you-really-need-to-budget"&gt;Ruby on Rails Development Cost Guide 2025: What You Really Need to Budget &lt;a class="hlink" href="#ruby-on-rails-development-cost-guide-2025-what-you-really-need-to-budget" aria-label="Link to Ruby on Rails Development Cost Guide 2025: What You Really Need to Budget"&gt;#&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;Thinking about building a Ruby on Rails application? You&amp;rsquo;re probably wondering about the elephant in the room: &lt;strong&gt;how much will this actually cost?&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;If you&amp;rsquo;ve been Googling &amp;ldquo;Ruby on Rails development cost&amp;rdquo; and getting frustrated with vague answers like &amp;ldquo;it depends,&amp;rdquo; you&amp;rsquo;re in the right place. This guide breaks down the real numbers you need to plan your budget effectively.&lt;/p&gt;</description></item><item><title>Understanding the Intersection of Software Development and Web Development: Key Insights for Aspiring Developers</title><link>https://jetthoughts.com/blog/understanding-intersection-of-software-development-web-key-insights-for/</link><pubDate>Wed, 15 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/understanding-intersection-of-software-development-web-key-insights-for/</guid><description>&lt;p&gt;Hey there! So, you&amp;rsquo;re thinking about diving into the world of software development and web development, huh? It&amp;rsquo;s a pretty exciting field with lots to learn and explore. Whether you&amp;rsquo;re just starting out or looking to expand your skills, understanding the intersection of these two areas can open up a lot of opportunities. Let&amp;rsquo;s break it down and see what key insights can help you on your journey.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Software development and web development are closely connected, each playing a vital role in creating digital solutions.&lt;/li&gt;&#10;&lt;li&gt;Learning coding languages like JavaScript, Python, or Ruby is essential for anyone looking to enter these fields.&lt;/li&gt;&#10;&lt;li&gt;Problem-solving is a big part of development, so practicing this skill can really set you apart.&lt;/li&gt;&#10;&lt;li&gt;Staying curious and always learning is crucial because technology is always changing.&lt;/li&gt;&#10;&lt;li&gt;Exploring different career paths like full stack development or freelancing can help you find what suits you best.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="the-basics-of-software-and-web-development"&gt;The Basics of Software and Web Development &lt;a class="hlink" href="#the-basics-of-software-and-web-development" aria-label="Link to The Basics of Software and Web Development"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="what-is-software-development"&gt;What is Software Development? &lt;a class="hlink" href="#what-is-software-development" aria-label="Link to What is Software Development?"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Software development is all about creating computer programs. It&amp;rsquo;s like building a digital toolbox for solving problems. This process involves writing code, testing it, and fixing bugs. You might work on apps for phones, &lt;em&gt;business software development&lt;/em&gt;, or even games. Each project can be unique, with its own challenges and rewards.&lt;/p&gt;</description></item><item><title>Fractional vs Full-Time CTO: Cost-Benefit Analysis for Growing Companies</title><link>https://jetthoughts.com/blog/fractional-vs-full-time-cto-cost-benefit-analysis-growing-companies/</link><pubDate>Tue, 14 Jan 2025 10:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/fractional-vs-full-time-cto-cost-benefit-analysis-growing-companies/</guid><description>&lt;pre tabindex="0"&gt;&lt;code&gt;💰 CTO INVESTMENT COMPARISON OVERVIEW&#10;┌────────────────────────────────────────────────────────────┐&#10;│ │ FRACTIONAL CTO │ FULL-TIME CTO │&#10;│────────────────────│────────────────│─────────────────────│&#10;│ 💵 Annual Cost │ $120K - $300K │ $470K - $815K │&#10;│ ⏱️ Time to Value │ 2-4 weeks │ 8-12 months │&#10;│ 📈 ROI Potential │ 200-400% │ 100-200% │&#10;│ 🎯 Team Size Sweet │ 5-40 people │ 40+ people │&#10;│ 💼 Equity Required │ None │ 1.5-4% │&#10;│ 🔄 Flexibility │ High │ Low │&#10;└────────────────────────────────────────────────────────────┘&#10;&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;For growing companies navigating technical leadership decisions, the &lt;strong&gt;fractional vs full-time CTO&lt;/strong&gt; choice represents one of the most significant financial and strategic investments. With total CTO compensation packages often exceeding $800K annually, the cost implications extend far beyond base salary considerations.&lt;/p&gt;</description></item><item><title>How to Assess Your Engineering Team's Health in 15 Minutes (Non-Technical Founder's Guide)</title><link>https://jetthoughts.com/blog/how-to-assess-engineering-team-health-15-minutes-non-technical-founder/</link><pubDate>Tue, 14 Jan 2025 10:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-to-assess-engineering-team-health-15-minutes-non-technical-founder/</guid><description>&lt;p&gt;As a non-technical founder, you probably know the sinking feeling of walking into your engineering team&amp;rsquo;s workspace and having absolutely no idea if things are going well or if your entire product is about to implode. You&amp;rsquo;ve been burned before – missed deadlines, budget overruns, and that one time your lead developer quit without warning, taking three months of critical knowledge with them.&lt;/p&gt;&#10;&lt;p&gt;Here&amp;rsquo;s the uncomfortable truth: &lt;strong&gt;most engineering assessments fail non-technical leaders because they focus on technical metrics that don&amp;rsquo;t actually predict team health or business success.&lt;/strong&gt; You don&amp;rsquo;t need to understand code to assess whether your engineering team is thriving or slowly falling apart.&lt;/p&gt;</description></item><item><title>Ruby on Rails in 2025: Why Smart CTOs Still Choose Rails for Rapid Development</title><link>https://jetthoughts.com/blog/ruby-on-rails-in-2025-why-smart-ctos-still-choose-rails-for-rapid-development/</link><pubDate>Tue, 14 Jan 2025 10:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ruby-on-rails-in-2025-why-smart-ctos-still-choose-rails-for-rapid-development/</guid><description>&lt;p&gt;Every few years, tech pundits declare Ruby on Rails dead. &amp;ldquo;Too slow,&amp;rdquo; they say. &amp;ldquo;Not modern enough.&amp;rdquo; &amp;ldquo;Everyone&amp;rsquo;s moving to microservices and containerization.&amp;rdquo; Yet here we are in 2025, and Rails is not just surviving—it&amp;rsquo;s thriving in ways that might surprise you.&lt;/p&gt;&#10;&lt;p&gt;As someone who&amp;rsquo;s helped dozens of founders and CTOs make technology decisions over the past two decades, I&amp;rsquo;ve seen frameworks come and go. Rails has consistently delivered on its core promise: making developers productive while building maintainable, scalable applications. But the story in 2025 is more nuanced than ever.&lt;/p&gt;</description></item><item><title>The Hidden Cost of Poor Development Vendor Management (And How to Fix It)</title><link>https://jetthoughts.com/blog/hidden-cost-poor-development-vendor-management-fix/</link><pubDate>Tue, 14 Jan 2025 10:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/hidden-cost-poor-development-vendor-management-fix/</guid><description>&lt;p&gt;A dev-shop engagement keeps two ledgers. The visible one is the invoice, and founders negotiate it hard. The hidden one starts filling up the first week the project slips: the hours you spend chasing status, the launch that moves a quarter while payroll keeps running, the emergency rates you pay a second team to understand what the first team built.&lt;/p&gt;&#10;&lt;p&gt;&#10;&lt;img src="https://jetthoughts.com/blog/hidden-cost-poor-development-vendor-management-fix/two-ledgers.svg" alt="The two ledgers of a dev-shop engagement: the visible ledger is the invoice you negotiate; the hidden ledger holds your own hours, the stalled launch, the knowledge premium, and paying twice - and it is where the budget actually breaks" width="720" height="480" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Building The World's Best Image Diffusion Model</title><link>https://jetthoughts.com/blog/building-worlds-best-image-diffusion-model/</link><pubDate>Tue, 14 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/building-worlds-best-image-diffusion-model/</guid><description>&lt;p&gt;In a recent episode of Lightcone, Suhail Doshi, founder of Playground, shared insights into creating a state-of-the-art AI image diffusion model. Playground allows users to interact with the model like a graphic designer, making it easier to generate images and text for various applications. Suhail discussed the challenges and breakthroughs his team faced while developing this innovative tool.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Playground offers a unique user experience, allowing natural language interaction.&lt;/li&gt;&#10;&lt;li&gt;The focus on text accuracy sets Playground apart from other models.&lt;/li&gt;&#10;&lt;li&gt;The model&amp;rsquo;s architecture is designed for high-quality image generation and prompt understanding.&lt;/li&gt;&#10;&lt;li&gt;Playground aims to revolutionize graphic design by making it accessible to everyone.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="what-is-playground"&gt;What Is Playground? &lt;a class="hlink" href="#what-is-playground" aria-label="Link to What Is Playground?"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Playground is an advanced image generation tool that allows users to create graphics by simply describing what they want in plain language. Unlike traditional graphic design software, Playground enables a more intuitive interaction, making it feel like you’re talking to a designer rather than typing commands.&lt;/p&gt;</description></item><item><title>The Developer Mindset: Why It's the First and Most Important Thing for Success</title><link>https://jetthoughts.com/blog/developer-mindset-first-important-thing-success/</link><pubDate>Mon, 13 Jan 2025 14:30:00 +0000</pubDate><guid>https://jetthoughts.com/blog/developer-mindset-first-important-thing-success/</guid><description>&lt;p&gt;Three months ago, I sat across from two developers with nearly identical resumes. Same computer science degree, same years of experience, same technical stack. One was thriving as a senior engineer at a rapidly growing startup. The other was stuck in junior roles, frustrated, and considering leaving tech entirely.&lt;/p&gt;&#10;&lt;p&gt;The difference? It wasn&amp;rsquo;t their coding skills, algorithmic knowledge, or technical expertise. It was something far more fundamental: &lt;strong&gt;their mindset&lt;/strong&gt;.&lt;/p&gt;&#10;&lt;p&gt;After studying 200+ developer careers and working with engineering teams for over a decade, I&amp;rsquo;ve discovered the uncomfortable truth: &lt;strong&gt;technical skills get you in the door, but mindset determines how far you&amp;rsquo;ll go&lt;/strong&gt;. The most successful developers aren&amp;rsquo;t necessarily the smartest programmers—they&amp;rsquo;re the ones who think about problems, learning, and growth in fundamentally different ways.&lt;/p&gt;</description></item><item><title>Unlocking Opportunities: How Marketplace Jobs Are Transforming the Job Market in 2025</title><link>https://jetthoughts.com/blog/unlocking-opportunities-how-marketplace-jobs-are-transforming-job-market-in-2025/</link><pubDate>Mon, 13 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-opportunities-how-marketplace-jobs-are-transforming-job-market-in-2025/</guid><description>&lt;p&gt;Marketplace jobs are really shaking things up in 2025. They&amp;rsquo;re not like your typical 9-to-5 gigs. Instead, they&amp;rsquo;re more flexible and tech-driven, offering a fresh way to work. As more people jump on this bandwagon, it&amp;rsquo;s changing how we think about employment. From boosting the economy to reshaping our work-life balance, marketplace jobs are making a big splash. But it&amp;rsquo;s not all smooth sailing; there are challenges too. Let&amp;rsquo;s dive into the key takeaways to see how these jobs are transforming the job market.&lt;/p&gt;</description></item><item><title>Unlocking Success: How MVP Development Services Can Propel Your Startup Forward</title><link>https://jetthoughts.com/blog/unlocking-success-how-mvp-development-services-can-propel-your-startup-forward/</link><pubDate>Mon, 13 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-success-how-mvp-development-services-can-propel-your-startup-forward/</guid><description>&lt;p&gt;Starting a new business is no small feat, and having a solid plan can make all the difference. One strategy that many startups find useful is developing a Minimum Viable Product, or MVP. It&amp;rsquo;s all about creating a basic version of your product to test the waters and gather feedback. This way, you can make sure you&amp;rsquo;re on the right track before investing too much time and money. MVP development services can be a game changer, helping you move forward with confidence.&lt;/p&gt;</description></item><item><title>Why Your Startup Needs a Single Source of Truth (And How to Create It)</title><link>https://jetthoughts.com/blog/why-your-startup-needs-single-source-of-truth-how-create-it-tutorial/</link><pubDate>Mon, 13 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/why-your-startup-needs-single-source-of-truth-how-create-it-tutorial/</guid><description>&lt;p&gt;In my years helping startups as a technical leader, one pattern emerges clearly: most early-stage failures stem from misalignment, not technical problems. GitHub&amp;rsquo;s own journey illustrates this perfectly. They succeeded not because they had the best technology, but because they mastered organization-wide alignment from day one.&lt;/p&gt;&#10;&lt;h2 id="the-real-problem-most-startups-face"&gt;The Real Problem Most Startups Face &lt;a class="hlink" href="#the-real-problem-most-startups-face" aria-label="Link to The Real Problem Most Startups Face"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;According to CB Insights&amp;rsquo; startup post-mortems analysis, 35% of startups fail due to misalignment between product and market. Another 14% fail from poor team dynamics. The technology itself? That causes only 6% of failures.&lt;/p&gt;</description></item><item><title>5 Warning Signs Your Startup Needs Technical Leadership</title><link>https://jetthoughts.com/blog/5-warning-signs-your-startup-needs-technical-leadership/</link><pubDate>Sun, 12 Jan 2025 16:30:00 +0000</pubDate><guid>https://jetthoughts.com/blog/5-warning-signs-your-startup-needs-technical-leadership/</guid><description>&lt;p&gt;Last month, I watched a Series A-bound startup implode in real time. Not because their product was bad—it was genuinely innovative. Not because they couldn&amp;rsquo;t raise money—investors were lined up. They failed because their founders ignored five critical warning signs until it was too late.&lt;/p&gt;&#10;&lt;p&gt;The CTO had been working 90-hour weeks for eight months, the engineering team was in quiet revolt, and what should have been a two-week integration took four months. By the time they called me, they&amp;rsquo;d lost three senior engineers, their lead investor was asking uncomfortable questions, and their &amp;ldquo;quick fix&amp;rdquo; had become a $2M problem.&lt;/p&gt;</description></item><item><title>Fractional CTO vs Full-Time CTO: Complete Comparison Guide 2025</title><link>https://jetthoughts.com/blog/fractional-cto-vs-full-time-cto-complete-comparison-2025/</link><pubDate>Sun, 12 Jan 2025 15:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/fractional-cto-vs-full-time-cto-complete-comparison-2025/</guid><description>&lt;p&gt;Choosing between a &lt;strong&gt;fractional CTO vs full-time CTO&lt;/strong&gt; is one of the most critical decisions for growing companies. With full-time CTO salaries reaching $650,000+ annually plus equity, many businesses are turning to fractional CTO services that deliver the same strategic expertise at 60-80% cost savings.&lt;/p&gt;&#10;&lt;p&gt;This comprehensive guide compares fractional and full-time CTO options across cost, commitment, expertise, and practical considerations to help you make the right decision for your company&amp;rsquo;s growth stage and budget.&lt;/p&gt;</description></item><item><title>When Your Startup Needs Emergency CTO Leadership: A Field Guide</title><link>https://jetthoughts.com/blog/when-your-startup-needs-emergency-cto-leadership/</link><pubDate>Sun, 12 Jan 2025 14:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/when-your-startup-needs-emergency-cto-leadership/</guid><description>&lt;p&gt;&lt;strong&gt;Emergency CTO leadership&lt;/strong&gt; is specialized technical crisis management that rapidly stabilizes failing startups through immediate intervention, team rebuilding, and systematic process improvement. Unlike traditional fractional CTO services, emergency leadership focuses on crisis resolution within 30-60 days.&lt;/p&gt;&#10;&lt;h2 id="what-is-emergency-cto-leadership"&gt;What Is Emergency CTO Leadership? &lt;a class="hlink" href="#what-is-emergency-cto-leadership" aria-label="Link to What Is Emergency CTO Leadership?"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Emergency CTO leadership provides:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Immediate technical crisis intervention&lt;/strong&gt; within 24-48 hours&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Rapid team stabilization&lt;/strong&gt; through confidence rebuilding and clear communication&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Technical debt prioritization&lt;/strong&gt; to prevent system failures&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Process implementation&lt;/strong&gt; for sustainable long-term growth&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Last Tuesday at 11:47 PM, my phone buzzed with one of &lt;em&gt;those&lt;/em&gt; calls. You know the ones—where someone&amp;rsquo;s speaking like they&amp;rsquo;ve had too much coffee, there&amp;rsquo;s frantic keyboard clicking in the background, and you can practically taste the controlled panic through the phone.&lt;/p&gt;</description></item><item><title>Ruby on Rails Development Cost Guide 2025: Complete Pricing Breakdown</title><link>https://jetthoughts.com/blog/ruby-on-rails-development-cost-guide-2025/</link><pubDate>Sun, 12 Jan 2025 10:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ruby-on-rails-development-cost-guide-2025/</guid><description>&lt;p&gt;Planning a Ruby on Rails project in 2025? Understanding development costs upfront is crucial for budget planning and making informed decisions. This comprehensive guide breaks down Rails development pricing, from simple MVPs to complex enterprise solutions, based on our 18+ years of experience delivering successful Rails projects at JetThoughts.&lt;/p&gt;&#10;&lt;h2 id="quick-cost-overview"&gt;Quick Cost Overview &lt;a class="hlink" href="#quick-cost-overview" aria-label="Link to Quick Cost Overview"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;table&gt;&#10;&#9;&lt;thead&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Project Type&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Timeline&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Cost Range&lt;/th&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;th&gt;Ideal For&lt;/th&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/thead&gt;&#10;&#9;&lt;tbody&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Simple MVP&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;2-4 months&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;$15,000 - $50,000&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Startups, proof of concepts&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;E-commerce Platform&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;4-8 months&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;$50,000 - $150,000&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Online stores, marketplaces&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;SaaS Application&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;6-12 months&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;$75,000 - $250,000&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Software as a service products&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&#9;&#9;&lt;tr&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;&lt;strong&gt;Enterprise Solution&lt;/strong&gt;&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;12+ months&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;$200,000 - $1,000,000+&lt;/td&gt;&#10;&#9;&#9;&#9;&#9;&#9;&lt;td&gt;Large-scale business systems&lt;/td&gt;&#10;&#9;&#9;&#9;&lt;/tr&gt;&#10;&#9;&lt;/tbody&gt;&#10;&lt;/table&gt;&#10;&lt;h2 id="ruby-on-rails-developer-hourly-rates-2025"&gt;Ruby on Rails Developer Hourly Rates 2025 &lt;a class="hlink" href="#ruby-on-rails-developer-hourly-rates-2025" aria-label="Link to Ruby on Rails Developer Hourly Rates 2025"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="by-experience-level"&gt;By Experience Level &lt;a class="hlink" href="#by-experience-level" aria-label="Link to By Experience Level"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;h4 id="junior-rails-developers-0-2-years"&gt;Junior Rails Developers (0-2 years) &lt;a class="hlink" href="#junior-rails-developers-0-2-years" aria-label="Link to Junior Rails Developers (0-2 years)"&gt;#&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Rate Range&lt;/strong&gt;: $40-80/hour&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Capabilities&lt;/strong&gt;: Basic CRUD operations, simple features, bug fixes&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Best For&lt;/strong&gt;: Simple functionality, maintenance tasks&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="mid-level-rails-developers-2-5-years"&gt;Mid-Level Rails Developers (2-5 years) &lt;a class="hlink" href="#mid-level-rails-developers-2-5-years" aria-label="Link to Mid-Level Rails Developers (2-5 years)"&gt;#&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Rate Range&lt;/strong&gt;: $80-150/hour&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Capabilities&lt;/strong&gt;: Complex features, API integrations, database optimization&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Best For&lt;/strong&gt;: Core application development, feature implementation&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="senior-rails-developers-5-years"&gt;Senior Rails Developers (5+ years) &lt;a class="hlink" href="#senior-rails-developers-5-years" aria-label="Link to Senior Rails Developers (5&amp;#43; years)"&gt;#&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Rate Range&lt;/strong&gt;: $150-250+/hour&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Capabilities&lt;/strong&gt;: Architecture design, performance optimization, team leadership&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Best For&lt;/strong&gt;: Technical decision making, complex problem solving&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="by-geographic-location"&gt;By Geographic Location &lt;a class="hlink" href="#by-geographic-location" aria-label="Link to By Geographic Location"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;h4 id="north-america--western-europe"&gt;North America &amp;amp; Western Europe &lt;a class="hlink" href="#north-america--western-europe" aria-label="Link to North America &amp;amp; Western Europe"&gt;#&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&#10;&lt;li&gt;Junior: $80-120/hour&lt;/li&gt;&#10;&lt;li&gt;Mid-level: $120-180/hour&lt;/li&gt;&#10;&lt;li&gt;Senior: $180-250+/hour&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="eastern-europe"&gt;Eastern Europe &lt;a class="hlink" href="#eastern-europe" aria-label="Link to Eastern Europe"&gt;#&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&#10;&lt;li&gt;Junior: $50-80/hour&lt;/li&gt;&#10;&lt;li&gt;Mid-level: $80-120/hour&lt;/li&gt;&#10;&lt;li&gt;Senior: $120-180/hour&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h4 id="asia--latin-america"&gt;Asia &amp;amp; Latin America &lt;a class="hlink" href="#asia--latin-america" aria-label="Link to Asia &amp;amp; Latin America"&gt;#&lt;/a&gt;&lt;/h4&gt;&lt;ul&gt;&#10;&lt;li&gt;Junior: $25-50/hour&lt;/li&gt;&#10;&lt;li&gt;Mid-level: $50-80/hour&lt;/li&gt;&#10;&lt;li&gt;Senior: $80-120/hour&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="detailed-project-cost-breakdowns"&gt;Detailed Project Cost Breakdowns &lt;a class="hlink" href="#detailed-project-cost-breakdowns" aria-label="Link to Detailed Project Cost Breakdowns"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="mvp-development-15000---50000"&gt;MVP Development ($15,000 - $50,000) &lt;a class="hlink" href="#mvp-development-15000---50000" aria-label="Link to MVP Development ($15,000 - $50,000)"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;A Minimum Viable Product focuses on core functionality to validate your business idea quickly.&lt;/p&gt;</description></item><item><title>Shape Up: A Founder's Guide to Not Wasting Your Runway</title><link>https://jetthoughts.com/blog/shape-up-founders-guide-not-wasting-your-runway-startup-tutorial/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/shape-up-founders-guide-not-wasting-your-runway-startup-tutorial/</guid><description>&lt;p&gt;Last month, a founder called me in panic mode. &amp;ldquo;Paul, we&amp;rsquo;ve burned through half our seed round, and our MVP isn&amp;rsquo;t even close to done. What are we doing wrong?&amp;rdquo;&lt;/p&gt;&#10;&lt;p&gt;I see this all too often. You have a brilliant idea, some funding, and endless enthusiasm. Then reality hits: building software is messy, timelines slip, and suddenly, your runway looks more like a short pier.&lt;/p&gt;&#10;&lt;p&gt;Look, I get it. I&amp;rsquo;ve been there too. After 20 years of building products and watching startups struggle, I&amp;rsquo;ve picked up a few tricks. Last year, we got Agent Inbox from whiteboard to working software in just 60 days. Not because we pulled all-nighters or hired an army of developers. We just changed how we thought about building.&lt;/p&gt;</description></item><item><title>The Outsourcing Trap: Why Your Product Deserves Better</title><link>https://jetthoughts.com/blog/outsourcing-trap-why-your-product-deserves-better-startup-tutorial/</link><pubDate>Sun, 12 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/outsourcing-trap-why-your-product-deserves-better-startup-tutorial/</guid><description>&lt;p&gt;Here&amp;rsquo;s my twenty years of battling bullshit practices in software development consulting. Every month, I meet founders who&amp;rsquo;ve been burned by outsourcing agencies promising unicorns and delivering donkeys.&lt;/p&gt;&#10;&lt;h2 id="reality-check"&gt;Reality Check &lt;a class="hlink" href="#reality-check" aria-label="Link to Reality Check"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Let me be clear: most development outsourcing is broken. Not just &amp;ldquo;needs improvement&amp;rdquo; broken, but fundamentally, structurally broken.&lt;/p&gt;&#10;&lt;p&gt;I saw this firsthand at JetThoughts when Agent Inbox came to us. They&amp;rsquo;d spent a year with an agency that promised &amp;ldquo;senior developers at competitive rates.&amp;rdquo; What they got was a GitHub repository full of copy-pasted Stack Overflow answers and a codebase that would make any self-respecting developer quit on the spot.&lt;/p&gt;</description></item><item><title>Innovative Strategies for Website Development for Startups in 2025</title><link>https://jetthoughts.com/blog/innovative-strategies-for-website-development-startups-in-2025/</link><pubDate>Sat, 11 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/innovative-strategies-for-website-development-startups-in-2025/</guid><description>&lt;p&gt;In 2025, the world of website development for startups is buzzing with new ideas and techniques. Startups are finding themselves in a rapidly changing environment where standing out is more important than ever. With tech evolving at lightning speed, businesses have to think outside the box to catch the eye of both customers and investors. This article dives into innovative strategies that startups can use to build their online presence, from using AI to crafting a unique brand story. If you&amp;rsquo;re looking to make your mark in the digital world, read on for some fresh insights.&lt;/p&gt;</description></item><item><title>How To Convert Customers With Cold Emails | Startup School</title><link>https://jetthoughts.com/blog/how-convert-customers-with-cold-emails-startup-school-2/</link><pubDate>Fri, 10 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-convert-customers-with-cold-emails-startup-school-2/</guid><description>&lt;p&gt;In the world of startups, cold emailing can be a game changer. It’s a tool that, when used correctly, can help you connect with potential customers, partners, or even mentors. In this article, we’ll explore effective strategies for writing cold emails that not only get opened but also convert leads into customers.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Warm intros are the best way to get responses.&lt;/li&gt;&#10;&lt;li&gt;Map out your conversion funnel to understand your goals.&lt;/li&gt;&#10;&lt;li&gt;Personalization is key to standing out in crowded inboxes.&lt;/li&gt;&#10;&lt;li&gt;Follow up persistently but thoughtfully.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-power-of-warm-intros"&gt;The Power Of Warm Intros &lt;a class="hlink" href="#the-power-of-warm-intros" aria-label="Link to The Power Of Warm Intros"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;The best way to get someone to respond to your email? &lt;strong&gt;Get a warm introduction.&lt;/strong&gt; This method can boost your response rate by two to three times compared to sending a cold email. To find warm intros, tap into your network. Look through your LinkedIn connections, friends, former coworkers, and alumni networks. You never know who might know the person you’re trying to reach.&lt;/p&gt;</description></item><item><title>Unlocking Success: The Best Software Development Tools to Elevate Your Projects in 2025</title><link>https://jetthoughts.com/blog/unlocking-success-best-software-development-tools-elevate-your-projects-in-2025/</link><pubDate>Thu, 09 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-success-best-software-development-tools-elevate-your-projects-in-2025/</guid><description>&lt;p&gt;In 2025, the world of software development is buzzing with innovation. As technology keeps advancing, developers and teams are on the lookout for the best tools to make their projects shine. From AI-driven coding to low-code platforms, there&amp;rsquo;s a tool for every need. But with so many options, how do you choose? This guide will help you navigate the top software development tools you should consider for your projects this year.&lt;/p&gt;</description></item><item><title>Innovative Software Development Tools and Techniques for 2025</title><link>https://jetthoughts.com/blog/innovative-software-development-tools-techniques-for-2025/</link><pubDate>Tue, 07 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/innovative-software-development-tools-techniques-for-2025/</guid><description>&lt;p&gt;Looking ahead to 2025, software development is buzzing with fresh tools and techniques. It&amp;rsquo;s not just about writing code anymore. Developers are tapping into AI, cloud tech, and even blockchain to make their work faster and more efficient. Whether you&amp;rsquo;re a seasoned pro or just getting started, there&amp;rsquo;s something new to learn and try out. Let&amp;rsquo;s dive into some of the key trends and tools that are shaping the future of software development.&lt;/p&gt;</description></item><item><title>The Times When Paranoia Fueled Technological Advancement</title><link>https://jetthoughts.com/blog/times-when-paranoia-fueled-technological-advancement/</link><pubDate>Tue, 07 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/times-when-paranoia-fueled-technological-advancement/</guid><description>&lt;p&gt;In a world where fear often drives innovation, the conversation between Dalton and Michael sheds light on how paranoia has played a role in some of the most significant technological advancements over the last 75 years. From the internet to cryptocurrency, the influence of conspiracy theories and distrust has shaped our modern landscape.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Paranoia can lead to significant technological advancements.&lt;/li&gt;&#10;&lt;li&gt;The internet was born from fears of nuclear war.&lt;/li&gt;&#10;&lt;li&gt;Cryptocurrency emerged as a response to distrust in traditional banking.&lt;/li&gt;&#10;&lt;li&gt;Clean energy advocates often use fear of environmental collapse to push for innovation.&lt;/li&gt;&#10;&lt;li&gt;AI development is influenced by concerns over control and ethics.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-birth-of-the-internet"&gt;The Birth of the Internet &lt;a class="hlink" href="#the-birth-of-the-internet" aria-label="Link to The Birth of the Internet"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;The internet, as we know it today, has its roots in a time of great fear. Originally funded by DARPA, the internet&amp;rsquo;s precursor, ARPANET, was designed to withstand nuclear attacks. The idea was simple: if cities were destroyed, the network would still function. This fear of annihilation drove the creation of a technology that now connects billions.&lt;/p&gt;</description></item><item><title>Weekly Ruby Roundup: Highlights from Ruby #4</title><link>https://jetthoughts.com/blog/weekly-ruby-roundup-highlights-from-4/</link><pubDate>Tue, 07 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/weekly-ruby-roundup-highlights-from-4/</guid><description>&lt;p&gt;This week in the Ruby community was bustling with activity, featuring a variety of articles and announcements that cater to developers and enthusiasts alike. From conference dates to innovative blogging tools, here’s a recap of the key highlights.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Rails World, Friendly.rb, and EuRuKo announced their 2025 conference dates.&lt;/li&gt;&#10;&lt;li&gt;Recommendations for blogging tools from community members.&lt;/li&gt;&#10;&lt;li&gt;Insights on overriding methods in Ruby on Rails.&lt;/li&gt;&#10;&lt;li&gt;A guide on returning multiple values from Ruby methods using Data objects.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="monday-short-ruby-newsletter"&gt;Monday: Short Ruby Newsletter &lt;a class="hlink" href="#monday-short-ruby-newsletter" aria-label="Link to Monday: Short Ruby Newsletter"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Every Monday, the Short Ruby Newsletter is published, providing updates and insights from the Ruby community. This week’s edition (116) included significant announcements:&lt;/p&gt;</description></item><item><title>Unlocking Opportunities: The Rise of Part Time Executive Roles in Today's Job Market</title><link>https://jetthoughts.com/blog/unlocking-opportunities-rise-of-part-time-executive-roles-in-todays-job-market/</link><pubDate>Mon, 06 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-opportunities-rise-of-part-time-executive-roles-in-todays-job-market/</guid><description>&lt;p&gt;Part-time executive roles are becoming a big thing in today&amp;rsquo;s job market. More and more executives are choosing to work part-time, and it&amp;rsquo;s changing the way companies think about leadership. This trend is not just about cutting costs or filling gaps; it&amp;rsquo;s about flexibility, work-life balance, and bringing in diverse skills. For companies, it&amp;rsquo;s a chance to get the expertise they need without the full-time commitment. For executives, it&amp;rsquo;s a way to keep their careers going while having more control over their time.&lt;/p&gt;</description></item><item><title>Mastering Debugging: Insights from Chelsea Troy on RUBY 663</title><link>https://jetthoughts.com/blog/mastering-debugging-insights-from-chelsea-troy-on-ruby-663/</link><pubDate>Sun, 05 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/mastering-debugging-insights-from-chelsea-troy-on-ruby-663/</guid><description>&lt;p&gt;In a recent episode of Ruby Rogues, Chelsea Troy shared her expertise on debugging, emphasizing the importance of honing one&amp;rsquo;s skills to become a proficient troubleshooter. The session, titled &amp;ldquo;Black-Belt Debugging with Chelsea Troy - RUBY 663,&amp;rdquo; provided listeners with valuable insights into improving their debugging techniques and instincts.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Active Improvement&lt;/strong&gt;: Debugging is a skill that can be actively improved through practice and learning.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Troubleshooting Instincts&lt;/strong&gt;: Developing strong troubleshooting instincts is crucial for effective debugging.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Techniques and Tools&lt;/strong&gt;: Various techniques and tools can enhance debugging efficiency.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-importance-of-debugging-skills"&gt;The Importance of Debugging Skills &lt;a class="hlink" href="#the-importance-of-debugging-skills" aria-label="Link to The Importance of Debugging Skills"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Debugging is an essential skill for developers, as it directly impacts the quality of software. Chelsea Troy highlighted that mastering debugging can lead to faster problem resolution and improved software performance. By refining these skills, developers can save time and resources, ultimately leading to more successful projects.&lt;/p&gt;</description></item><item><title>Over-Complicated Pricing Could Kill A Sales Process</title><link>https://jetthoughts.com/blog/over-complicated-pricing-could-kill-sales-process/</link><pubDate>Sun, 05 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/over-complicated-pricing-could-kill-sales-process/</guid><description>&lt;p&gt;In the world of sales, pricing strategies can make or break a deal. Recently, a discussion highlighted the importance of keeping pricing simple. Over-complicating pricing can lead to confusion and ultimately kill a sales process. Here’s what you need to know.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Simple pricing is crucial for successful sales.&lt;/li&gt;&#10;&lt;li&gt;Committed recurring revenue is better than usage-based pricing.&lt;/li&gt;&#10;&lt;li&gt;Economic downturns can impact revenue stability.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-importance-of-simple-pricing"&gt;The Importance Of Simple Pricing &lt;a class="hlink" href="#the-importance-of-simple-pricing" aria-label="Link to The Importance Of Simple Pricing"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;When it comes to pricing, simplicity is key. If your pricing structure is too complicated, potential customers might get lost in the details. They could end up feeling overwhelmed and confused, which is not a good place for a buyer to be. A straightforward pricing model helps customers understand what they’re paying for and why.&lt;/p&gt;</description></item><item><title>Revolutionizing Productivity: The Future of Developer Tooling in 2025</title><link>https://jetthoughts.com/blog/revolutionizing-productivity-future-of-developer-tooling-in-2025/</link><pubDate>Sat, 04 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/revolutionizing-productivity-future-of-developer-tooling-in-2025/</guid><description>&lt;p&gt;Developer tooling is on the brink of a major transformation as we head into 2025. With AI taking center stage, the way developers work is changing fast. From breaking down silos with unified platforms to shifting roles from code-heavy tasks to more strategic thinking, the landscape is evolving. As AI continues to integrate into the workflow, developers find themselves navigating new challenges and opportunities. This article explores these trends and what they mean for the future of development.&lt;/p&gt;</description></item><item><title>Understanding Optimistic and Pessimistic Locking in Ruby on Rails</title><link>https://jetthoughts.com/blog/understanding-optimistic-pessimistic-locking-in-ruby-on-rails/</link><pubDate>Fri, 03 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/understanding-optimistic-pessimistic-locking-in-ruby-on-rails/</guid><description>&lt;p&gt;When several people touch a database simultaneously, software conflicts can occur when more than one user tries to update the same record. The most sought-after way to avoid problems from this point of view is to lock the record the first user needs to change. Such conflicts are dealt with in Ruby on Rails using two locking strategies: Optimistic Locking and Pessimistic Locking. This article discusses these strategies, their differences, and how they can be implemented in Ruby on Rails.&lt;/p&gt;</description></item><item><title>Unlocking the Power of Hexagonal Architecture in Rails Development</title><link>https://jetthoughts.com/blog/unlocking-power-of-hexagonal-architecture-in-rails-development/</link><pubDate>Fri, 03 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-power-of-hexagonal-architecture-in-rails-development/</guid><description>&lt;p&gt;Last night, Fito and I watched Alistair Cockburn&amp;rsquo;s Hexagonal Architecture talk from the Tech Excellence Conference. We really enjoyed it, and despite thinking I already understood the pattern, I learned a ton. In fact, before you continue reading, you should go watch it. Go ahead! I&amp;rsquo;ll wait&amp;hellip;&lt;/p&gt;&#10;&lt;p&gt;Awesome!&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Understanding the Ports &amp;amp; Adapters pattern is crucial for decoupling business logic from I/O.&lt;/li&gt;&#10;&lt;li&gt;Rails can be adapted to fit the Hexagonal Architecture model, but it requires a shift in traditional practices.&lt;/li&gt;&#10;&lt;li&gt;Using adapters allows for easier technology swaps without altering business logic.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="understanding-the-ports--adapters-pattern"&gt;Understanding The Ports &amp;amp; Adapters Pattern &lt;a class="hlink" href="#understanding-the-ports--adapters-pattern" aria-label="Link to Understanding The Ports &amp;amp; Adapters Pattern"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;The Ports &amp;amp; Adapters Pattern, also known as Hexagonal Architecture, positions your application code at the center, surrounded by ports that connect to the outside world. These ports can be categorized into:&lt;/p&gt;</description></item><item><title>Why AI Hasn't Blown Our Minds…Yet</title><link>https://jetthoughts.com/blog/why-ai-hasnt-blown-our-mindsyet/</link><pubDate>Fri, 03 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/why-ai-hasnt-blown-our-mindsyet/</guid><description>&lt;p&gt;In a world buzzing with talk about artificial intelligence, many are left wondering why it hasn&amp;rsquo;t yet transformed our daily lives as expected. Dalton and Michael dive into the current state of AI, exploring its real-world applications and the hype surrounding it.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;AI is making strides in customer service, but it’s not as visible to everyday users.&lt;/li&gt;&#10;&lt;li&gt;Developers are experiencing significant productivity boosts with AI tools like GitHub Copilot.&lt;/li&gt;&#10;&lt;li&gt;The impact of AI is profound, even if it’s not immediately obvious.&lt;/li&gt;&#10;&lt;li&gt;Historical context shows that major tech revolutions take time to unfold.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-hype-cycle-of-ai"&gt;The Hype Cycle of AI &lt;a class="hlink" href="#the-hype-cycle-of-ai" aria-label="Link to The Hype Cycle of AI"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;The conversation around AI often swings between two extremes: it’s either overhyped or underhyped. The reality is that while some demos look impressive, the actual products can fall short. For instance, when you think about how often you use AI in your daily life, it might not be as frequent as you’d expect. Unlike the seamless integration of Google Search into our routines, AI hasn’t yet reached that level of ubiquity.&lt;/p&gt;</description></item><item><title>Essential Strategies to Hire Developers for Your Startup in 2025</title><link>https://jetthoughts.com/blog/essential-strategies-hire-developers-for-your-startup-in-2025/</link><pubDate>Thu, 02 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/essential-strategies-hire-developers-for-your-startup-in-2025/</guid><description>&lt;p&gt;Hiring developers for your startup in 2025 is no small task. With tech evolving at lightning speed and competition for talent fiercer than ever, you need a solid plan. Startups can&amp;rsquo;t afford to make mistakes when it comes to building their tech team. Whether you&amp;rsquo;re just starting out or looking to expand, understanding how to attract and keep the right developers is key. This guide will walk you through everything you need to know, from writing job descriptions to making sure your new hires stick around.&lt;/p&gt;</description></item><item><title>Unlocking Efficiency: How Internal Developer Platforms Transform Software Development in 2025</title><link>https://jetthoughts.com/blog/unlocking-efficiency-how-internal-developer-platforms-transform-software-development-in-2025/</link><pubDate>Thu, 02 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-efficiency-how-internal-developer-platforms-transform-software-development-in-2025/</guid><description>&lt;p&gt;In 2025, software development is getting a major upgrade with internal developer platforms (IDPs). These platforms are changing how developers work, making things faster and easier. Gone are the days of waiting for IT to set things up. Now, developers can do more on their own, thanks to self-service tools. This means more time to focus on creating cool stuff and less time dealing with setup hassles. Let&amp;rsquo;s dive into how IDPs are shaking things up in the tech world.&lt;/p&gt;</description></item><item><title>Mastering User Retention: Insights from Startup School</title><link>https://jetthoughts.com/blog/mastering-user-retention-insights-from-startup-school/</link><pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/mastering-user-retention-insights-from-startup-school/</guid><description>&lt;p&gt;In the world of startups, understanding user retention is crucial for success. In a recent episode of Startup School, David Lieb, a partner at Y Combinator, delves into the concept of &lt;strong&gt;cohort retention&lt;/strong&gt;. This method helps founders track how many new users continue to engage with their product over time, providing a clear picture of whether they’ve created something people truly want.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Cohort Retention Defined&lt;/strong&gt;: Track groups of new users over time to see how many return.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Defining Cohorts&lt;/strong&gt;: Group users by when they first used the product.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Active User Actions&lt;/strong&gt;: Choose meaningful actions to define what an active user is.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Time Periods Matter&lt;/strong&gt;: Select appropriate time frames for measuring retention.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Avoid Common Pitfalls&lt;/strong&gt;: Don’t misinterpret data by choosing the wrong metrics.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="understanding-cohort-retention"&gt;Understanding Cohort Retention &lt;a class="hlink" href="#understanding-cohort-retention" aria-label="Link to Understanding Cohort Retention"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Cohort retention is all about tracking the fraction of new users who keep using your product over time. It’s a straightforward concept, but many founders struggle to grasp its full implications. The key is to look at specific groups of users, or cohorts, rather than the entire user base. This approach gives a clearer picture of user behavior.&lt;/p&gt;</description></item><item><title>Unveiling Ghost Engineering: Insights from Breaking Change Podcast v25</title><link>https://jetthoughts.com/blog/unveiling-ghost-engineering-insights-from-breaking-change-podcast-v25/</link><pubDate>Wed, 01 Jan 2025 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unveiling-ghost-engineering-insights-from-breaking-change-podcast-v25/</guid><description>&lt;p&gt;In the latest episode of the Breaking Change podcast, host Justin Searls dives into the intriguing concept of &amp;ldquo;Ghost Engineering.&amp;rdquo; This episode, v25, explores the nuances of this emerging field, offering listeners a blend of technical insights and thought-provoking discussions.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Understanding Ghost Engineering&lt;/strong&gt;: The episode defines ghost engineering and its relevance in today&amp;rsquo;s tech landscape.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Practical Applications&lt;/strong&gt;: Listeners learn about real-world applications of ghost engineering in various industries.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Expert Opinions&lt;/strong&gt;: The podcast features insights from industry experts, providing a well-rounded perspective on the topic.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Future Trends&lt;/strong&gt;: Discussion on how ghost engineering might evolve and its potential impact on technology and society.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="what-is-ghost-engineering"&gt;What Is Ghost Engineering? &lt;a class="hlink" href="#what-is-ghost-engineering" aria-label="Link to What Is Ghost Engineering?"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Ghost engineering refers to the practice of creating systems and processes that operate seamlessly in the background, often without direct user interaction. This concept is becoming increasingly important as technology continues to advance, allowing for more intuitive and efficient user experiences.&lt;/p&gt;</description></item><item><title>Choosing the Right Software Development Company for Startups: A 2024 Guide</title><link>https://jetthoughts.com/blog/choosing-right-software-development-company-for-startups-2024-guide/</link><pubDate>Tue, 31 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/choosing-right-software-development-company-for-startups-2024-guide/</guid><description>&lt;p&gt;Choosing the right software development company for a startup is a big deal. It&amp;rsquo;s not just about finding someone to write code. It&amp;rsquo;s about picking a partner who can help you build something amazing, something that can grow and adapt as your business does. In 2024, the options are endless, but so are the challenges. Startups need to find a company that understands their unique needs, tight budgets, and ambitious goals. This guide will walk you through the key things to look for, making sure you&amp;rsquo;re set up for success from the get-go.&lt;/p&gt;</description></item><item><title>How To Live In The Social Media Matrix</title><link>https://jetthoughts.com/blog/how-live-in-social-media-matrix/</link><pubDate>Mon, 30 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-live-in-social-media-matrix/</guid><description>&lt;p&gt;In today’s digital age, we find ourselves entangled in a web of social media that often feels like a modern-day Matrix. Just like in the iconic film, where humans unknowingly serve as batteries for machines, we too are providing energy—our content—to powerful social media companies. This article explores the implications of our online presence and how we can navigate this landscape wisely.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Social media companies rely on user-generated content to thrive.&lt;/li&gt;&#10;&lt;li&gt;Everything posted online is permanent and can have long-term consequences.&lt;/li&gt;&#10;&lt;li&gt;Anonymity is an illusion; your online persona can be traced back to you.&lt;/li&gt;&#10;&lt;li&gt;Thoughtful posting can enhance your career and personal brand.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="understanding-the-matrix"&gt;Understanding The Matrix &lt;a class="hlink" href="#understanding-the-matrix" aria-label="Link to Understanding The Matrix"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;The Matrix, a film from the 90s, presents a world where humans are unknowingly trapped in a simulated reality, serving as energy sources for machines. In our context, social media platforms act as those machines, harvesting our energy through the content we create. Every post, photo, and comment contributes to their revenue, while we often overlook the value exchange happening behind the scenes.&lt;/p&gt;</description></item><item><title>Jason Meller Welcomes 1Password to the Rails Foundation</title><link>https://jetthoughts.com/blog/jason-meller-welcomes-1password-rails-foundation/</link><pubDate>Mon, 30 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/jason-meller-welcomes-1password-rails-foundation/</guid><description>&lt;p&gt;In a significant move for both the Rails community and 1Password, Jason Meller announced that 1Password has officially joined the Rails Foundation. This partnership aims to enhance the security and efficiency of web applications built on the Rails framework, leveraging 1Password&amp;rsquo;s expertise in password management and security solutions.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;1Password joins the Rails Foundation to bolster security in web applications.&lt;/li&gt;&#10;&lt;li&gt;The partnership focuses on integrating security best practices into the Rails ecosystem.&lt;/li&gt;&#10;&lt;li&gt;Jason Meller emphasizes the importance of collaboration in enhancing developer experience.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-significance-of-the-partnership"&gt;The Significance of the Partnership &lt;a class="hlink" href="#the-significance-of-the-partnership" aria-label="Link to The Significance of the Partnership"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;The collaboration between 1Password and the Rails Foundation marks a pivotal moment in the ongoing evolution of web application security. As developers increasingly prioritize security in their applications, the integration of 1Password&amp;rsquo;s tools and resources into the Rails framework is expected to provide significant benefits.&lt;/p&gt;</description></item><item><title>Ruby on Rails Best Practices: 8 Production Patterns for 2026</title><link>https://jetthoughts.com/blog/mastering-ruby-on-rails-best-practices-for-efficient-development-in-2024/</link><pubDate>Mon, 30 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/mastering-ruby-on-rails-best-practices-for-efficient-development-in-2024/</guid><description>&lt;p&gt;Ruby on Rails is still one of the go-to frameworks for web development in 2026. It&amp;rsquo;s known for making developers&amp;rsquo; lives easier with its conventions and a focus on getting things done fast. But to really get the most out of Rails, you gotta stick to some best practices. They help keep your code clean, your apps fast, and your users happy. In this article, we&amp;rsquo;ll break down some key practices you should follow to master Ruby on Rails in 2026.&lt;/p&gt;</description></item><item><title>Unlocking Opportunities: The Best Staffing Agencies to Elevate Your Career in 2024</title><link>https://jetthoughts.com/blog/unlocking-opportunities-best-staffing-agencies-elevate-your-career-in-2024/</link><pubDate>Mon, 30 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-opportunities-best-staffing-agencies-elevate-your-career-in-2024/</guid><description>&lt;p&gt;Looking to take your career to the next level in 2024? Staffing agencies might just be your secret weapon. These agencies connect job seekers with employers, offering a range of positions from temporary to permanent roles. They can save you time and effort by matching your skills with the right job opportunities. Here&amp;rsquo;s a look at some of the top staffing agencies that could help you find your next big career move.&lt;/p&gt;</description></item><item><title>Innovative Ruby on Rails Projects to Boost Your Development Skills in 2024</title><link>https://jetthoughts.com/blog/innovative-ruby-on-rails-projects-boost-your-development-skills-in-2024/</link><pubDate>Sun, 29 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/innovative-ruby-on-rails-projects-boost-your-development-skills-in-2024/</guid><description>&lt;p&gt;Ruby on Rails, often just called Rails, is a popular framework for building web applications. If you&amp;rsquo;re looking to sharpen your skills in 2024, diving into innovative Rails projects can be a game-changer. Whether you&amp;rsquo;re a newbie or a seasoned developer, these projects can offer fresh challenges and learning opportunities. This article will explore some exciting projects that can help you grow your development skills using Ruby on Rails.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Explore real-world projects to apply your Ruby on Rails skills.&lt;/li&gt;&#10;&lt;li&gt;Learn advanced techniques to enhance your Rails applications.&lt;/li&gt;&#10;&lt;li&gt;Integrate modern technologies like AI and Docker with Rails.&lt;/li&gt;&#10;&lt;li&gt;Optimize your Rails apps for better performance and security.&lt;/li&gt;&#10;&lt;li&gt;Engage with the Rails community to share and learn from others.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="exploring-real-world-ruby-on-rails-projects"&gt;Exploring Real-World Ruby on Rails Projects &lt;a class="hlink" href="#exploring-real-world-ruby-on-rails-projects" aria-label="Link to Exploring Real-World Ruby on Rails Projects"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/innovative-ruby-on-rails-projects-boost-your-development-skills-in-2024/file_0_hu_8206563f249ebdc0.webp" srcset="https://jetthoughts.com/blog/innovative-ruby-on-rails-projects-boost-your-development-skills-in-2024/file_0_hu_8206563f249ebdc0.webp 800w, https://jetthoughts.com/blog/innovative-ruby-on-rails-projects-boost-your-development-skills-in-2024/file_0_hu_196503675158b727.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="400" alt="Developer coding on laptop in a creative workspace." loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>10 Innovative Strategies to Improve Developer Experience in 2024</title><link>https://jetthoughts.com/blog/10-innovative-strategies-improve-developer-experience-in-2024/</link><pubDate>Sat, 28 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/10-innovative-strategies-improve-developer-experience-in-2024/</guid><description>&lt;p&gt;In the ever-evolving world of tech, developers are the backbone of innovation. But let&amp;rsquo;s be real, the journey can be a bit rocky. With new tools and techniques popping up every other day, it&amp;rsquo;s easy to feel overwhelmed. That&amp;rsquo;s why improving the developer experience is more crucial than ever. Whether you&amp;rsquo;re a startup or a tech giant, focusing on making life easier for your dev team can lead to amazing results. Here&amp;rsquo;s a look at ten strategies that can make a real difference in 2024.&lt;/p&gt;</description></item><item><title>Reviving the Ruby Community: Exciting Meetups Across Europe</title><link>https://jetthoughts.com/blog/reviving-ruby-community-exciting-meetups-across-europe/</link><pubDate>Sat, 28 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/reviving-ruby-community-exciting-meetups-across-europe/</guid><description>&lt;p&gt;The Ruby programming community is experiencing a vibrant resurgence in Europe, with numerous meetups and events being organized to foster collaboration and knowledge sharing among developers. This revival is marked by the re-establishment of groups like GenevaRB and the launch of new initiatives aimed at connecting Ruby enthusiasts across the continent.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;The Ruby meetup scene in Europe is experiencing a renaissance.&lt;/li&gt;&#10;&lt;li&gt;GenevaRB is back, offering unique traditions like gifting chocolate to speakers.&lt;/li&gt;&#10;&lt;li&gt;New initiatives like Ruby Europe are encouraging developers to connect.&lt;/li&gt;&#10;&lt;li&gt;Upcoming events include performance technique talks and opportunities for new speakers.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-resurgence-of-ruby-meetups"&gt;The Resurgence of Ruby Meetups &lt;a class="hlink" href="#the-resurgence-of-ruby-meetups" aria-label="Link to The Resurgence of Ruby Meetups"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;The Ruby programming language, known for its elegant syntax and powerful capabilities, is witnessing a revival in its community across Europe. This resurgence is characterized by a series of meetups that aim to bring together Ruby developers, share knowledge, and foster collaboration.&lt;/p&gt;</description></item><item><title>Sales Pre-PMF Should Be Done By The Founders</title><link>https://jetthoughts.com/blog/sales-pre-pmf-should-be-done-by-founders/</link><pubDate>Sat, 28 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/sales-pre-pmf-should-be-done-by-founders/</guid><description>&lt;p&gt;In the early stages of a startup, founders often find themselves at a crossroads when it comes to sales. While it may seem tempting to hire experienced salespeople to drive revenue, the reality is that founders are uniquely positioned to sell their own products, especially before achieving product-market fit (PMF).&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Founders are often the best salespeople for their products.&lt;/li&gt;&#10;&lt;li&gt;Sales before product-market fit requires a unique skill set.&lt;/li&gt;&#10;&lt;li&gt;Hiring salespeople too early can lead to misalignment and wasted resources.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-unique-role-of-founders-in-sales"&gt;The Unique Role of Founders in Sales &lt;a class="hlink" href="#the-unique-role-of-founders-in-sales" aria-label="Link to The Unique Role of Founders in Sales"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;When you&amp;rsquo;re building a product that you hope other businesses will buy, the good news is that &lt;strong&gt;you are capable of selling it&lt;/strong&gt;. However, the bad news is that you might be the only person who can effectively sell your product at the beginning. If you can&amp;rsquo;t sell your product yourself, it’s unlikely that you will find someone else who can.&lt;/p&gt;</description></item><item><title>Enhancing Productivity: The Ultimate Developer Experience Tool for 2024</title><link>https://jetthoughts.com/blog/enhancing-productivity-ultimate-developer-experience-tool-for-2024/</link><pubDate>Fri, 27 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/enhancing-productivity-ultimate-developer-experience-tool-for-2024/</guid><description>&lt;p&gt;In the fast-paced world of software development, having the right tools can make all the difference. As we move into 2024, developers are looking for tools that not only streamline their workflows but also enhance their overall experience. This article explores the top developer experience tools that promise to boost productivity and creativity in the coming year.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Developer experience tools are becoming essential for improving productivity in 2024.&lt;/li&gt;&#10;&lt;li&gt;Choosing the right tool depends on understanding your team&amp;rsquo;s specific needs.&lt;/li&gt;&#10;&lt;li&gt;AI-powered tools are increasingly popular for enhancing coding efficiency.&lt;/li&gt;&#10;&lt;li&gt;Integration with existing systems is crucial for a smooth workflow.&lt;/li&gt;&#10;&lt;li&gt;Security features are becoming a key consideration in tool selection.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="why-developer-experience-tools-matter-more-than-ever"&gt;Why Developer Experience Tools Matter More Than Ever &lt;a class="hlink" href="#why-developer-experience-tools-matter-more-than-ever" aria-label="Link to Why Developer Experience Tools Matter More Than Ever"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="understanding-the-developers-daily-grind"&gt;Understanding the Developer&amp;rsquo;s Daily Grind &lt;a class="hlink" href="#understanding-the-developers-daily-grind" aria-label="Link to Understanding the Developer’s Daily Grind"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Every day, developers balance multiple tasks. It&amp;rsquo;s not just about writing code. They&amp;rsquo;re debugging, testing, and often juggling several projects at once. This constant switching can be exhausting. That&amp;rsquo;s where &lt;em&gt;dev experience&lt;/em&gt; tools come in. These tools streamline tasks, making life a bit easier.&lt;/p&gt;</description></item><item><title>Are We In An AI Hype Cycle?</title><link>https://jetthoughts.com/blog/are-we-in-an-ai-hype-cycle/</link><pubDate>Thu, 26 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/are-we-in-an-ai-hype-cycle/</guid><description>&lt;p&gt;The recent surge in excitement around artificial intelligence (AI) has sparked discussions about whether we are witnessing a genuine technological revolution or merely another hype cycle reminiscent of the dot-com boom. The Lightcone hosts delve into the current state of AI, exploring its implications for startups and the broader tech landscape.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;The current AI landscape is marked by significant investment and interest, but skepticism remains about its sustainability.&lt;/li&gt;&#10;&lt;li&gt;Comparisons are drawn between the AI hype cycle and previous tech booms, particularly the crypto boom.&lt;/li&gt;&#10;&lt;li&gt;Founders are encouraged to embrace the current momentum, as it can lead to valuable opportunities.&lt;/li&gt;&#10;&lt;li&gt;The importance of understanding where value is created in the AI ecosystem is emphasized.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-current-state-of-ai"&gt;The Current State Of AI &lt;a class="hlink" href="#the-current-state-of-ai" aria-label="Link to The Current State Of AI"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;The conversation begins with the acknowledgment of &lt;strong&gt;Nvidia&lt;/strong&gt; becoming the most valuable company in the world, a testament to the massive investments flowing into AI technologies. However, concerns about overinvestment and the sustainability of these valuations loom large. The hosts reflect on the media&amp;rsquo;s portrayal of AI, often highlighting fears of a bubble similar to past tech booms.&lt;/p&gt;</description></item><item><title>Exciting Updates in Ruby on Rails: SQLite3 Extensions and More</title><link>https://jetthoughts.com/blog/exciting-updates-in-ruby-on-rails-sqlite3-extensions-more/</link><pubDate>Thu, 26 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/exciting-updates-in-ruby-on-rails-sqlite3-extensions-more/</guid><description>&lt;p&gt;This week in Ruby on Rails, significant updates have been announced, including support for loading SQLite3 extensions and enhancements to the framework&amp;rsquo;s functionality. These changes aim to improve the developer experience and streamline application development.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Introduction of a new Getting Started tutorial for building e-commerce apps.&lt;/li&gt;&#10;&lt;li&gt;1Password joins the Rails Foundation as a Core member.&lt;/li&gt;&#10;&lt;li&gt;Support for loading SQLite3 extensions via configuration.&lt;/li&gt;&#10;&lt;li&gt;New shard selector support for database connection switching.&lt;/li&gt;&#10;&lt;li&gt;Updates to Action Controller guides.&lt;/li&gt;&#10;&lt;li&gt;Improvements in Redis connection handling.&lt;/li&gt;&#10;&lt;li&gt;Changes to preload link tags for CSP compliance.&lt;/li&gt;&#10;&lt;li&gt;New suffix convention for parallel test databases.&lt;/li&gt;&#10;&lt;li&gt;Reset relations after bulk insert/upsert operations.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="new-getting-started-tutorial"&gt;New Getting Started Tutorial &lt;a class="hlink" href="#new-getting-started-tutorial" aria-label="Link to New Getting Started Tutorial"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;A new pull request has been submitted for community review, introducing a comprehensive Getting Started tutorial. This tutorial is designed to guide developers through building an e-commerce application using all the features of Rails 8, from initial setup to deployment. Feedback from the community is encouraged to refine this flagship resource.&lt;/p&gt;</description></item><item><title>Innovative Companies Using Rails: How They Leverage Ruby on Rails for Success in 2024</title><link>https://jetthoughts.com/blog/innovative-companies-using-rails-how-they-leverage-ruby-on-for-success-in-2024/</link><pubDate>Thu, 26 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/innovative-companies-using-rails-how-they-leverage-ruby-on-for-success-in-2024/</guid><description>&lt;p&gt;In the world of web development, Ruby on Rails is still kicking in 2024. This framework, known for its speed and simplicity, is the backbone for many successful companies. From travel giants to e-commerce leaders, Rails is the go-to for building dynamic and scalable web applications. Let&amp;rsquo;s check out how some big names are using Rails to stay ahead of the game.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Ruby on Rails is still a popular choice for web development in 2024, especially for companies looking for rapid development and scalability.&lt;/li&gt;&#10;&lt;li&gt;Airbnb uses Rails for its API integration, ensuring seamless operations between its front and back-end systems.&lt;/li&gt;&#10;&lt;li&gt;Shopify relies on Rails to handle its massive e-commerce platform, showcasing the framework&amp;rsquo;s ability to manage high-traffic sites.&lt;/li&gt;&#10;&lt;li&gt;GitHub, initially built on Rails, highlights the framework&amp;rsquo;s role in backend infrastructure, even as it transitions to other technologies.&lt;/li&gt;&#10;&lt;li&gt;Zendesk leverages Rails to power its customer support solutions, benefiting from the framework&amp;rsquo;s flexibility and scalability.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="airbnb-pioneering-travel-with-rails"&gt;Airbnb: Pioneering Travel with Rails &lt;a class="hlink" href="#airbnb-pioneering-travel-with-rails" aria-label="Link to Airbnb: Pioneering Travel with Rails"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="how-airbnb-scales-with-ruby-on-rails"&gt;How Airbnb Scales with Ruby on Rails &lt;a class="hlink" href="#how-airbnb-scales-with-ruby-on-rails" aria-label="Link to How Airbnb Scales with Ruby on Rails"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Airbnb is a giant in the travel world. They started with &lt;a href="https://distantjob.com/blog/ruby-on-rails-companies/"&gt;Ruby on Rails&lt;/a&gt; and still use it today. Why? Because it helps them grow. With millions of users, they need software that can handle lots of traffic. Rails does this well. It&amp;rsquo;s flexible and lets Airbnb add new features fast. They can keep up with what travelers want without missing a beat.&lt;/p&gt;</description></item><item><title>Discover the Top Software Companies in California: A Comprehensive Guide for 2024</title><link>https://jetthoughts.com/blog/discover-top-software-companies-in-california-comprehensive-guide-for-2024/</link><pubDate>Wed, 25 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/discover-top-software-companies-in-california-comprehensive-guide-for-2024/</guid><description>&lt;p&gt;California&amp;rsquo;s tech scene is insane. Everyone knows about Silicon Valley, right? It&amp;rsquo;s home to some of the biggest names in software and tech. If you&amp;rsquo;re curious about who&amp;rsquo;s leading the charge in 2024, you&amp;rsquo;re in luck. We&amp;rsquo;ve rounded up a list of the top software companies in California. From big players like Apple and Google to innovators like Tesla and Netflix, these companies are shaping the future. Dive in and see what makes these giants tick.&lt;/p&gt;</description></item><item><title>The ideal tech startup team structure for rapid growth</title><link>https://jetthoughts.com/blog/ideal-tech-startup-team-structure-for-rapid-growth/</link><pubDate>Wed, 25 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ideal-tech-startup-team-structure-for-rapid-growth/</guid><description>&lt;p&gt;Putting together a tech startup team is like piecing together a puzzle. There&amp;rsquo;s no one-size-fits-all, but getting the right team structure in place is key for growth. You need a mix of visionaries, tech wizards, and money gurus to make things happen. But it&amp;rsquo;s not just about filling roles; it&amp;rsquo;s about creating a structure that lets your team thrive and adapt as you scale. Let&amp;rsquo;s dig into what makes the ideal tech startup team structure for rapid growth.&lt;/p&gt;</description></item><item><title>Transform Your Business with Expert Front End Web Development Services</title><link>https://jetthoughts.com/blog/transform-your-business-with-expert-front-end-web-development-services/</link><pubDate>Tue, 24 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/transform-your-business-with-expert-front-end-web-development-services/</guid><description>&lt;p&gt;In today&amp;rsquo;s fast-paced digital world, having a strong online presence is key for any business. Front end web development services can help you achieve this by creating visually appealing and user-friendly websites. Whether you&amp;rsquo;re looking to boost user engagement, improve your brand image, or increase conversions, expert front end development can make a significant difference. By choosing the right development partner, you can ensure that your website not only looks great but also functions smoothly across all devices. Let&amp;rsquo;s explore the benefits and key takeaways of investing in professional front end web development services.&lt;/p&gt;</description></item><item><title>Unlocking the Secrets of Ruby Debugging: From Basics to Advanced Tools</title><link>https://jetthoughts.com/blog/unlocking-secrets-of-ruby-debugging-from-basics-advanced-tools/</link><pubDate>Tue, 24 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-secrets-of-ruby-debugging-from-basics-advanced-tools/</guid><description>&lt;p&gt;Debugging is a critical skill for Ruby developers, and a recent blog post from the RubyMine team sheds light on effective debugging techniques. The article, inspired by a presentation at the EuRuKo 2024 conference, explores various tools and methods to help developers tackle bugs efficiently.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Debugging is essential for identifying and fixing code issues.&lt;/li&gt;&#10;&lt;li&gt;Various tools are available, from simple puts statements to advanced debuggers.&lt;/li&gt;&#10;&lt;li&gt;Understanding the strengths and weaknesses of each tool is crucial for effective debugging.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-importance-of-debugging"&gt;The Importance of Debugging &lt;a class="hlink" href="#the-importance-of-debugging" aria-label="Link to The Importance of Debugging"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Every Ruby programmer faces challenges when their code does not behave as expected. Debugging is not just about fixing errors; it’s about understanding the intricacies of the language and writing more reliable code. The RubyMine team emphasizes that debugging is a skill that can be honed through practice and the right tools.&lt;/p&gt;</description></item><item><title>How To Influence Decision Makers</title><link>https://jetthoughts.com/blog/how-influence-decision-makers/</link><pubDate>Mon, 23 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-influence-decision-makers/</guid><description>&lt;p&gt;In today&amp;rsquo;s fast-paced world, the ability to influence decision-makers is crucial for anyone looking to advance their career, secure funding for a startup, or leave a lasting impact within an organization. Dalton Caldwell and Michael Seibel share valuable insights on how to effectively persuade those in power and create favorable outcomes.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Understand the importance of your personal brand.&lt;/li&gt;&#10;&lt;li&gt;Control your demeanor and attitude in decision-making environments.&lt;/li&gt;&#10;&lt;li&gt;Build a strong track record to enhance your influence.&lt;/li&gt;&#10;&lt;li&gt;Recognize the significance of your relationships and how others perceive you.&lt;/li&gt;&#10;&lt;li&gt;Avoid desperation; maintain a balanced perspective.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-importance-of-being-in-the-room"&gt;The Importance Of Being In The Room &lt;a class="hlink" href="#the-importance-of-being-in-the-room" aria-label="Link to The Importance Of Being In The Room"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Many pivotal decisions in our careers are made in rooms where we are not present. Whether it’s promotions, funding decisions, or product meetings, being absent can hinder your influence. To navigate this, it’s essential to understand how to make an impact even when you’re not physically there.&lt;/p&gt;</description></item><item><title>Mastering Rails with React: A Comprehensive Guide for 2024</title><link>https://jetthoughts.com/blog/mastering-rails-with-react-comprehensive-guide-for-2024/</link><pubDate>Mon, 23 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/mastering-rails-with-react-comprehensive-guide-for-2024/</guid><description>&lt;p&gt;If you&amp;rsquo;re looking to mix the power of Rails with the flexibility of React, this guide is for you. We&amp;rsquo;re diving into how these two can work together to make awesome web apps. From the basics to more advanced stuff, you&amp;rsquo;ll learn how to set up, build, and even scale your apps. Whether you&amp;rsquo;re just starting out or looking to polish your skills, there&amp;rsquo;s something here for everyone.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Understand how Rails and React can be combined to build dynamic web applications.&lt;/li&gt;&#10;&lt;li&gt;Learn the process of setting up a development environment for Rails with React.&lt;/li&gt;&#10;&lt;li&gt;Explore advanced techniques like creating RESTful APIs and managing user authentication.&lt;/li&gt;&#10;&lt;li&gt;Gain insights into optimizing your code for better performance.&lt;/li&gt;&#10;&lt;li&gt;Discover best practices for deploying and scaling your applications.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="getting-started-with-rails-and-react"&gt;Getting Started with Rails and React &lt;a class="hlink" href="#getting-started-with-rails-and-react" aria-label="Link to Getting Started with Rails and React"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/mastering-rails-with-react-comprehensive-guide-for-2024/file_0_hu_f27c529e3e60aa38.webp" srcset="https://jetthoughts.com/blog/mastering-rails-with-react-comprehensive-guide-for-2024/file_0_hu_f27c529e3e60aa38.webp 800w, https://jetthoughts.com/blog/mastering-rails-with-react-comprehensive-guide-for-2024/file_0_hu_6c366e23c69d5be0.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="400" alt="Laptop with code snippets on a desk next to coffee." loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Unlocking Opportunities: How Fractional Jobs Are Redefining the Future of Work</title><link>https://jetthoughts.com/blog/unlocking-opportunities-how-fractional-jobs-are-redefining-future-of-work/</link><pubDate>Mon, 23 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-opportunities-how-fractional-jobs-are-redefining-future-of-work/</guid><description>&lt;p&gt;Fractional jobs are shaking up the way we think about work. Instead of the usual 9-to-5 grind, more people are opting for roles that let them work part-time across different companies. This setup isn&amp;rsquo;t just a passing trend; it&amp;rsquo;s becoming a key part of the modern job market. With technology making it easier to connect with employers, fractional work is opening doors for both workers and businesses. Whether it&amp;rsquo;s about saving costs or finding the right talent, these jobs are changing the game.&lt;/p&gt;</description></item><item><title>Exploring the Future of Frontend Technology: Trends and Innovations for 2025</title><link>https://jetthoughts.com/blog/exploring-future-of-frontend-technology-trends-innovations-for-2025/</link><pubDate>Sun, 22 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/exploring-future-of-frontend-technology-trends-innovations-for-2025/</guid><description>&lt;p&gt;Frontend technology is always on the move, and by 2025, we&amp;rsquo;re expecting some pretty exciting shifts. From the buzz around micro frontends to the rise of AI in development, there&amp;rsquo;s a lot to look forward to. Developers are constantly on the hunt for the next big thing to make web experiences faster, smoother, and more interactive. This article dives into what&amp;rsquo;s coming up and how it might change the way we build and interact with web applications.&lt;/p&gt;</description></item><item><title>Mastering Multiple Returns in Ruby: The Power of Data.define</title><link>https://jetthoughts.com/blog/mastering-multiple-returns-in-ruby-power-of-datadefine/</link><pubDate>Sun, 22 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/mastering-multiple-returns-in-ruby-power-of-datadefine/</guid><description>&lt;p&gt;In the world of Ruby programming, returning multiple values from a method can often lead to confusion and bugs. A recent discussion highlighted the challenges developers face when using traditional methods to return multiple outputs. This article explores a modern solution using &lt;code&gt;Data.define&lt;/code&gt;, which simplifies the process and enhances code readability.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Returning multiple values can create confusion due to positional dependencies.&lt;/li&gt;&#10;&lt;li&gt;Using hashes can alleviate some issues but may introduce others.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;Data.define&lt;/code&gt; offers an immutable and clear way to return multiple values.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-challenge-of-returning-multiple-values"&gt;The Challenge of Returning Multiple Values &lt;a class="hlink" href="#the-challenge-of-returning-multiple-values" aria-label="Link to The Challenge of Returning Multiple Values"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Returning multiple values from a method in Ruby is a common practice, but it comes with its own set of challenges. For instance, consider the following method:&lt;/p&gt;</description></item><item><title>Choosing the Right Tech Stack for Your Next Project: Insights and Recommendations</title><link>https://jetthoughts.com/blog/choosing-right-tech-stack-for-your-next-project-insights-recommendations/</link><pubDate>Fri, 20 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/choosing-right-tech-stack-for-your-next-project-insights-recommendations/</guid><description>&lt;p&gt;In the ever-evolving world of technology, selecting the right tech stack for a new project can be a daunting task. A recent discussion on Reddit&amp;rsquo;s Rails community highlighted various considerations and suggestions for developers embarking on new ventures. This article summarizes the key takeaways from that conversation, providing insights into the best practices for tech stack selection.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Understand the project requirements thoroughly.&lt;/li&gt;&#10;&lt;li&gt;Consider the team&amp;rsquo;s expertise and familiarity with the technologies.&lt;/li&gt;&#10;&lt;li&gt;Evaluate the scalability and performance of the chosen stack.&lt;/li&gt;&#10;&lt;li&gt;Keep an eye on community support and documentation.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="understanding-project-requirements"&gt;Understanding Project Requirements &lt;a class="hlink" href="#understanding-project-requirements" aria-label="Link to Understanding Project Requirements"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Before diving into the selection of a tech stack, it is crucial to have a clear understanding of the project requirements. This includes:&lt;/p&gt;</description></item><item><title>Essential Strategies for Building a High-Performance Software Development Team in 2024</title><link>https://jetthoughts.com/blog/essential-strategies-for-building-high-performance-software-development-team-in-2024/</link><pubDate>Fri, 20 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/essential-strategies-for-building-high-performance-software-development-team-in-2024/</guid><description>&lt;p&gt;Building a top-notch software development team in 2024 isn&amp;rsquo;t just about having the right tech skills. It&amp;rsquo;s about creating a balanced mix of talents, encouraging open communication, and fostering a culture of continuous learning and growth. This article breaks down essential strategies to help you put together a team that not only meets but exceeds your goals.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Diversity in skills and backgrounds is crucial for a balanced team.&lt;/li&gt;&#10;&lt;li&gt;Open communication tools and feedback loops are vital for team success.&lt;/li&gt;&#10;&lt;li&gt;Agile methodologies help teams adapt and thrive in changing environments.&lt;/li&gt;&#10;&lt;li&gt;Continuous learning opportunities keep the team sharp and innovative.&lt;/li&gt;&#10;&lt;li&gt;A positive team culture boosts morale and productivity.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="assemble-a-diverse-team-of-experts"&gt;Assemble A Diverse Team Of Experts &lt;a class="hlink" href="#assemble-a-diverse-team-of-experts" aria-label="Link to Assemble A Diverse Team Of Experts"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/essential-strategies-for-building-high-performance-software-development-team-in-2024/file_0_hu_c37efe01c94c2653.webp" srcset="https://jetthoughts.com/blog/essential-strategies-for-building-high-performance-software-development-team-in-2024/file_0_hu_c37efe01c94c2653.webp 800w, https://jetthoughts.com/blog/essential-strategies-for-building-high-performance-software-development-team-in-2024/file_0_hu_a3f18e36c5389bba.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="400" alt="Diverse software developers collaborating in a modern workspace." loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>From SLIM to ERB: A Developer's Journey Back to Classic Templates</title><link>https://jetthoughts.com/blog/from-slim-erb-developers-journey-back-classic-templates/</link><pubDate>Fri, 20 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/from-slim-erb-developers-journey-back-classic-templates/</guid><description>&lt;p&gt;In a recent discussion on Reddit, a developer shared their experience of transitioning back to ERB (Embedded Ruby) after years of using SLIM (a lightweight templating engine). This shift has sparked a conversation among developers about the pros and cons of each templating system, highlighting personal preferences and the evolving landscape of Ruby on Rails development.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Personal Preference&lt;/strong&gt;: Developers have varying opinions on SLIM and ERB, often influenced by their specific project needs and personal coding styles.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Performance Considerations&lt;/strong&gt;: Some developers argue that SLIM offers better performance due to its concise syntax, while others prefer the readability of ERB.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Community Support&lt;/strong&gt;: ERB has a long-standing presence in the Ruby community, which can be beneficial for finding resources and support.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-shift-from-slim-to-erb"&gt;The Shift From SLIM to ERB &lt;a class="hlink" href="#the-shift-from-slim-to-erb" aria-label="Link to The Shift From SLIM to ERB"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;The developer&amp;rsquo;s return to ERB was motivated by several factors. After years of working with SLIM, they found that the simplicity and familiarity of ERB made it easier to collaborate with other developers who were also accustomed to this templating language.&lt;/p&gt;</description></item><item><title>How To Influence Decision Makers</title><link>https://jetthoughts.com/blog/how-influence-decision-makers-startup-tutorial/</link><pubDate>Fri, 20 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-influence-decision-makers-startup-tutorial/</guid><description>&lt;p&gt;In today&amp;rsquo;s fast-paced world, the ability to influence decision-makers is crucial for success. Whether you&amp;rsquo;re seeking a promotion, trying to secure funding for your startup, or aiming to leave a positive mark in your organization, understanding how to navigate these situations can set you apart. In this article, we explore key strategies to enhance your influence and create favorable outcomes.&lt;/p&gt;&#10;&lt;p&gt;{% youtube &lt;a href="https://youtu.be/8PB0l7x73rM"&gt;https://youtu.be/8PB0l7x73rM&lt;/a&gt; %}&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Understand the importance of your personal brand.&lt;/li&gt;&#10;&lt;li&gt;Control your demeanor and attitude in decision-making environments.&lt;/li&gt;&#10;&lt;li&gt;Build a strong track record to enhance your influence.&lt;/li&gt;&#10;&lt;li&gt;Recognize the significance of your relationships and how others perceive you.&lt;/li&gt;&#10;&lt;li&gt;Avoid desperation and maintain a balanced perspective.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-importance-of-being-in-the-room"&gt;The Importance Of Being In The Room &lt;a class="hlink" href="#the-importance-of-being-in-the-room" aria-label="Link to The Importance Of Being In The Room"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Many pivotal decisions are made in rooms where you may not be present. This includes promotions, funding decisions, and product meetings. To influence these outcomes, you must ensure that your presence is felt even when you&amp;rsquo;re not physically there.&lt;/p&gt;</description></item><item><title>Innovative Strategies in Software Development for Startups: Navigating the Challenges of 2024</title><link>https://jetthoughts.com/blog/innovative-strategies-in-software-development-for-startups-navigating-challenges-of-2024/</link><pubDate>Fri, 20 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/innovative-strategies-in-software-development-for-startups-navigating-challenges-of-2024/</guid><description>&lt;p&gt;Starting a business in 2024? You&amp;rsquo;re not alone. Many startups are jumping into the world of software development, trying to make their mark. It&amp;rsquo;s not just about having a cool idea anymore - it&amp;rsquo;s about executing it well. With tech changing faster than ever, new companies need to be smart about how they build and grow their software. This article dives into some fresh strategies that can help startups not just survive, but thrive in this fast-paced world.&lt;/p&gt;</description></item><item><title>Mastering Link Creation in Rails: Best Practices Unveiled</title><link>https://jetthoughts.com/blog/mastering-link-creation-in-rails-best-practices-unveiled/</link><pubDate>Fri, 20 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/mastering-link-creation-in-rails-best-practices-unveiled/</guid><description>&lt;p&gt;In the world of Ruby on Rails, creating URLs efficiently is crucial for developers. A recent discussion on Reddit&amp;rsquo;s Rails community highlighted various methods for generating &lt;code&gt;link_to&lt;/code&gt; URLs, showcasing preferences and best practices among seasoned developers. This article delves into the insights shared by the community, providing a comprehensive overview of the preferred techniques for creating links in Rails applications.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;The &lt;code&gt;link_to&lt;/code&gt; method is the most common way to create links in Rails.&lt;/li&gt;&#10;&lt;li&gt;Developers prefer using path helpers for cleaner and more maintainable code.&lt;/li&gt;&#10;&lt;li&gt;The use of URL options can enhance link functionality.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="understanding-the-link_to-method"&gt;Understanding The &lt;code&gt;link_to&lt;/code&gt; Method &lt;a class="hlink" href="#understanding-the-link_to-method" aria-label="Link to Understanding The link_to Method"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;The &lt;code&gt;link_to&lt;/code&gt; method in Rails is a powerful helper that allows developers to create hyperlinks easily. It takes two primary arguments: the text to be displayed and the URL to which the link points. Here’s a basic example:&lt;/p&gt;</description></item><item><title>Optimizing Search Performance with Elastic Search's Profile API</title><link>https://jetthoughts.com/blog/optimizing-search-performance-with-elastic-searchs-profile-api/</link><pubDate>Fri, 20 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/optimizing-search-performance-with-elastic-searchs-profile-api/</guid><description>&lt;p&gt;Recently, a production application faced significant delays in query times, with some searches taking up to 60 seconds. The application utilizes Elastic Search for customer searches, but as the database has grown over the years, the performance has suffered. This article explores how the Profile API in Elastic Search can be leveraged to diagnose and improve query performance.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Elastic Search&amp;rsquo;s Profile API provides detailed insights into query performance.&lt;/li&gt;&#10;&lt;li&gt;Limiting the number of fields in a query can significantly reduce search times.&lt;/li&gt;&#10;&lt;li&gt;Avoiding wildcard searches can enhance query efficiency.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="understanding-the-problem"&gt;Understanding the Problem &lt;a class="hlink" href="#understanding-the-problem" aria-label="Link to Understanding the Problem"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;The initial query used for searching customer data was written a decade ago and was designed to search across all fields in the customer index. As the number of documents increased, the time taken to execute these queries also grew, leading to frustrating delays for users.&lt;/p&gt;</description></item><item><title>Stop Looking for Product Market Fit</title><link>https://jetthoughts.com/blog/stop-looking-for-product-market-fit-startup-tutorial/</link><pubDate>Fri, 20 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/stop-looking-for-product-market-fit-startup-tutorial/</guid><description>&lt;p&gt;Everyone&amp;rsquo;s obsessed with product-market fit. As if it&amp;rsquo;s some magical moment when confetti falls from the sky and Mark Andreessen sends you a congratulatory text.&lt;/p&gt;&#10;&lt;p&gt;But here&amp;rsquo;s the thing: Product-market fit isn&amp;rsquo;t an event. It&amp;rsquo;s not something you find. It&amp;rsquo;s something you build. Slowly. Painfully. One customer at a time.&lt;/p&gt;&#10;&lt;h2 id="the-silicon-valley-trap"&gt;The Silicon Valley Trap &lt;a class="hlink" href="#the-silicon-valley-trap" aria-label="Link to The Silicon Valley Trap"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Silicon Valley wants you to think you need to:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Raise millions&lt;/li&gt;&#10;&lt;li&gt;Hire fast&lt;/li&gt;&#10;&lt;li&gt;Scale faster&lt;/li&gt;&#10;&lt;li&gt;Exit fastest&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;p&gt;Nonsense.&lt;/p&gt;</description></item><item><title>Unveiling Python 3.12: A Leap Forward in Programming Excellence</title><link>https://jetthoughts.com/blog/unveiling-python-312-leap-forward-in-programming-excellence/</link><pubDate>Fri, 20 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unveiling-python-312-leap-forward-in-programming-excellence/</guid><description>&lt;p&gt;The Python Software Foundation has officially released Python 3.12 on October 2, 2023, introducing a host of new features and performance enhancements. This latest version aims to improve the developer experience and optimize the language for modern programming needs.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Introduction of new syntax features for better code readability.&lt;/li&gt;&#10;&lt;li&gt;Significant performance improvements across various modules.&lt;/li&gt;&#10;&lt;li&gt;Enhanced security measures with verified code implementations.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="new-syntax-features"&gt;New Syntax Features &lt;a class="hlink" href="#new-syntax-features" aria-label="Link to New Syntax Features"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Python 3.12 brings exciting syntax updates that enhance code clarity and maintainability. Notable changes include:&lt;/p&gt;</description></item><item><title>Effective Strategies to Hire Part Time Workers in 2024: A Comprehensive Guide for Employers</title><link>https://jetthoughts.com/blog/effective-strategies-hire-part-time-workers-in-2024-comprehensive-guide-for-employers/</link><pubDate>Thu, 19 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/effective-strategies-hire-part-time-workers-in-2024-comprehensive-guide-for-employers/</guid><description>&lt;p&gt;Hiring part-time workers can be a game-changer for businesses in 2024. With more people seeking flexible work arrangements, employers need to adapt their hiring strategies. This guide will walk you through the process, from understanding the benefits of part-time employees to evaluating your hiring success. Whether you&amp;rsquo;re a small business owner or managing a large team, these insights will help you make informed decisions and find the right talent for your needs.&lt;/p&gt;</description></item><item><title>Elevating Your Code: Embracing Good Software Engineering Practices for Success</title><link>https://jetthoughts.com/blog/elevating-your-code-embracing-good-software-engineering-practices-for-success/</link><pubDate>Thu, 19 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/elevating-your-code-embracing-good-software-engineering-practices-for-success/</guid><description>&lt;p&gt;Ever thought about what makes a software engineer successful? It&amp;rsquo;s not just about knowing how to code. It&amp;rsquo;s about embracing good software engineering practices. These practices help you write better code, work well with your team, and create software that really works. In this article, we&amp;rsquo;ll explore some of these key practices and how they can make a difference in your work.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Good software engineering practices are essential for writing quality code.&lt;/li&gt;&#10;&lt;li&gt;Enhancing code readability makes it easier for everyone to understand and work with your code.&lt;/li&gt;&#10;&lt;li&gt;Refactoring your code improves its structure and maintainability.&lt;/li&gt;&#10;&lt;li&gt;The KISS principle helps keep your code simple and effective.&lt;/li&gt;&#10;&lt;li&gt;Version control is crucial for managing changes and collaborating with others.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="understanding-good-software-engineering-practices"&gt;Understanding Good Software Engineering Practices &lt;a class="hlink" href="#understanding-good-software-engineering-practices" aria-label="Link to Understanding Good Software Engineering Practices"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/elevating-your-code-embracing-good-software-engineering-practices-for-success/file_0_hu_f7259eed1b10ebb3.webp" srcset="https://jetthoughts.com/blog/elevating-your-code-embracing-good-software-engineering-practices-for-success/file_0_hu_f7259eed1b10ebb3.webp 800w, https://jetthoughts.com/blog/elevating-your-code-embracing-good-software-engineering-practices-for-success/file_0_hu_6e82c22485e81498.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="400" alt="Programmer typing code on a laptop with coffee." loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Essential Recruitment Tips for Recruiters to Attract Top Talent in 2024</title><link>https://jetthoughts.com/blog/essential-recruitment-tips-for-recruiters-attract-top-talent-in-2024/</link><pubDate>Thu, 19 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/essential-recruitment-tips-for-recruiters-attract-top-talent-in-2024/</guid><description>&lt;p&gt;Recruiting top talent in 2024 is no walk in the park. The job market&amp;rsquo;s competitive, and recruiters need to be on their toes. It&amp;rsquo;s about more than just filling positions; it&amp;rsquo;s about finding the right people who&amp;rsquo;ll thrive and stick around. Whether you&amp;rsquo;re a seasoned recruiter or just starting, these tips can help you attract the best candidates for your organization.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Understand where your talent comes from and where it goes. Knowing this helps in targeting the right candidates.&lt;/li&gt;&#10;&lt;li&gt;Building a pipeline of potential hires can save time and effort in the long run. It&amp;rsquo;s like having a backup plan.&lt;/li&gt;&#10;&lt;li&gt;Tech and data are your friends. Use them to streamline processes and make informed decisions.&lt;/li&gt;&#10;&lt;li&gt;Think from a candidate&amp;rsquo;s perspective. A smooth experience can make all the difference in attracting top talent.&lt;/li&gt;&#10;&lt;li&gt;Diversity isn&amp;rsquo;t just a buzzword. An inclusive culture attracts a wider range of candidates and enriches the workplace.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="map-your-talent-ecosystem"&gt;Map Your Talent Ecosystem &lt;a class="hlink" href="#map-your-talent-ecosystem" aria-label="Link to Map Your Talent Ecosystem"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Understanding your talent ecosystem is like having a map for a treasure hunt. You need to know where to dig for the best talent. Here&amp;rsquo;s how you can map it out:&lt;/p&gt;</description></item><item><title>Exploring Opportunities: Top Companies Hiring International Employees in 2024</title><link>https://jetthoughts.com/blog/exploring-opportunities-top-companies-hiring-international-employees-in-2024/</link><pubDate>Thu, 19 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/exploring-opportunities-top-companies-hiring-international-employees-in-2024/</guid><description>&lt;p&gt;In 2024, the job market is buzzing with opportunities for international talent. Companies are more open than ever to hire from across borders, embracing the diversity and skills that come with a global workforce. With remote work becoming the norm, businesses are not just sticking to their local talent pools. Instead, they&amp;rsquo;re casting a wider net to bring in fresh perspectives and expertise from around the world. This article dives into the top companies that are eager to hire international employees, making it easier for job seekers everywhere to find their next big opportunity.&lt;/p&gt;</description></item><item><title>Exploring the Demand for a Job for QA Professionals in Today's Market</title><link>https://jetthoughts.com/blog/exploring-demand-for-job-qa-professionals-in-todays-market/</link><pubDate>Thu, 19 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/exploring-demand-for-job-qa-professionals-in-todays-market/</guid><description>&lt;p&gt;Quality Assurance (QA) jobs are seriously on the rise these days. With tech becoming such a huge part of our lives, companies are all about making sure their software works like a charm. That&amp;rsquo;s where QA pros come in. They&amp;rsquo;re the ones who catch those pesky bugs and make sure everything runs smoothly. And guess what? This means there&amp;rsquo;s a ton of job openings out there for QA folks. Whether you&amp;rsquo;re just starting out or looking to switch things up, now&amp;rsquo;s a great time to dive into this field.&lt;/p&gt;</description></item><item><title>Exploring the Future of Backend Technology: Trends and Innovations for 2024</title><link>https://jetthoughts.com/blog/exploring-future-of-backend-technology-trends-innovations-for-2024/</link><pubDate>Thu, 19 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/exploring-future-of-backend-technology-trends-innovations-for-2024/</guid><description>&lt;p&gt;As we look ahead to 2024, backend technology is evolving at a rapid pace. Developers and tech enthusiasts are buzzing about the latest trends that are set to change the game. From serverless architecture to AI integration, the backend landscape is becoming more dynamic and innovative. In this article, we&amp;rsquo;ll break down what&amp;rsquo;s new and what to watch for in the world of backend technology.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Serverless architecture simplifies backend management, allowing developers to focus more on coding and less on infrastructure.&lt;/li&gt;&#10;&lt;li&gt;AI and machine learning are becoming integral parts of backend systems, offering automation and personalized user experiences.&lt;/li&gt;&#10;&lt;li&gt;Microservices architecture is making applications more flexible and easier to manage.&lt;/li&gt;&#10;&lt;li&gt;Containerization is changing how we deploy applications, with tools like Docker and Kubernetes leading the way.&lt;/li&gt;&#10;&lt;li&gt;New programming languages like Rust and Go are gaining popularity for their performance and efficiency.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="serverless-architectures-are-here-to-stay"&gt;Serverless Architectures Are Here to Stay &lt;a class="hlink" href="#serverless-architectures-are-here-to-stay" aria-label="Link to Serverless Architectures Are Here to Stay"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="why-serverless-is-a-game-changer"&gt;Why Serverless Is a Game Changer &lt;a class="hlink" href="#why-serverless-is-a-game-changer" aria-label="Link to Why Serverless Is a Game Changer"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Serverless architecture is changing how developers build apps. You don&amp;rsquo;t need to worry about managing servers. Instead, you can focus on writing code. &lt;strong&gt;This shift allows you to build and launch apps faster.&lt;/strong&gt; With serverless, your app can automatically handle more users without extra effort. You only pay for what you use, which saves money.&lt;/p&gt;</description></item><item><title>Finding the Best Software Development Services Near Me: A Comprehensive Guide for 2024</title><link>https://jetthoughts.com/blog/finding-best-software-development-services-near-me-comprehensive-guide-for-2024/</link><pubDate>Thu, 19 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/finding-best-software-development-services-near-me-comprehensive-guide-for-2024/</guid><description>&lt;p&gt;Looking for software development services nearby can feel like hunting for a needle in a haystack. But with 2024 rolling in, it&amp;rsquo;s time to get savvy about finding the right talent close to you. Whether you&amp;rsquo;re a startup or an established company, hiring local developers has its perks. From better communication to supporting local businesses, there&amp;rsquo;s a lot to consider. This guide will help you navigate the options and make the best choice for your project.&lt;/p&gt;</description></item><item><title>How to Find Your Next Startup Idea: Lessons from Y Combinator</title><link>https://jetthoughts.com/blog/how-find-your-next-startup-idea-lessons-from-y-combinator-management/</link><pubDate>Thu, 19 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-find-your-next-startup-idea-lessons-from-y-combinator-management/</guid><description>&lt;p&gt;Success in startups starts with the right idea. Y Combinator has funded hundreds of billion-dollar companies. Here&amp;rsquo;s what we learned about finding great startup ideas.&lt;/p&gt;&#10;&lt;div style="position: relative; padding-bottom: 56.25%; height: 0; overflow: hidden;"&gt;&#10;&#9;&#9;&#9;&lt;iframe allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share; fullscreen" loading="eager" referrerpolicy="strict-origin-when-cross-origin" src="https://www.youtube.com/embed/Th8JoIan4dg?autoplay=0&amp;amp;controls=1&amp;amp;end=0&amp;amp;loop=0&amp;amp;mute=0&amp;amp;start=0" style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border:0;" title="YouTube video"&gt;&lt;/iframe&gt;&#10;&#9;&#9;&lt;/div&gt;&#10;&#10;&lt;h2 id="the-common-mistakes"&gt;The Common Mistakes &lt;a class="hlink" href="#the-common-mistakes" aria-label="Link to The Common Mistakes"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Many founders start with AI or new tech and look for problems to solve. This is backwards. Start with a real problem first.&lt;/p&gt;</description></item><item><title>How to Organize a Startup Team Structure</title><link>https://jetthoughts.com/blog/how-organize-startup-team-structure/</link><pubDate>Thu, 19 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-organize-startup-team-structure/</guid><description>&lt;p&gt;Starting a business is exciting, but organizing your team is a whole different ball game. You’ve got to figure out who does what, how they do it, and make sure everyone’s on the same page. A good startup organizational structure can help keep things running smoothly. It’s not just about assigning tasks; it’s about creating a system where everyone knows their role and how they fit into the bigger picture. This guide will walk you through setting up a team structure that works for your startup.&lt;/p&gt;</description></item><item><title>Transform Your Online Presence with a Leading Front End Web Development Company</title><link>https://jetthoughts.com/blog/transform-your-online-presence-with-leading-front-end-web-development-company/</link><pubDate>Thu, 19 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/transform-your-online-presence-with-leading-front-end-web-development-company/</guid><description>&lt;p&gt;In today&amp;rsquo;s digital age, having a strong online presence is crucial for any business. A front end web development company can help transform your website into a powerful tool that engages users and enhances your brand. Whether you&amp;rsquo;re looking to improve user experience, boost performance, or future-proof your site, partnering with the right development team can make all the difference.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Front end web development companies can enhance user engagement and create visually appealing interfaces.&lt;/li&gt;&#10;&lt;li&gt;Responsive design is essential for adapting to various devices and improving user experience.&lt;/li&gt;&#10;&lt;li&gt;A strong online presence helps build brand identity and trust with users.&lt;/li&gt;&#10;&lt;li&gt;Optimizing website performance can lead to faster load times and better SEO results.&lt;/li&gt;&#10;&lt;li&gt;Choosing the right development partner involves evaluating their expertise and understanding your business needs.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="why-your-business-needs-a-front-end-web-development-company"&gt;Why Your Business Needs A Front End Web Development Company &lt;a class="hlink" href="#why-your-business-needs-a-front-end-web-development-company" aria-label="Link to Why Your Business Needs A Front End Web Development Company"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/transform-your-online-presence-with-leading-front-end-web-development-company/file_0_hu_23d7301de8fb20fd.webp" srcset="https://jetthoughts.com/blog/transform-your-online-presence-with-leading-front-end-web-development-company/file_0_hu_23d7301de8fb20fd.webp 800w, https://jetthoughts.com/blog/transform-your-online-presence-with-leading-front-end-web-development-company/file_0_hu_28b16bb78b260766.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="400" alt="Web developer at laptop creating vibrant user interface designs." loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Unlocking Opportunities: The Future of Talent Manager Jobs in 2024</title><link>https://jetthoughts.com/blog/unlocking-opportunities-future-of-talent-manager-jobs-in-2024/</link><pubDate>Thu, 19 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-opportunities-future-of-talent-manager-jobs-in-2024/</guid><description>&lt;p&gt;Hey there! So, looking into the future, 2024 is shaping up to be a wild ride for talent manager jobs. With tech changing at lightning speed and work dynamics shifting, talent managers are in for some big changes. It&amp;rsquo;s not just about finding the right people anymore; it&amp;rsquo;s about adapting to new tools and focusing on what really matters. Let&amp;rsquo;s dive into what this means for the future of talent management.&lt;/p&gt;</description></item><item><title>Unlocking Success: How MVP Dev Transforms Your App Development Journey</title><link>https://jetthoughts.com/blog/unlocking-success-how-mvp-dev-transforms-your-app-development-journey/</link><pubDate>Thu, 19 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-success-how-mvp-dev-transforms-your-app-development-journey/</guid><description>&lt;p&gt;So you&amp;rsquo;re thinking about building an app, huh? It&amp;rsquo;s a big journey, but there&amp;rsquo;s a way to make it smoother and smarter. Enter MVP dev. It&amp;rsquo;s all about starting small and learning fast. You don&amp;rsquo;t need all the bells and whistles right away. Instead, focus on what really matters to your users and get feedback. This approach can save you time, money, and a lot of headaches down the road. Let&amp;rsquo;s dive into how MVP dev can change your app development game.&lt;/p&gt;</description></item><item><title>Unlocking Success: The Essential Role of Front End Services in Modern Web Development</title><link>https://jetthoughts.com/blog/unlocking-success-essential-role-of-front-end-services-in-modern-web-development/</link><pubDate>Thu, 19 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-success-essential-role-of-front-end-services-in-modern-web-development/</guid><description>&lt;p&gt;Front end services are like the face of your website, and they play a big part in how people see your business online. It&amp;rsquo;s not just about looking good; it&amp;rsquo;s about making sure everything works smoothly. When visitors land on your website, you want them to have a great experience. This means easy navigation, fast loading times, and a design that keeps them coming back. Let&amp;rsquo;s dive into why front end services are so important and how they can help your business succeed.&lt;/p&gt;</description></item><item><title>What You Need to Know About Building a Startup Org Structure</title><link>https://jetthoughts.com/blog/what-you-need-know-about-building-startup-org-structure/</link><pubDate>Thu, 19 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/what-you-need-know-about-building-startup-org-structure/</guid><description>&lt;p&gt;Starting a new business is like setting off on an adventure. You have a great idea, a small team, and big dreams. But how do you organize your team to make sure everything runs smoothly? That&amp;rsquo;s where creating a startup organizational structure comes in. It&amp;rsquo;s not about stuffing your fresh, energetic team into a stiff corporate box. Instead, it&amp;rsquo;s about finding a setup that works for your unique goals and needs. This guide will help you figure out the basics of building a structure that lets your startup grow without losing its spark.&lt;/p&gt;</description></item><item><title>How to find technical vendor with confidence</title><link>https://jetthoughts.com/blog/how-find-technical-vendor-with-confidence-startup-tutorial/</link><pubDate>Wed, 18 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-find-technical-vendor-with-confidence-startup-tutorial/</guid><description>&lt;p&gt;Finding the right tech vendor can feel like a wild ride. One minute you&amp;rsquo;re confident, the next you&amp;rsquo;re second-guessing every decision. It&amp;rsquo;s not just about picking someone who can do the job; it&amp;rsquo;s about finding a partner you can trust. You want someone who gets your business and can grow with you. With the rise of fractional CTO services, there&amp;rsquo;s a new player in the game to help you make those tough calls. Let&amp;rsquo;s break down how you can confidently choose the right vendor for your needs.&lt;/p&gt;</description></item><item><title>SCIPAB Your Dev Shop: 6 Founder Questions</title><link>https://jetthoughts.com/blog/scipab-tell-better-business-stories-startup-management/</link><pubDate>Mon, 16 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/scipab-tell-better-business-stories-startup-management/</guid><description>&lt;p&gt;You&amp;rsquo;re on a weekly status call with your dev shop. The PM walks you through fourteen closed Jira tickets. You nod. You don&amp;rsquo;t actually know what shipped, and the budget side of that question never gets answered. The meeting is designed to leave you feeling informed, and you walk out flying blind anyway.&lt;/p&gt;&#10;&lt;p&gt;SCIPAB is a six-step communication framework that consultants use to brief executives. Most posts about it teach founders how to talk to their board. This post does the opposite. Use SCIPAB to make your dev shop talk to you.&lt;/p&gt;</description></item><item><title>What Every Non-Technical Founder Must Know When Building a Tech Product</title><link>https://jetthoughts.com/blog/what-every-non-technical-founder-must-know-when-building-tech-product-startup-management/</link><pubDate>Mon, 16 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/what-every-non-technical-founder-must-know-when-building-tech-product-startup-management/</guid><description>&lt;p&gt;For twenty years, I’ve helped non-technical founders navigate software development. Many have succeeded, while some faced challenges. I’ve noticed the key difference lies in their approach to technical aspects. I’d love to share insights on collaborating with remote development teams!&lt;/p&gt;&#10;&lt;h2 id="the-hard-truth-about-ideas"&gt;The Hard Truth About Ideas &lt;a class="hlink" href="#the-hard-truth-about-ideas" aria-label="Link to The Hard Truth About Ideas"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Just having a fantastic idea isn&amp;rsquo;t quite enough on its own. Almost every week, I have the pleasure of meeting enthusiastic founders who excitedly share with me, &amp;ldquo;I have this amazing app idea! All I need is a developer to bring it to life!&amp;rdquo;&lt;/p&gt;</description></item><item><title>A Simpler Way to Set Content Types in Rails</title><link>https://jetthoughts.com/blog/simpler-way-set-content-types-in-rails-ruby/</link><pubDate>Sun, 15 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/simpler-way-set-content-types-in-rails-ruby/</guid><description>&lt;p&gt;Rails now lets you set content types with less code. This new feature makes your work easier.&lt;/p&gt;&#10;&lt;h2 id="the-change"&gt;The Change &lt;a class="hlink" href="#the-change" aria-label="Link to The Change"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;You can now use a short symbol instead of a long text string. Here&amp;rsquo;s what it looks like:&lt;/p&gt;&#10;&lt;p&gt;Old way:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;response&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;content_type &lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;&amp;#34;text/html&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;New way:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;response&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;content_type &lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;:html&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="benefits"&gt;Benefits &lt;a class="hlink" href="#benefits" aria-label="Link to Benefits"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;This change helps in three ways. First, your code becomes shorter. Second, it matches how Rails handles other formats. Third, you don&amp;rsquo;t need to remember the full content type text.&lt;/p&gt;</description></item><item><title>From Chaos to Flow: How Work-in-Progress Limits Transform Remote Product Development</title><link>https://jetthoughts.com/blog/from-chaos-flow-how-work-in-progress-limits-transform-remote-product-development-webdev-startup/</link><pubDate>Sun, 15 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/from-chaos-flow-how-work-in-progress-limits-transform-remote-product-development-webdev-startup/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;&amp;ldquo;I felt like a circus performer spinning plates. Each new project added another wobbling dish. I knew something had to break – either the plates or me.&amp;rdquo;&lt;/p&gt;&#10;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Sarah shared this with me over coffee. As a founder of a growing SaaS company, she managed three remote development teams across different time zones. Her story might sound familiar to you.&lt;/p&gt;&#10;&lt;p&gt;Every morning brought a flood of Slack messages. Developers jumped between tasks. Quality suffered. Deadlines slipped. The board of directors wanted answers. Sarah barely slept.&lt;/p&gt;</description></item><item><title>Technical Bias: The Invisible Force Shaping Our Architecture Decisions</title><link>https://jetthoughts.com/blog/technical-bias-invisible-force-shaping-our-architecture-decisions-startup-productivity/</link><pubDate>Sun, 15 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/technical-bias-invisible-force-shaping-our-architecture-decisions-startup-productivity/</guid><description>&lt;p&gt;After 20+ years in tech leadership, I&amp;rsquo;ve observed a pattern that should concern us all: our cognitive biases quietly dictate our architectural decisions, often at the expense of practical solutions.&lt;/p&gt;&#10;&lt;h2 id="the-catalyst"&gt;The Catalyst &lt;a class="hlink" href="#the-catalyst" aria-label="Link to The Catalyst"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Recently, I witnessed a familiar scene at a tech conference—the subtle eye rolls and dismissive glances when Ruby on Rails was mentioned. As technical leaders, we&amp;rsquo;ve all been there, either dismissing or being dismissed. But this time, it struck me differently. These weren&amp;rsquo;t technical objections but emotional responses masquerading as technical judgment.&lt;/p&gt;</description></item><item><title>The behavior of stringify_keys in the upcoming version of Rails has changed.</title><link>https://jetthoughts.com/blog/behavior-of-stringifykeys-in-upcoming-version-rails-has-changed-ruby/</link><pubDate>Sun, 15 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/behavior-of-stringifykeys-in-upcoming-version-rails-has-changed-ruby/</guid><description>&lt;p&gt;A new Rails update fixes how the &lt;code&gt;stringify_keys&lt;/code&gt; handles different types of hash keys. This change makes the code more reliable and consistent.&lt;/p&gt;&#10;&lt;h2 id="the-problem"&gt;The Problem &lt;a class="hlink" href="#the-problem" aria-label="Link to The Problem"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Rails has a special type of hash called &lt;code&gt;HashWithIndifferentAccess&lt;/code&gt;. In the past, it had a quirk. When you used the &lt;code&gt;stringify_keys&lt;/code&gt; method, it would only turn symbol keys into strings. Other types of keys, like numbers, stayed the same.&lt;/p&gt;&#10;&lt;h2 id="the-fix"&gt;The Fix &lt;a class="hlink" href="#the-fix" aria-label="Link to The Fix"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The new version changes this behavior. Now, &lt;code&gt;stringify_keys&lt;/code&gt; turns all keys into strings, no matter what type they were before. Let&amp;rsquo;s look at an example:&lt;/p&gt;</description></item><item><title>The Hidden Garden of Product Success: A Framework That Actually Works</title><link>https://jetthoughts.com/blog/hidden-garden-of-product-success-framework-that-actually-works-webdev-startup/</link><pubDate>Sun, 15 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/hidden-garden-of-product-success-framework-that-actually-works-webdev-startup/</guid><description>&lt;p&gt;Think about the last time you watched a garden grow. No one tells a seed how to become a flower. The magic lies in creating the right conditions. Your product development journey follows the same natural law.&lt;/p&gt;&#10;&lt;h2 id="beyond-the-traditional-approach"&gt;Beyond the Traditional Approach &lt;a class="hlink" href="#beyond-the-traditional-approach" aria-label="Link to Beyond the Traditional Approach"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Most founders push their products forward like rolling a boulder uphill. They exhaust themselves fighting gravity. They burn through resources. They miss the simple truth: success flows naturally when you design the right environment.&lt;/p&gt;</description></item><item><title>Simplifying Payments with Pay gem: A Guide to Using Stripe in Rails</title><link>https://jetthoughts.com/blog/simplifying-payments-with-pay-gem-guide-using-stripe-in-rails-ruby/</link><pubDate>Tue, 03 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/simplifying-payments-with-pay-gem-guide-using-stripe-in-rails-ruby/</guid><description>&lt;p&gt;Payment integration adds a lot of moving parts to a Rails app. The &lt;a href="https://github.com/pay-rails/pay"&gt;Pay gem&lt;/a&gt; (current version &lt;code&gt;11.6.x&lt;/code&gt;, Rails 6.0+) wraps Stripe, Paddle, Braintree, and Lemon Squeezy behind one Rails-friendly interface so you don&amp;rsquo;t write the customer, subscription, and webhook plumbing yourself.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Quick start (TL;DR):&lt;/strong&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Gemfile&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;gem &lt;span style="color:#a5d6ff"&gt;&amp;#34;pay&amp;#34;&lt;/span&gt;, &lt;span style="color:#a5d6ff"&gt;&amp;#34;~&amp;gt; 11.6&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bundle install&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bin/rails generate pay:install&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;bin/rails db:migrate&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# app/models/user.rb&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;class&lt;/span&gt; &lt;span style="color:#f0883e;font-weight:bold"&gt;User&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#79c0ff;font-weight:bold"&gt;ApplicationRecord&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; pay_customer&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;That&amp;rsquo;s the minimum viable setup. The rest of this post walks through configuring Stripe, wiring webhooks, and creating a subscription.&lt;/p&gt;</description></item><item><title>Linking Data in PostgreSQL Without Explicit Keys: A Practical Guide</title><link>https://jetthoughts.com/blog/linking-postgresql-data-through-time-when-tables-share-no-keys-database-sql/</link><pubDate>Mon, 02 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/linking-postgresql-data-through-time-when-tables-share-no-keys-database-sql/</guid><description>&lt;p&gt;Databases often evolve in unpredictable ways. Tables that were initially designed to operate independently might later need to be connected. This situation can arise in various scenarios, such as when data is generated by separate processes, systems, or applications that lack coordination.&lt;/p&gt;&#10;&lt;p&gt;In this article, we’ll explore how to link two tables in PostgreSQL based on their creation timestamps when no explicit keys exist. Specifically, we’ll demonstrate how to establish a relationship between records where the difference in creation times is no more than 2 seconds.&lt;/p&gt;</description></item><item><title>Rails 8 Brings ViewObjects: Why They’re Awesome and How to Use Them</title><link>https://jetthoughts.com/blog/rails-8-brings-viewobjects-why-theyre-awesome-how-use-them-ruby/</link><pubDate>Mon, 02 Dec 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rails-8-brings-viewobjects-why-theyre-awesome-how-use-them-ruby/</guid><description>&lt;p&gt;Rails 8 brings an exciting addition to its arsenal: ViewComponents, powered by the ViewComponent::Base class. This feature is a game-changer for managing UI logic, offering developers a clean, reusable, and testable approach to building components.&lt;/p&gt;&#10;&lt;h2 id="what-are-viewcomponents"&gt;What Are ViewComponents? &lt;a class="hlink" href="#what-are-viewcomponents" aria-label="Link to What Are ViewComponents?"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;ViewComponents encapsulate a piece of your UI into a Ruby class, allowing you to define rendering logic in one place. Instead of scattering presentation logic across views, helpers, and partials, ViewComponents consolidate it into an object that’s easy to maintain and test.&lt;/p&gt;</description></item><item><title>Transforming Documentation with Next.js: A Case Study with JetThoughts</title><link>https://jetthoughts.com/blog/transforming-documentation-with-nextjs-case-study-jetthoughts/</link><pubDate>Fri, 22 Nov 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/transforming-documentation-with-nextjs-case-study-jetthoughts/</guid><description>&lt;p&gt;Well-structured documentation is crucial for all open-source projects, but it becomes even more vital for Open Core solutions like CodeVerse, especially when large businesses rely on them. Our project with CodeVerse, where we completely reimagined their documentation platform, is a perfect case study for tech founders and developers aiming for superior documentation.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/transforming-documentation-with-nextjs-case-study-jetthoughts/file_0_hu_d7f9574d20024a9d.webp" srcset="https://jetthoughts.com/blog/transforming-documentation-with-nextjs-case-study-jetthoughts/file_0_hu_d7f9574d20024a9d.webp 800w, https://jetthoughts.com/blog/transforming-documentation-with-nextjs-case-study-jetthoughts/file_0_hu_63334324fa29a612.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Illustrates the challenges CodeVerse faced with its previous Jekyll and Gatsby documentation and website setup, highlighting inflexibility, update difficulties, and inconsistent user experience. A diagram shows the decision to use Next.js." loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>What Non-Tech Founders Often Miss</title><link>https://jetthoughts.com/blog/what-non-tech-founders-often-miss/</link><pubDate>Mon, 18 Nov 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/what-non-tech-founders-often-miss/</guid><description>&lt;p&gt;I have worked with many non-technical founders. They often make the same mistakes, which wastes time and money. They mean well, but problems happen. Here are common issues and how they affect projects.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/what-non-tech-founders-often-miss/file_0_hu_bc261dbe30668b9.webp" srcset="https://jetthoughts.com/blog/what-non-tech-founders-often-miss/file_0_hu_bc261dbe30668b9.webp 800w, https://jetthoughts.com/blog/what-non-tech-founders-often-miss/file_0_hu_8aaea3c58e636dc0.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="800" alt="A clean, minimalist illustration showing a split-screen composition. On the left side, there’s a founder sketching a grand castle in the air with broad, confident strokes. On the right side, there’s a more detailed technical blueprint with specific measurements, notes, and architectural elements. Between them, there’s a bridge being built from both sides, symbolizing the need to connect vision with practical implementation." loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Ruby on Rails Case Study: How JetThoughts Improved OpenApply's Code and UX</title><link>https://jetthoughts.com/blog/ruby-on-rails-case-study-how-jetthoughts-improved-openapplys-code-ux/</link><pubDate>Thu, 14 Nov 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ruby-on-rails-case-study-how-jetthoughts-improved-openapplys-code-ux/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/ruby-on-rails-case-study-how-jetthoughts-improved-openapplys-code-ux/file_0_hu_66cccaae40d4dd4a.webp" srcset="https://jetthoughts.com/blog/ruby-on-rails-case-study-how-jetthoughts-improved-openapplys-code-ux/file_0_hu_66cccaae40d4dd4a.webp 800w, https://jetthoughts.com/blog/ruby-on-rails-case-study-how-jetthoughts-improved-openapplys-code-ux/file_0_hu_66cccaae40d4dd4a.webp 800w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="419" alt="Payments Dashboard for managing invoices, reconciliation, and payment reminders, featuring bulk invoice generation and tracking of aging days for students and parents." loading="lazy"&gt;&#10;OpenApply is a smart software platform that makes admissions and enrollment easier for students worldwide. They aim to provide a smooth, paperless online experience that benefits students and schools.&lt;/p&gt;&#10;&lt;p&gt;With rapid growth, OpenApply needed help from JetThoughts to fix code problems, enhance user experience, add new features, and improve their internal workflows.&lt;/p&gt;</description></item><item><title>Minitest Advantages: Simple Testing for Rails Projects</title><link>https://jetthoughts.com/blog/minitest-advantages-simple-testing-for-rails-projects-rspec/</link><pubDate>Wed, 13 Nov 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/minitest-advantages-simple-testing-for-rails-projects-rspec/</guid><description>&lt;p&gt;Minitest and RSpec are great testing tools for Ruby on Rails, each with its style, strengths, and weaknesses. This article will walk you through how they stack up, covering their main features, benefits, and the kinds of projects they fit best. By the end, you&amp;rsquo;ll understand why we like Minitest more—especially when we&amp;rsquo;re focused on keeping things simple and sticking with a TDD (Test-Driven Development) approach.&lt;/p&gt;&#10;&lt;h2 id="comparative-analysis-of-minitest-and-rspec"&gt;Comparative Analysis of Minitest and RSpec &lt;a class="hlink" href="#comparative-analysis-of-minitest-and-rspec" aria-label="Link to Comparative Analysis of Minitest and RSpec"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="minitest-pros-cons-and-key-features"&gt;Minitest: Pros, Cons, and Key Features &lt;a class="hlink" href="#minitest-pros-cons-and-key-features" aria-label="Link to Minitest: Pros, Cons, and Key Features"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Simplicity:&lt;/strong&gt; Minitest is known for its simplicity. Its small footprint and direct syntax make it easy to start testing without much setup or configuration. Minitest is part of the Ruby Standard Library, meaning it&amp;rsquo;s always ready for use with minimal dependencies.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Speed:&lt;/strong&gt; Minitest is often faster than RSpec because of its lightweight design. It doesn&amp;rsquo;t have additional layers or complex matters, which allows it to execute tests quickly, which is especially beneficial in large projects.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Flexibility:&lt;/strong&gt; Minitest provides options for both structured and unstructured tests. You can write simple assertions directly or use a &amp;ldquo;spec&amp;rdquo; style that reads more like English. This flexibility appeals to developers who want control without excessive abstraction. Ease of Use: Minitest&amp;rsquo;s core syntax is easy to understand, and its assertions are intuitive for Rubyists. With a straightforward API, it doesn&amp;rsquo;t overwhelm beginners.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Integration with TDD&lt;/strong&gt;: Minitest is well-suited for TDD practices. Since it emphasizes simplicity, writing tests feels more natural, and developers can focus on the test-driven approach rather than the framework itself.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Cons of Minitest:&lt;/strong&gt; While fast and flexible, Minitest lacks some of the &amp;ldquo;DSL&amp;rdquo; (Domain-Specific Language) features that make RSpec readable and expressive. For those used to RSpec&amp;rsquo;s readability, Minitest may feel less polished.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="rspec-pros-cons-and-key-features"&gt;RSpec: Pros, Cons, and Key Features &lt;a class="hlink" href="#rspec-pros-cons-and-key-features" aria-label="Link to RSpec: Pros, Cons, and Key Features"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Expressive DSL:&lt;/strong&gt; RSpec&amp;rsquo;s DSL is a significant attraction. Tests in RSpec often read like natural language, which can make them more accessible to developers and stakeholders. The syntax can be highly descriptive, offering a readability that many value.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Robust Matchers and Customization:&lt;/strong&gt; RSpec comes with many matches and provides detailed feedback for assertions, which can simplify complex testing scenarios.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Behavior-Driven Development (BDD) Focus:&lt;/strong&gt; RSpec aligns well with BDD practices. Its structure supports a more behavior-driven approach, making tests read like specifications for how the application should behave. Cons of RSpec: RSpec&amp;rsquo;s expressive DSL and extensive configuration options can add complexity. It requires more setup, can slow test suite execution, and has a steeper learning curve for beginners. The added abstraction can also make it harder to see what&amp;rsquo;s happening &amp;ldquo;under the hood.&amp;rdquo;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="why-we-choose-minitest-for-our-projects"&gt;Why We Choose Minitest for Our Projects &lt;a class="hlink" href="#why-we-choose-minitest-for-our-projects" aria-label="Link to Why We Choose Minitest for Our Projects"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;We prefer Minitest because its simplicity and minimalism align with our goals. Minitest allows us to focus on writing good tests without the distraction of a heavy framework or excessive configuration. Its straightforward design is ideal for Test-Driven Development, a practice we highly value.&#10;TDD is about keeping tests as lean as possible and directly connected to the code they&amp;rsquo;re testing. Minitest&amp;rsquo;s simplicity supports this approach by allowing us to write fast, clean, and easy-to-understand tests. This focus on speed and flexibility makes Minitest the ideal choice for projects where frequent testing is essential to our workflow.&#10;For teams or projects that prioritize readability and minimal setup over expressive DSLs, Minitest is a strong choice. Both frameworks are capable, but Minitest&amp;rsquo;s lightweight nature aligns well with our TDD-based development philosophy.&lt;/p&gt;</description></item><item><title>Ruby on Rails 8: Custom Compression for Encrypted Data</title><link>https://jetthoughts.com/blog/ruby-on-rails-8-custom-compression-for-encrypted-data/</link><pubDate>Fri, 08 Nov 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ruby-on-rails-8-custom-compression-for-encrypted-data/</guid><description>&lt;p&gt;In Ruby on Rails 8, ActiveRecord’s encryption features are more flexible than ever. You can now set a custom compression algorithm for encrypted attributes. This update lets you manage data size while keeping it secure. Whether you&amp;rsquo;re storing large encrypted text or using custom compression algorithms, this feature can streamline storage and retrieval.&lt;/p&gt;&#10;&lt;h2 id="how-to-use-custom-compression-with-activerecord-encryption"&gt;How to Use Custom Compression with ActiveRecord Encryption &lt;a class="hlink" href="#how-to-use-custom-compression-with-activerecord-encryption" aria-label="Link to How to Use Custom Compression with ActiveRecord Encryption"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The &lt;code&gt;:compressor&lt;/code&gt; option lets you define your compression module. Here’s how to use it with a custom algorithm, such as &lt;code&gt;Zstd&lt;/code&gt;:&lt;/p&gt;</description></item><item><title>Ruby on Rails 8: How to Batch with Custom Columns</title><link>https://jetthoughts.com/blog/ruby-on-rails-8-how-batch-with-custom-columns/</link><pubDate>Fri, 08 Nov 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ruby-on-rails-8-how-batch-with-custom-columns/</guid><description>&lt;p&gt;Ruby on Rails 8 introduces a handy feature for developers handling large datasets: batching with custom columns. This upgrade lets you batch records by specific attributes, not just the primary key.&lt;/p&gt;&#10;&lt;p&gt;This feature can save time and boost performance if you work with multi-tenant systems, data migration, or advanced filtering.&lt;/p&gt;&#10;&lt;h2 id="quick-guide-batching-with-custom-columns"&gt;Quick Guide: Batching with Custom Columns &lt;a class="hlink" href="#quick-guide-batching-with-custom-columns" aria-label="Link to Quick Guide: Batching with Custom Columns"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;To start using custom columns for batching, specify them in the &lt;code&gt;cursor&lt;/code&gt; option. Here’s a quick example:&lt;/p&gt;</description></item><item><title>Ruby on Rails 8: Simplifying Sharding with New Methods</title><link>https://jetthoughts.com/blog/ruby-on-rails-8-simplifying-sharding-with-new-methods/</link><pubDate>Fri, 08 Nov 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ruby-on-rails-8-simplifying-sharding-with-new-methods/</guid><description>&lt;p&gt;Ruby on Rails 8 brings helpful updates for working with sharded databases. The new methods &lt;code&gt;.shard_keys&lt;/code&gt;, &lt;code&gt;.sharded?&lt;/code&gt;, and &lt;code&gt;.connected_to_all_shards&lt;/code&gt; make it easier to manage multiple shards. If you handle sharded data, these tools can streamline your workflow.&lt;/p&gt;&#10;&lt;h2 id="how-to-use-the-new-sharding-methods"&gt;How to Use the New Sharding Methods &lt;a class="hlink" href="#how-to-use-the-new-sharding-methods" aria-label="Link to How to Use the New Sharding Methods"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="set-up-your-sharded-base-class"&gt;Set Up Your Sharded Base Class &lt;a class="hlink" href="#set-up-your-sharded-base-class" aria-label="Link to Set Up Your Sharded Base Class"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Begin by defining an abstract class that connects to your shards:&lt;/p&gt;</description></item><item><title>How to Vet and Hire Engineers as a non-Technical Founder</title><link>https://jetthoughts.com/blog/how-vet-hire-engineers-as-non-technical-founder-startup-developers/</link><pubDate>Thu, 07 Nov 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-vet-hire-engineers-as-non-technical-founder-startup-developers/</guid><description>&lt;p&gt;You don&amp;rsquo;t need an in-house tech expert to find the right developer. Follow these steps to get the best help.&lt;/p&gt;&#10;&lt;h2 id="1-write-down-your-idea"&gt;1. Write Down Your Idea &lt;a class="hlink" href="#1-write-down-your-idea" aria-label="Link to 1. Write Down Your Idea"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Write what you want to build. Please keep it simple! Describe the problem and how your product solves it. Refer to &lt;a href="https://martinfowler.com/articles/lean-inception/write-product-vision.html"&gt;Geoffry Moore&amp;rsquo;s “vision of the product”&lt;/a&gt;.&lt;/p&gt;&#10;&lt;h2 id="2-optional-get-a-tech-advisor-or-fractional-cto"&gt;2. (Optional) Get a Tech Advisor or Fractional CTO &lt;a class="hlink" href="#2-optional-get-a-tech-advisor-or-fractional-cto" aria-label="Link to 2. (Optional) Get a Tech Advisor or Fractional CTO"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Find a senior tech lead or a part-time CTO. They can help you hire the right developer.&lt;/p&gt;</description></item><item><title>Rails 8: Introducing the New Default Asset Pipeline – Propshaft</title><link>https://jetthoughts.com/blog/rails-8-introducing-new-default-asset-pipeline-propshaft-ruby/</link><pubDate>Fri, 25 Oct 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rails-8-introducing-new-default-asset-pipeline-propshaft-ruby/</guid><description>&lt;p&gt;The Rails asset pipeline helps manage static assets like CSS, JavaScript, and images. It improves delivery speed by compressing and combining these files. Sprockets used to be the main tool for this, providing useful features like precompilation and versioning. However, it was often too complicated.&lt;/p&gt;&#10;&lt;p&gt;With Propshaft, Rails aims for simplicity. It focuses on key tasks like direct file linking and caching. This makes it easier for developers to manage their assets without extra confusion.&lt;/p&gt;</description></item><item><title>Stop the AI Obsession: The Smart Way to Validate Your Startup Idea</title><link>https://jetthoughts.com/blog/stop-ai-obsession-smart-way-validate-your-startup-idea-product-bootstrap/</link><pubDate>Fri, 25 Oct 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/stop-ai-obsession-smart-way-validate-your-startup-idea-product-bootstrap/</guid><description>&lt;p&gt;Many founders today fixate on AI. They think adding AI to their product will draw users in droves, and they believe AI is the magic ingredient for success. But this obsession can mislead. It distracts from the core task of building a product that solves real customer problems.&lt;/p&gt;&#10;&lt;p&gt;AI is exciting. It&amp;rsquo;s new and shiny. The media hypes its potential. Tech giants invest billions in AI research. Startups with &amp;ldquo;AI&amp;rdquo; in their pitch decks attract attention.&lt;/p&gt;</description></item><item><title>Own Heroku Review Apps with GitHub Actions and Kamal 2</title><link>https://jetthoughts.com/blog/own-heroku-review-apps-with-github-actions-kamal-2-devops-development/</link><pubDate>Wed, 23 Oct 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/own-heroku-review-apps-with-github-actions-kamal-2-devops-development/</guid><description>&lt;p&gt;Continuous delivery is vital in modern software development. It ensures that code changes are released quickly and reliably. &lt;strong&gt;Heroku Review Apps&lt;/strong&gt; help in this process by creating temporary environments for each pull request. This makes it easy to test changes before merging them into the main branch.&lt;/p&gt;&#10;&lt;p&gt;By automatically deploying code changes to a live environment, teams can catch issues early. This prevents bugs from reaching production and improves code quality. To learn more about how Heroku Review Apps prevent delivering bugs to production, check out our detailed post: &lt;a href="https://jetthoughts.com/blog/heroku-reviews-apps-prevent-delivering-bugs-on-production-ci-startup/"&gt;Heroku Reviews Apps Prevent Delivering Bugs on Production CI Startup&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Develop a Minimalistic Process for Development Teams to Innovate</title><link>https://jetthoughts.com/blog/develop-minimalistic-process-for-development-teams-innovate-startup-productivity/</link><pubDate>Wed, 16 Oct 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/develop-minimalistic-process-for-development-teams-innovate-startup-productivity/</guid><description>&lt;p&gt;I just finished reading &lt;a href="https://www.goodreads.com/book/show/58046715-continuous-discovery-habits?ref=rae_0"&gt;&amp;ldquo;Continuous Discovery Habits: Discover Products That Create Customer Value and Business Value.&amp;rdquo;&lt;/a&gt; The book combines &lt;a href="https://www.impactmapping.org/"&gt;Impact Mapping&lt;/a&gt;, Customer Interview, and &lt;a href="https://go.ajsmart.com/ldj"&gt;LDJ&lt;/a&gt; to create a process that can be used to develop innovative products.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/develop-minimalistic-process-for-development-teams-innovate-startup-productivity/file_0_hu_374895a875b984c4.webp" srcset="https://jetthoughts.com/blog/develop-minimalistic-process-for-development-teams-innovate-startup-productivity/file_0_hu_374895a875b984c4.webp 800w, https://jetthoughts.com/blog/develop-minimalistic-process-for-development-teams-innovate-startup-productivity/file_0_hu_c6e03c1d29730ab4.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="800" alt="fun and colourful image denoting ideation and brand strategy" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;In 2024, I aim to create a simple process that even inexperienced startup founders can easily follow to achieve consistent results despite uncertainties.&lt;/p&gt;</description></item><item><title>Automate Your Deployments with Kamal 2 and GitHub Actions</title><link>https://jetthoughts.com/blog/automate-your-deployments-with-kamal-2-github-actions-devops-development/</link><pubDate>Fri, 11 Oct 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/automate-your-deployments-with-kamal-2-github-actions-devops-development/</guid><description>&lt;p&gt;Deployments shouldn’t be complex. You don’t need a lot of complicated configurations. That’s where Kamal 2 helps. It makes setting up servers and deploying easy.&lt;/p&gt;&#10;&lt;p&gt;We’ll use Kamal 2 to set up auto-deployments from GitHub Actions.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/automate-your-deployments-with-kamal-2-github-actions-devops-development/file_0_hu_1846e7577594ee43.webp" srcset="https://jetthoughts.com/blog/automate-your-deployments-with-kamal-2-github-actions-devops-development/file_0_hu_1846e7577594ee43.webp 800w, https://jetthoughts.com/blog/automate-your-deployments-with-kamal-2-github-actions-devops-development/file_0_hu_7388e1abf7fc87d7.webp 1312w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="449" alt="GitHub and Kamal Icons: A simple, clean image with GitHub, Kamal, and Ruby logos connected in some way, perhaps with gears or arrows, to symbolize the integration of these technologies in an automated workflow" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Why Your Form Submission Fails: Hotwire/Turbo 1.x, Cloudflare, and Missing Validation Messages</title><link>https://jetthoughts.com/blog/why-your-form-submission-fails-hotwire-cloudflare-missing-validation-messages-rails/</link><pubDate>Thu, 03 Oct 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/why-your-form-submission-fails-hotwire-cloudflare-missing-validation-messages-rails/</guid><description>&lt;p&gt;Recently, we encountered a bug in our application. A user reported that after submitting a form, nothing happened. No messages appeared, and the form didn’t update. We set out to find the issue.&lt;/p&gt;&#10;&lt;p&gt;First, we reproduced the problem in our development environment. Everything worked fine, but the form showed validation messages when needed, so we tested it in production.&lt;/p&gt;&#10;&lt;p&gt;At first, we couldn’t see the problem in production either. The form seemed to work for us, but the user kept experiencing the issue. Determined to find the cause, we dug deeper.&lt;/p&gt;</description></item><item><title>How to Handle Software Vendors Missing Deadlines Effectively</title><link>https://jetthoughts.com/blog/how-handle-software-vendors-missing-deadlines-effectively-development-softwaredevelopment/</link><pubDate>Sun, 29 Sep 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-handle-software-vendors-missing-deadlines-effectively-development-softwaredevelopment/</guid><description>&lt;p&gt;Dealing with missed work deadlines can be tough, especially when software vendors are late. Learn how to handle these situations, set clear timelines, and improve vendor accountability. Find ways to enhance internal processes and learn from past experiences. Gain practical steps to manage vendor delays and prevent missed project deadlines.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-handle-software-vendors-missing-deadlines-effectively-development-softwaredevelopment/file_0_hu_32ed242abc51727b.webp" srcset="https://jetthoughts.com/blog/how-handle-software-vendors-missing-deadlines-effectively-development-softwaredevelopment/file_0_hu_32ed242abc51727b.webp 800w, https://jetthoughts.com/blog/how-handle-software-vendors-missing-deadlines-effectively-development-softwaredevelopment/file_0_hu_7b7c9a3f91101dc6.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="457" alt="multiple engines with golden floss around them" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="establish-a-clear-project-timeline"&gt;Establish a Clear Project Timeline &lt;a class="hlink" href="#establish-a-clear-project-timeline" aria-label="Link to Establish a Clear Project Timeline"&gt;#&lt;/a&gt;&lt;/h2&gt;</description></item><item><title>Why Assigning Tasks Directly from the Backlog Hurts Team Collaboration and Efficiency</title><link>https://jetthoughts.com/blog/why-assigning-tasks-directly-from-backlog-hurts-team-collaboration-efficiency-agile-startup/</link><pubDate>Fri, 27 Sep 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/why-assigning-tasks-directly-from-backlog-hurts-team-collaboration-efficiency-agile-startup/</guid><description>&lt;p&gt;In the fast-paced world of startups, poor task management can cripple team productivity and drain profits. Many companies unknowingly harm their teams by assigning tasks directly from the backlog to individual developers. This practice can delay projects and increase costs by up to 50%.&lt;/p&gt;&#10;&lt;p&gt;In this article, we&amp;rsquo;ll explore why this approach damages team collaboration and creates issues like code ownership. We&amp;rsquo;ll also discuss how to enhance efficiency by fostering better teamwork.&lt;/p&gt;</description></item><item><title>Drive Successful Product Development with JetThoughts</title><link>https://jetthoughts.com/blog/drive-successful-product-development-with-jetthoughts/</link><pubDate>Thu, 26 Sep 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/drive-successful-product-development-with-jetthoughts/</guid><description>&lt;p&gt;Welcome to the world of product development, where innovation meets strategy! In today&amp;rsquo;s fast-paced market, driving successful product development is essential for staying ahead of the curve. With &lt;a href="https://jetthoughts.com"&gt;JetThoughts&lt;/a&gt;, companies can harness creativity, technology, and market insights to create winning products.&lt;/p&gt;&#10;&lt;p&gt;Offering design thinking, agile methodologies, and customer-centric practices, JetThoughts ensures products exceed expectations. By leveraging JetThoughts, businesses streamline processes, reduce time-to-market, and drive profitability. Whether a startup disrupting the industry or an established innovator, JetThoughts provides tools to transform ideas into market-ready solutions.&lt;/p&gt;</description></item><item><title>Direct Upload with Rails &amp; Dropzone.js</title><link>https://jetthoughts.com/blog/direct-upload-with-rails-dropzonejs-webdev/</link><pubDate>Wed, 25 Sep 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/direct-upload-with-rails-dropzonejs-webdev/</guid><description>&lt;p&gt;Configuring direct file uploads in Rails is now easier than ever. In this article, I&amp;rsquo;ll show you how to create a file upload component in Rails 7. We&amp;rsquo;ll use Active Storage, Stimulus, and Dropzone.js to make the process smooth and user-friendly.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/direct-upload-with-rails-dropzonejs-webdev/file_0_hu_164a64f9dd92e1b1.webp" srcset="https://jetthoughts.com/blog/direct-upload-with-rails-dropzonejs-webdev/file_0_hu_164a64f9dd92e1b1.webp 522w, https://jetthoughts.com/blog/direct-upload-with-rails-dropzonejs-webdev/file_0_hu_164a64f9dd92e1b1.webp 522w" sizes="(max-width: 760px) 100vw, 556px" width="522" height="486" alt="Dropzone with direct upload" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="prerequisites"&gt;Prerequisites &lt;a class="hlink" href="#prerequisites" aria-label="Link to Prerequisites"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Before you begin, make sure you have the following set up:&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;strong&gt;Install Active Storage&lt;/strong&gt;: If you haven&amp;rsquo;t already, run &lt;code&gt;rails active_storage:install&lt;/code&gt; and then migrate your database.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Add Active Storage Dependency&lt;/strong&gt;: Include Active Storage by running &lt;code&gt;yarn add activestorage&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Configure CORS for Your Storage Service&lt;/strong&gt;: If you use a cloud storage service like AWS S3, configure Cross-Origin Resource Sharing (CORS). This allows your frontend to communicate with the storage service securely. For details on setting up CORS for Active Storage, see the &lt;a href="https://edgeguides.rubyonrails.org/active_storage_overview.html#cross-origin-resource-sharing-cors-configuration"&gt;Rails documentation&lt;/a&gt;.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;h2 id="step-1-setting-up-the-dropzone-controller"&gt;Step 1: Setting Up the Dropzone Controller &lt;a class="hlink" href="#step-1-setting-up-the-dropzone-controller" aria-label="Link to Step 1: Setting Up the Dropzone Controller"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;First, create a &lt;code&gt;dropzone_controller.js&lt;/code&gt; file. This Stimulus controller manages file uploads and integrates with Dropzone.js and Active Storage&amp;rsquo;s Direct Upload.&lt;/p&gt;</description></item><item><title>How a Fractional CTO Turned a Mess into a Stable Product</title><link>https://jetthoughts.com/blog/how-fractional-cto-turned-mess-into-stable-product-startup-usecase/</link><pubDate>Tue, 24 Sep 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-fractional-cto-turned-mess-into-stable-product-startup-usecase/</guid><description>&lt;p&gt;&lt;strong&gt;Are bugs pushing your customers away?&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Maybe your app breaks at the worst times. Maybe its design confuses users. These problems aren&amp;rsquo;t rare. They&amp;rsquo;re probably hurting your business more than you think.&lt;/p&gt;&#10;&lt;p&gt;Here&amp;rsquo;s a story about a company in that exact spot. They were losing clients left and right. Bugs piled up. The vendor they trusted wasn&amp;rsquo;t delivering. The owner wasn&amp;rsquo;t technical and felt lost. We stepped in as a fractional CTO, found the real issues, and turned things around. Here&amp;rsquo;s what happened.&lt;/p&gt;</description></item><item><title>Building scalable Rails APIs: Architecture and design patterns</title><link>https://jetthoughts.com/blog/building-scalable-rails-apis-architecture-design-patterns/</link><pubDate>Tue, 17 Sep 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/building-scalable-rails-apis-architecture-design-patterns/</guid><description>&lt;h2 id="the-challenge"&gt;The Challenge &lt;a class="hlink" href="#the-challenge" aria-label="Link to The Challenge"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Building an API that can handle millions of requests without breaking a sweat?&lt;/p&gt;&#10;&lt;h2 id="our-approach"&gt;Our Approach &lt;a class="hlink" href="#our-approach" aria-label="Link to Our Approach"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Let&amp;rsquo;s build it right from the start with proven architecture patterns and Rails best practices&lt;/p&gt;&#10;&lt;p&gt;Have you ever built an API that worked great with a few hundred users, only to crash under real-world load? We&amp;rsquo;ve been there. What starts as a simple Rails API can quickly become a bottleneck when you need to scale.&lt;/p&gt;</description></item><item><title>Rails 7 upgrade guide: Step-by-step migration from Rails 6</title><link>https://jetthoughts.com/blog/rails-7-upgrade-guide-step-by-step-migration/</link><pubDate>Tue, 17 Sep 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rails-7-upgrade-guide-step-by-step-migration/</guid><description>&lt;h2 id="the-challenge"&gt;The Challenge &lt;a class="hlink" href="#the-challenge" aria-label="Link to The Challenge"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Stuck on Rails 6 while Rails 7 offers amazing performance improvements and new features?&lt;/p&gt;&#10;&lt;h2 id="our-approach"&gt;Our Approach &lt;a class="hlink" href="#our-approach" aria-label="Link to Our Approach"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Let&amp;rsquo;s walk through a complete upgrade process together, step by step&lt;/p&gt;&#10;&lt;p&gt;Have you ever wondered if upgrading Rails is worth the potential headaches? We&amp;rsquo;ve been there too. Rails 7 brings some incredible improvements – faster asset compilation with esbuild, better security defaults, and performance boosts that can make your app noticeably snappier.&lt;/p&gt;</description></item><item><title>Ruby memory management best practices for large applications</title><link>https://jetthoughts.com/blog/ruby-memory-management-best-practices-large-applications/</link><pubDate>Tue, 17 Sep 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ruby-memory-management-best-practices-large-applications/</guid><description>&lt;h2 id="the-challenge"&gt;The Challenge &lt;a class="hlink" href="#the-challenge" aria-label="Link to The Challenge"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Memory leaks killing your app&amp;rsquo;s performance? Watching your Rails server&amp;rsquo;s memory usage creep up until it crashes?&lt;/p&gt;&#10;&lt;h2 id="our-approach"&gt;Our Approach &lt;a class="hlink" href="#our-approach" aria-label="Link to Our Approach"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Let&amp;rsquo;s master Ruby memory management and build apps that stay lean and fast&lt;/p&gt;&#10;&lt;p&gt;Have you ever deployed a Rails app that starts using 100MB of memory, only to find it consuming 2GB after a few days? Memory creep is one of the most insidious performance problems in Ruby applications. It starts small, grows slowly, and then suddenly your servers are crashing with out-of-memory errors.&lt;/p&gt;</description></item><item><title>Ruby on Rails testing strategy: From unit tests to integration</title><link>https://jetthoughts.com/blog/ruby-on-rails-testing-strategy-unit-tests-integration/</link><pubDate>Tue, 17 Sep 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ruby-on-rails-testing-strategy-unit-tests-integration/</guid><description>&lt;h2 id="the-challenge"&gt;The Challenge &lt;a class="hlink" href="#the-challenge" aria-label="Link to The Challenge"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Tired of bugs slipping through to production? Stressed about deploying changes that might break existing features?&lt;/p&gt;&#10;&lt;h2 id="our-approach"&gt;Our Approach &lt;a class="hlink" href="#our-approach" aria-label="Link to Our Approach"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Let&amp;rsquo;s build a bulletproof testing strategy that catches issues before your users ever see them&lt;/p&gt;&#10;&lt;p&gt;Have you ever deployed what seemed like a simple change, only to get a panicked call that half your app is broken? We&amp;rsquo;ve all been there. That sinking feeling when you realize a small tweak to one feature accidentally broke something completely unrelated.&lt;/p&gt;</description></item><item><title>Red Flags to Watch for in a Big PR: When to Stop, Split, or Rework</title><link>https://jetthoughts.com/blog/red-flags-watch-for-in-big-pr-when-stop-split-or-rework-development-productivity/</link><pubDate>Wed, 11 Sep 2024 16:47:44 +0000</pubDate><guid>https://jetthoughts.com/blog/red-flags-watch-for-in-big-pr-when-stop-split-or-rework-development-productivity/</guid><description>&lt;p&gt;Big pull requests (PRs) can &lt;a href="https://jetthoughts.com/blog/how-small-pr-improves-team-productivity-development/"&gt;cause delays and block progress&lt;/a&gt;. As a developer, it&amp;rsquo;s important to spot the signs that a PR is too large and needs to be split or reworked. Here are the key red flags to look out for and what to do about them.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/red-flags-watch-for-in-big-pr-when-stop-split-or-rework-development-productivity/file_0_hu_ce3e9eb7b4c7b8d5.webp" srcset="https://jetthoughts.com/blog/red-flags-watch-for-in-big-pr-when-stop-split-or-rework-development-productivity/file_0_hu_ce3e9eb7b4c7b8d5.webp 800w, https://jetthoughts.com/blog/red-flags-watch-for-in-big-pr-when-stop-split-or-rework-development-productivity/file_0_hu_a776ef92d09ba47f.webp 1536w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="533" alt="cartoon ant rolling a blue ball" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="too-many-lines-of-changes"&gt;Too Many Lines of Changes &lt;a class="hlink" href="#too-many-lines-of-changes" aria-label="Link to Too Many Lines of Changes"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;A PR with more than 500 lines of code is often too big for an efficient review. Large PRs are also harder to understand, review, and test, increasing the risk of missing bugs or issues.&lt;/p&gt;</description></item><item><title>How Small PR Improves Team Productivity</title><link>https://jetthoughts.com/blog/how-small-pr-improves-team-productivity-development/</link><pubDate>Wed, 11 Sep 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-small-pr-improves-team-productivity-development/</guid><description>&lt;p&gt;In many companies, teams work together to achieve big goals. One way to keep the team productive is by focusing on small pull requests (PRs). But what does that mean, and how does it help?&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-small-pr-improves-team-productivity-development/file_0_hu_c3d93c2e7ae2f374.webp" srcset="https://jetthoughts.com/blog/how-small-pr-improves-team-productivity-development/file_0_hu_c3d93c2e7ae2f374.webp 800w, https://jetthoughts.com/blog/how-small-pr-improves-team-productivity-development/file_0_hu_7628b4e6e02dd158.webp 1080w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="800" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h3 id="what-is-a-small-pr"&gt;What is a Small PR? &lt;a class="hlink" href="#what-is-a-small-pr" aria-label="Link to What is a Small PR?"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;A small PR is a bite-sized change made to the code or project. Instead of making one huge update, a team member focuses on a smaller, more manageable piece of work. This change is easy to review, understand, and merge with the main project.&lt;/p&gt;</description></item><item><title>What to Do When You Have a Big PR Blocking Other Issues</title><link>https://jetthoughts.com/blog/what-do-when-you-have-big-pr-blocking-other-issues-development-productivity/</link><pubDate>Wed, 11 Sep 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/what-do-when-you-have-big-pr-blocking-other-issues-development-productivity/</guid><description>&lt;p&gt;Sometimes, despite your best efforts, you end up with a large pull request (PR) that blocks other tasks. It can slow down the whole team and cause frustration. So, how do you handle it? Here&amp;rsquo;s a simple guide to managing a big PR without causing chaos.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/what-do-when-you-have-big-pr-blocking-other-issues-development-productivity/file_0_hu_afb5d5ed5a3e45fb.webp" srcset="https://jetthoughts.com/blog/what-do-when-you-have-big-pr-blocking-other-issues-development-productivity/file_0_hu_afb5d5ed5a3e45fb.webp 800w, https://jetthoughts.com/blog/what-do-when-you-have-big-pr-blocking-other-issues-development-productivity/file_0_hu_e3cf125892aa345d.webp 1312w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="449" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h1 id="realize-the-pr-is-too-big"&gt;Realize the PR is Too Big &lt;a class="hlink" href="#realize-the-pr-is-too-big" aria-label="Link to Realize the PR is Too Big"&gt;#&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;The hardest step is seeing that your PR is too large. It&amp;rsquo;s tempting to keep adding changes, but that can cause more problems. The toughest choice is to stop and admit the PR has become too big.&lt;/p&gt;</description></item><item><title>Working with LLMs in Ruby on Rails: A Simple Guide</title><link>https://jetthoughts.com/blog/working-with-llms-in-ruby-on-rails-simple-guide-llm/</link><pubDate>Thu, 29 Aug 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/working-with-llms-in-ruby-on-rails-simple-guide-llm/</guid><description>&lt;h2 id="why-you-need-to-work-with-llms-today"&gt;Why You Need to Work with LLMs Today &lt;a class="hlink" href="#why-you-need-to-work-with-llms-today" aria-label="Link to Why You Need to Work with LLMs Today"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Large Language Models (LLMs) are reshaping how we build apps. Knowing how to use LLMs lets you create smart, interactive tools that understand and generate text. This skill is now key in modern development. Whether you build chatbots or text analyzers, LLMs can add value. So, let’s dive into how to run an LLM server locally and use it in a Ruby on Rails (RoR) project.&lt;/p&gt;</description></item><item><title>Automating SSL Certificate Generation with Traefik and Kamal: A Step-by-Step Guide</title><link>https://jetthoughts.com/blog/automating-ssl-certificate-generation-with-traefik-kamal-step-by-guide/</link><pubDate>Tue, 20 Aug 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/automating-ssl-certificate-generation-with-traefik-kamal-step-by-guide/</guid><description>&lt;p&gt;In this guide, we&amp;rsquo;ll explore how to configure Traefik with Kamal to automatically obtain and manage SSL certificates for your Ruby on Rails application. We&amp;rsquo;ll break down a working configuration and explain each line to help you understand how to set up a secure deployment environment.&lt;/p&gt;&#10;&lt;h2 id="why-use-traefik-with-kamal"&gt;Why Use Traefik with Kamal? &lt;a class="hlink" href="#why-use-traefik-with-kamal" aria-label="Link to Why Use Traefik with Kamal?"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Traefik is a modern reverse proxy and load balancer designed to handle dynamic containerized environments. It simplifies routing, SSL certificate management, and more. When used with Kamal, Traefik can automate SSL certificate acquisition and renewal, making it easier to deploy secure, production-ready Rails applications.&lt;/p&gt;</description></item><item><title>JetThoughts Soars Among Top Web Development Companies in the USA for 2024 by Techreviewer.co</title><link>https://jetthoughts.com/blog/jetthoughts-soars-among-top-web-development-companies-in-usa-for-2024-by-techreviewerco-testdev-devresolutions2024/</link><pubDate>Mon, 12 Aug 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/jetthoughts-soars-among-top-web-development-companies-in-usa-for-2024-by-techreviewerco-testdev-devresolutions2024/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/jetthoughts-soars-among-top-web-development-companies-in-usa-for-2024-by-techreviewerco-testdev-devresolutions2024/file_0_hu_a5e65802b17041ff.webp" srcset="https://jetthoughts.com/blog/jetthoughts-soars-among-top-web-development-companies-in-usa-for-2024-by-techreviewerco-testdev-devresolutions2024/file_0_hu_a5e65802b17041ff.webp 367w, https://jetthoughts.com/blog/jetthoughts-soars-among-top-web-development-companies-in-usa-for-2024-by-techreviewerco-testdev-devresolutions2024/file_0_hu_a5e65802b17041ff.webp 367w" sizes="(max-width: 760px) 100vw, 556px" width="367" height="503" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://jetthoughts.com/"&gt;JetThoughts&lt;/a&gt;, a leading web development agency, is thrilled to announce its inclusion in Techreviewer&amp;rsquo;s prestigious list of &lt;a href="https://techreviewer.co/us/top-web-development-companies"&gt;top web development companies in the USA&lt;/a&gt; for 2024. This recognition signifies &lt;a href="https://jetthoughts.com/"&gt;JetThoughts&lt;/a&gt;&amp;rsquo; dedication to delivering exceptional web experiences and innovative solutions that propel businesses forward in the digital landscape.&lt;/p&gt;&#10;&lt;p&gt;Being named among the elite web development firms in the nation by Techreviewer.co is a testament to &lt;a href="https://jetthoughts.com/"&gt;JetThoughts&lt;/a&gt;&amp;rsquo; unwavering commitment to excellence. The company has consistently pushed boundaries, fostering a team of skilled and passionate developers who leverage cutting-edge technologies to craft impactful websites and applications. This recognition validates &lt;a href="https://jetthoughts.com/"&gt;JetThoughts&lt;/a&gt;&amp;rsquo; position as a trusted partner for businesses seeking to elevate their online presence and achieve their digital goals.&lt;/p&gt;</description></item><item><title>Deploying Ruby on Rails applications with Kamal</title><link>https://jetthoughts.com/blog/deploying-ruby-on-rails-applications-with-kamal-devops-docker/</link><pubDate>Thu, 08 Aug 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/deploying-ruby-on-rails-applications-with-kamal-devops-docker/</guid><description>&lt;p&gt;With the release of Rails 8, &lt;a href="https://jetthoughts.com/blog/kamal-integration-in-rails-8-by-default-ruby/"&gt;Kamal will be the default tool for deploying Rails applications&lt;/a&gt;, simplifying the process for developers. This change is significant as it standardizes deployment, making it easier for both new and experienced developers to get their applications up and running. Utilizing a VPS for hosting your Rails applications is also a cost-effective alternative to platforms like Heroku, providing greater flexibility and control over your infrastructure.&lt;/p&gt;&#10;&lt;p&gt;In this guide, we will walk you through the steps to deploy a new Rails application on a VPS server using Kamal.&lt;/p&gt;</description></item><item><title>Emergency CTO Leadership: Navigating Software Development Challenges</title><link>https://jetthoughts.com/blog/emergency-cto-leadership-navigating-software-development-challenges/</link><pubDate>Fri, 02 Aug 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/emergency-cto-leadership-navigating-software-development-challenges/</guid><description>&lt;p&gt;In the fast-paced world of software, hurdles are a given. From sudden user spikes to tech debt or a key team member leaving, firms often need swift expert help. An emergency CTO can ease through these rough patches.&lt;/p&gt;&#10;&lt;h2 id="the-role-of-an-emergency-cto"&gt;The Role of an Emergency CTO &lt;a class="hlink" href="#the-role-of-an-emergency-cto" aria-label="Link to The Role of an Emergency CTO"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;An emergency CTO steps in to offer quick guidance and calm. Their tasks include:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Checking the state of projects and tech setup&lt;/li&gt;&#10;&lt;li&gt;Spotting and ranking urgent issues&lt;/li&gt;&#10;&lt;li&gt;Rolling out fast fixes&lt;/li&gt;&#10;&lt;li&gt;Keeping development on track&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="key-challenges-in-software-development"&gt;Key Challenges in Software Development &lt;a class="hlink" href="#key-challenges-in-software-development" aria-label="Link to Key Challenges in Software Development"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Software work is full of bumps that can slow progress and hit deadlines. Common ones are:&lt;/p&gt;</description></item><item><title>Creating a Minimum Lovable Product: Balancing Functionality and User Delight</title><link>https://jetthoughts.com/blog/creating-minimum-lovable-product-balancing-functionality-user-delight/</link><pubDate>Thu, 01 Aug 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/creating-minimum-lovable-product-balancing-functionality-user-delight/</guid><description>&lt;p&gt;In the fast-paced world of startups, it&amp;rsquo;s key to create a product that works well and makes users happy. This guide shows how to build a Minimum Lovable Product (MLP) that achieves this balance.&lt;/p&gt;&#10;&lt;h2 id="1-what-is-a-minimum-lovable-product"&gt;1. What is a Minimum Lovable Product? &lt;a class="hlink" href="#1-what-is-a-minimum-lovable-product" aria-label="Link to 1. What is a Minimum Lovable Product?"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;An MVP (Minimum Viable Product) has just enough features to test an idea. An MLP goes further by making sure users love it. This part explains why aiming for an MLP is better.&lt;/p&gt;</description></item><item><title>How Automated QA Testing Can Accelerate Your Startup's Growth</title><link>https://jetthoughts.com/blog/how-automated-qa-testing-can-accelerate-your-startups-growth-startup-webdev/</link><pubDate>Thu, 01 Aug 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-automated-qa-testing-can-accelerate-your-startups-growth-startup-webdev/</guid><description>&lt;p&gt;In the fast-paced world of startups, maintaining top software quality is key to growth and success. Automated QA tests offer a sure and quick way to maintain software quality while speeding up growth. This piece will show how automated QA testing can help your startup thrive.&lt;/p&gt;&#10;&lt;h2 id="why-quality-assurance-matters"&gt;Why Quality Assurance Matters &lt;a class="hlink" href="#why-quality-assurance-matters" aria-label="Link to Why Quality Assurance Matters"&gt;#&lt;/a&gt;&lt;/h2&gt;</description></item><item><title>Prototyping Your Startup MVP: From Concept to Reality</title><link>https://jetthoughts.com/blog/prototyping-your-startup-mvp-from-concept-reality-agile/</link><pubDate>Thu, 01 Aug 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/prototyping-your-startup-mvp-from-concept-reality-agile/</guid><description>&lt;p&gt;Making a Minimum Viable Product (MVP) is key in the fast-paced startup world. This guide will help you step by step to turn your idea into a natural product.&lt;/p&gt;&#10;&lt;h2 id="what-is-an-mvp"&gt;What is an MVP? &lt;a class="hlink" href="#what-is-an-mvp" aria-label="Link to What is an MVP?"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;An MVP is the simplest version of your product that still solves the main problem and gives users value. It lets you launch fast, get feedback, and save time and money.&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;What:&lt;/strong&gt; Learn what an MVP is and why it matters.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Why:&lt;/strong&gt; See how an MVP can speed up finding the right market fit.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Examples:&lt;/strong&gt; Look at famous startups that began with an MVP.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="steps-to-build-your-mvp"&gt;Steps to Build Your MVP &lt;a class="hlink" href="#steps-to-build-your-mvp" aria-label="Link to Steps to Build Your MVP"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Making an MVP needs good planning. Here are the steps:&lt;/p&gt;</description></item><item><title>Streamlined Startup Development Team</title><link>https://jetthoughts.com/blog/streamlined-startup-development-team/</link><pubDate>Thu, 01 Aug 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/streamlined-startup-development-team/</guid><description>&lt;p&gt;Starting a new venture is hard, especially for non-tech founders. Finding the right remote developers can be a big challenge. Here&amp;rsquo;s a simple guide to build an effective team that can launch your MVP and find market fit fast.&lt;/p&gt;&#10;&lt;h2 id="the-hiring-challenge"&gt;The Hiring Challenge &lt;a class="hlink" href="#the-hiring-challenge" aria-label="Link to The Hiring Challenge"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Non-tech founders often struggle to hire good remote developers. This can lead to delays and high costs. To avoid these issues, focus on key roles with specific skills.&lt;/p&gt;</description></item><item><title>Navigating Team Transitions: A Guide for Non-Technical Founders</title><link>https://jetthoughts.com/blog/navigating-team-transitions-guide-for-non-technical-founders-startup-agile/</link><pubDate>Tue, 30 Jul 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/navigating-team-transitions-guide-for-non-technical-founders-startup-agile/</guid><description>&lt;p&gt;Change can be challenging, especially when it involves individuals. Replacing a team is always a difficult choice, but keeping your startup on the right path is sometimes necessary. Here is a roadmap to help you navigate this delicate situation. It will keep you calm and your company on track.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/navigating-team-transitions-guide-for-non-technical-founders-startup-agile/file_0_hu_381be7b42d92585.webp" srcset="https://jetthoughts.com/blog/navigating-team-transitions-guide-for-non-technical-founders-startup-agile/file_0_hu_381be7b42d92585.webp 800w, https://jetthoughts.com/blog/navigating-team-transitions-guide-for-non-technical-founders-startup-agile/file_0_hu_e3e46d03fad1e54e.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="800" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;The dilemma is how to replace a compact yet efficient team. Your workforce consists of engineers and support staff. They have handled operations with skill up to this point. But expenses are increasing, and the outdated codebase is proving problematic. How can you navigate this shift without disrupting the established workflow?&lt;/p&gt;</description></item><item><title>Kamal Integration in Rails 8 by Default</title><link>https://jetthoughts.com/blog/kamal-integration-in-rails-8-by-default-ruby/</link><pubDate>Mon, 29 Jul 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/kamal-integration-in-rails-8-by-default-ruby/</guid><description>&lt;p&gt;In &lt;strong&gt;Rails 8&lt;/strong&gt;, Kamal will be included by default. This change aims to simplify deployment and infrastructure management processes for developers.&lt;/p&gt;&#10;&lt;h2 id="what-is-kamal"&gt;What is Kamal? &lt;a class="hlink" href="#what-is-kamal" aria-label="Link to What is Kamal?"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Kamal is a deployment tool that works with Docker and Kubernetes. It automates and simplifies the deployment of applications, providing support for containerization and orchestration.&lt;/p&gt;&#10;&lt;h2 id="key-changes"&gt;Key Changes &lt;a class="hlink" href="#key-changes" aria-label="Link to Key Changes"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Adding Kamal to the Gemfile:&lt;/strong&gt;&#10;The Gemfile of new Rails applications will now include the kamal gem by default:&lt;/p&gt;</description></item><item><title>The Ultimate Guide to Hiring Ruby on Rails Developers</title><link>https://jetthoughts.com/blog/ultimate-guide-hiring-ruby-on-rails-developers/</link><pubDate>Wed, 10 Jul 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ultimate-guide-hiring-ruby-on-rails-developers/</guid><description>&lt;p&gt;Ruby on Rails (RoR) is a top choice and a pivotal tool in web development, especially for startups. Its speed, reliability, and ability to simplify complex tasks make it a favorite among startups, enabling them to launch products quickly.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/ultimate-guide-hiring-ruby-on-rails-developers/file_0_hu_7dc39397d588fc59.webp" srcset="https://jetthoughts.com/blog/ultimate-guide-hiring-ruby-on-rails-developers/file_0_hu_7dc39397d588fc59.webp 800w, https://jetthoughts.com/blog/ultimate-guide-hiring-ruby-on-rails-developers/file_0_hu_f6a6abc013ef1d2a.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="800" alt="the cartoon-like image of a young startup entrepreneur searching for a ruby gem in a pile of coals. Let me know if you need any changes or additional elements!" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Top 3 Ways to Test Ideas Without Developers</title><link>https://jetthoughts.com/blog/top-3-ways-test-ideas-without-developers-startup-agile/</link><pubDate>Thu, 04 Jul 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/top-3-ways-test-ideas-without-developers-startup-agile/</guid><description>&lt;h2 id="intro"&gt;Intro &lt;a class="hlink" href="#intro" aria-label="Link to Intro"&gt;#&lt;/a&gt;&lt;/h2&gt;</description></item><item><title>Transforming Titans: A Novel Journey of Agile Leadership in Outsourcing</title><link>https://jetthoughts.com/blog/transforming-titans-outsourcing-odyssey-leadership-agile/</link><pubDate>Thu, 04 Jul 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/transforming-titans-outsourcing-odyssey-leadership-agile/</guid><description>&lt;h3 id="chapter-1-the-new-beginning"&gt;&lt;strong&gt;Chapter 1: The New Beginning&lt;/strong&gt; &lt;a class="hlink" href="#chapter-1-the-new-beginning" aria-label="Link to Chapter 1: The New Beginning"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a href="https://www.linkedin.com/in/paul-keen/"&gt;Paul Keen&lt;/a&gt; stood in his new office, his mind racing with possibilities and challenges. He had just been hired as the CTO of a company known for its outstaffing model, where they provided clients with skilled tech personnel. However, Paul&amp;rsquo;s mission was clear: transform this company into a thriving outsourcing service provider.&lt;/p&gt;&#10;&lt;p&gt;The CEO had been clear. The market was changing, and they needed to adapt. Clients wanted complete solutions, not just people. The task seemed daunting, but Paul was ready. He knew this journey would be challenging. There would be obstacles, and it would be tough without help. He thought of &amp;ldquo;The Phoenix Project,&amp;rdquo; a book he once read about turning around a failing IT organization. It was time to channel that same energy.&lt;/p&gt;</description></item><item><title>Avoid Candidates Who Hide Details</title><link>https://jetthoughts.com/blog/avoid-candidates-who-hide-details-startup-leadership/</link><pubDate>Wed, 03 Jul 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/avoid-candidates-who-hide-details-startup-leadership/</guid><description>&lt;p&gt;Understanding how a candidate plans to work is crucial when hiring remote workers. Have you ever encountered a candidate who hesitates to share their work methods, perhaps citing:&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;I&amp;rsquo;m not a free consultant&lt;/p&gt;&#10;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;While it may sound witty, it&amp;rsquo;s a red flag. Here&amp;rsquo;s why.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/avoid-candidates-who-hide-details-startup-leadership/file_0_hu_4b6da51bcbb3fad5.webp" srcset="https://jetthoughts.com/blog/avoid-candidates-who-hide-details-startup-leadership/file_0_hu_4b6da51bcbb3fad5.webp 800w, https://jetthoughts.com/blog/avoid-candidates-who-hide-details-startup-leadership/file_0_hu_dfbce4e78c36a821.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="800" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="fear-of-intellectual-theft-not-a-valid-excuse"&gt;Fear of Intellectual Theft? Not a Valid Excuse &lt;a class="hlink" href="#fear-of-intellectual-theft-not-a-valid-excuse" aria-label="Link to Fear of Intellectual Theft? Not a Valid Excuse"&gt;#&lt;/a&gt;&lt;/h2&gt;</description></item><item><title>New in Rails 7.2: Generated With .devcontainer</title><link>https://jetthoughts.com/blog/new-in-rails-72-generated-with-devcontainer-changelog/</link><pubDate>Wed, 03 Jul 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/new-in-rails-72-generated-with-devcontainer-changelog/</guid><description>&lt;p&gt;Exciting news from Rails! The latest Rails 7.2 has a new feature. When you create a new app, it now generates a &lt;code&gt;.devcontainer&lt;/code&gt; folder.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/new-in-rails-72-generated-with-devcontainer-changelog/file_0_hu_3ffa15d06f14dc36.webp" srcset="https://jetthoughts.com/blog/new-in-rails-72-generated-with-devcontainer-changelog/file_0_hu_3ffa15d06f14dc36.webp 800w, https://jetthoughts.com/blog/new-in-rails-72-generated-with-devcontainer-changelog/file_0_hu_a702026885855fc3.webp 1368w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="326" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="whats-in-the-devcontainer"&gt;What&amp;rsquo;s in the &lt;code&gt;.devcontainer&lt;/code&gt;? &lt;a class="hlink" href="#whats-in-the-devcontainer" aria-label="Link to What’s in the .devcontainer?"&gt;#&lt;/a&gt;&lt;/h2&gt;</description></item><item><title>New Rails 7.2: Added Rate Limiting</title><link>https://jetthoughts.com/blog/new-rails-72-added-rate-limiting-changelog/</link><pubDate>Wed, 03 Jul 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/new-rails-72-added-rate-limiting-changelog/</guid><description>&lt;p&gt;Ruby on Rails 7.2 added rate limiting to Action Controller. It&amp;rsquo;s cool and easy to use.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/new-rails-72-added-rate-limiting-changelog/file_0_hu_b557ad1a5060279e.webp" srcset="https://jetthoughts.com/blog/new-rails-72-added-rate-limiting-changelog/file_0_hu_b557ad1a5060279e.webp 800w, https://jetthoughts.com/blog/new-rails-72-added-rate-limiting-changelog/file_0_hu_eba9b7e52cf756ed.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="351" alt="rate_limit in Rails 7.2" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="whats-new"&gt;What&amp;rsquo;s New? &lt;a class="hlink" href="#whats-new" aria-label="Link to What’s New?"&gt;#&lt;/a&gt;&lt;/h2&gt;</description></item><item><title>type_for_attribute &amp; has_attribute? in Rails 7.2 Active Model</title><link>https://jetthoughts.com/blog/new-in-rails-72-active-model-got-typeforattribute-changelog/</link><pubDate>Wed, 03 Jul 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/new-in-rails-72-active-model-got-typeforattribute-changelog/</guid><description>&lt;h2 id="method-signature"&gt;Method signature &lt;a class="hlink" href="#method-signature" aria-label="Link to Method signature"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#79c0ff;font-weight:bold"&gt;ClassName&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;type_for_attribute(attribute_name) &lt;span style="color:#8b949e;font-style:italic"&gt;# =&amp;gt; ActiveModel::Type::Value subclass&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Rails 7.2 moved &lt;code&gt;type_for_attribute&lt;/code&gt; from Active Record to Active Model. Any class that includes &lt;code&gt;ActiveModel::Attributes&lt;/code&gt; now exposes the same type lookup that Active Record models have always had. The method returns the type object Rails uses internally to cast values, so you can ask &amp;ldquo;what is the declared type of &lt;code&gt;:age&lt;/code&gt;?&amp;rdquo; without instantiating the model.&lt;/p&gt;&#10;&lt;p&gt;The change shipped in &lt;a href="https://github.com/rails/rails/pull/51653"&gt;Rails PR #51653&lt;/a&gt; and is documented in the &lt;a href="https://guides.rubyonrails.org/7_2_release_notes.html"&gt;Rails 7.2 release notes&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Top Venture Builders in Germany: Leading Innovation Across Industries</title><link>https://jetthoughts.com/blog/top-venture-builders-in-germany-leading-innovation-across-industries-startup/</link><pubDate>Tue, 02 Jul 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/top-venture-builders-in-germany-leading-innovation-across-industries-startup/</guid><description>&lt;p&gt;Fed up! Are you aiming to create a new company but you are weak from a tech position? Are you excited to build your own software without any coding skills? Great, Venture Builders are being added now.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/top-venture-builders-in-germany-leading-innovation-across-industries-startup/file_0_hu_31cc2138af1e81d0.webp" srcset="https://jetthoughts.com/blog/top-venture-builders-in-germany-leading-innovation-across-industries-startup/file_0_hu_31cc2138af1e81d0.webp 800w, https://jetthoughts.com/blog/top-venture-builders-in-germany-leading-innovation-across-industries-startup/file_0_hu_9a49750fafd84fbd.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="800" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="the-pros-and-cons-of-venture-builders"&gt;The pros and cons of venture builders &lt;a class="hlink" href="#the-pros-and-cons-of-venture-builders" aria-label="Link to The pros and cons of venture builders"&gt;#&lt;/a&gt;&lt;/h2&gt;</description></item><item><title>How to avoid N + 1 and keep your Ruby on Rails controller clean</title><link>https://jetthoughts.com/blog/how-avoid-n-1-keep-your-ruby-on-rails-controller-clean/</link><pubDate>Mon, 01 Jul 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-avoid-n-1-keep-your-ruby-on-rails-controller-clean/</guid><description>&lt;blockquote&gt;&#10;&lt;h2 id="where-to-put-the-logic-related-to-database-queries-optimization-in-a-ruby-on-rails-application-we-want-to-answer-this-question-by-showing-you-the-facade-approach"&gt;Where to put the logic related to database queries optimization in a Ruby on Rails application. We want to answer this question by showing you the ‘Facade’ approach &lt;a class="hlink" href="#where-to-put-the-logic-related-to-database-queries-optimization-in-a-ruby-on-rails-application-we-want-to-answer-this-question-by-showing-you-the-facade-approach" aria-label="Link to Where to put the logic related to database queries optimization in a Ruby on Rails application. We want to answer this question by showing you the ‘Facade’ approach"&gt;#&lt;/a&gt;&lt;/h2&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-avoid-n-1-keep-your-ruby-on-rails-controller-clean/file_0_hu_660da41b4410d62b.webp" srcset="https://jetthoughts.com/blog/how-avoid-n-1-keep-your-ruby-on-rails-controller-clean/file_0_hu_660da41b4410d62b.webp 800w, https://jetthoughts.com/blog/how-avoid-n-1-keep-your-ruby-on-rails-controller-clean/file_0_hu_6860e07d7f1a67.webp 1400w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="466" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h3 id="outline-the-problem"&gt;Outline the problem &lt;a class="hlink" href="#outline-the-problem" aria-label="Link to Outline the problem"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;There is an application that stores a database of films and reviews. Every review has its own rate value.&lt;/p&gt;</description></item><item><title>Stop using Faker and random data in the test fixtures.</title><link>https://jetthoughts.com/blog/stop-using-faker-random-data-in-test-fixtures/</link><pubDate>Thu, 27 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/stop-using-faker-random-data-in-test-fixtures/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/stop-using-faker-random-data-in-test-fixtures/file_0_hu_76197aeec90757ff.webp" srcset="https://jetthoughts.com/blog/stop-using-faker-random-data-in-test-fixtures/file_0_hu_76197aeec90757ff.webp 800w, https://jetthoughts.com/blog/stop-using-faker-random-data-in-test-fixtures/file_0_hu_e8cfe100d72fe10f.webp 974w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="407" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Faker/FFaker&lt;/strong&gt; can seem like the perfect solution to generate data for testing.&lt;/p&gt;&#10;&lt;p&gt;In theory, Faker increases development speed while allowing you to have real-looking test data and having your database populated with more records while you’re doing development.&lt;/p&gt;&#10;&lt;p&gt;But in reality, Faker comes with hidden costs. That said, we don’t think you can truly appreciate their complexity without building them firsthand.&lt;/p&gt;&#10;&lt;p&gt;Here is what we learned using Faker in our projects.&lt;/p&gt;</description></item><item><title>Bridging the Gap: Building Trust Between Product and Engineering Teams</title><link>https://jetthoughts.com/blog/bridging-gap-building-trust-between-product-engineering-teams-organization-structure/</link><pubDate>Wed, 19 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/bridging-gap-building-trust-between-product-engineering-teams-organization-structure/</guid><description>&lt;p&gt;Companies often see their product and engineering teams competing. This lack of cooperation breeds distrust. It leads to blame games, slowing down development. But building trust solves this. It paves the way for smoother, more efficient work and fosters a friendly environment.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/bridging-gap-building-trust-between-product-engineering-teams-organization-structure/file_0_hu_d8d595e59c1290f3.webp" srcset="https://jetthoughts.com/blog/bridging-gap-building-trust-between-product-engineering-teams-organization-structure/file_0_hu_d8d595e59c1290f3.webp 800w, https://jetthoughts.com/blog/bridging-gap-building-trust-between-product-engineering-teams-organization-structure/file_0_hu_b6bd18d6044d612b.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="800" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="proven-strategies-for-better-collaboration"&gt;Proven Strategies for Better Collaboration &lt;a class="hlink" href="#proven-strategies-for-better-collaboration" aria-label="Link to Proven Strategies for Better Collaboration"&gt;#&lt;/a&gt;&lt;/h2&gt;</description></item><item><title>Why and When to Use Waterfall vs. Agile: A Business Perspective</title><link>https://jetthoughts.com/blog/why-when-use-waterfall-vs-agile-business-perspective-management/</link><pubDate>Wed, 12 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/why-when-use-waterfall-vs-agile-business-perspective-management/</guid><description>&lt;h2 id="waterfall-methodology"&gt;Waterfall Methodology &lt;a class="hlink" href="#waterfall-methodology" aria-label="Link to Waterfall Methodology"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/why-when-use-waterfall-vs-agile-business-perspective-management/file_0_hu_ab35b129b6bca435.webp" srcset="https://jetthoughts.com/blog/why-when-use-waterfall-vs-agile-business-perspective-management/file_0_hu_ab35b129b6bca435.webp 800w, https://jetthoughts.com/blog/why-when-use-waterfall-vs-agile-business-perspective-management/file_0_hu_a825c980234cca3d.webp 1480w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="368" alt="From https://www.atlassian.com/agile/agile-at-scale/agile-iron-triangle" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h3 id="use-cases"&gt;Use Cases &lt;a class="hlink" href="#use-cases" aria-label="Link to Use Cases"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Well-defined requirements&lt;/strong&gt;: Waterfall is the best project life cycle option for projects with precise, stable, and in-depth established requirements.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Regulatory Compliance&lt;/strong&gt;: This is fundamental in industries with substantial regulatory requirements. These requirements require the formulation of documentation of various stages, and regulatory bodies could authorize the performance of the same.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Predictable and Low-Risk Projects&lt;/strong&gt;: It fits projects with minimal risk possibilities, where possible outcomes can easily be worked out.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Complex Interdependencies&lt;/strong&gt;: This is best for projects that feature complicated interconnections between the phases, where one part involves another, and where execution and planning are of great importance.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="business-benefits"&gt;Business Benefits &lt;a class="hlink" href="#business-benefits" aria-label="Link to Business Benefits"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Structured Approach:&lt;/strong&gt; Step-by-step activities demonstrate the structure and method of the solution to achieve a complete product or service.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Detailed Documentation:&lt;/strong&gt; Detailed documentation is a valuable resource for both maintenance personnel and compliance auditors.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Predictability:&lt;/strong&gt; Known delivery timeframes and task benefits facilitate a better understanding of tasks, which leads to more accurate and less costly resource balance planning and budgeting.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Risk Management:&lt;/strong&gt; The engineering department can minimize the risk posed by additional work requirements through meticulous requirement analysis at the very beginning.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="costs-for-business"&gt;Costs for Business &lt;a class="hlink" href="#costs-for-business" aria-label="Link to Costs for Business"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Inflexibility:&lt;/strong&gt; Implementing changes in the project at a later stage may be very costly and sometimes impossible to achieve.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Long Feedback Loop:&lt;/strong&gt; If feedback is received early, there is always a chance that the work will be in sync with stakeholder goals.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;High Initial Costs:&lt;/strong&gt; A big chunk of bold capital investment is the keen focus on planning and documentation.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Requires Skilled Teams:&lt;/strong&gt; Success requires teams with a high level of skill, collaboration, and experience to predict and make it right from the first try.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="agile-methodology"&gt;Agile Methodology &lt;a class="hlink" href="#agile-methodology" aria-label="Link to Agile Methodology"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/why-when-use-waterfall-vs-agile-business-perspective-management/file_1_hu_cca1d810727bf207.webp" srcset="https://jetthoughts.com/blog/why-when-use-waterfall-vs-agile-business-perspective-management/file_1_hu_cca1d810727bf207.webp 800w, https://jetthoughts.com/blog/why-when-use-waterfall-vs-agile-business-perspective-management/file_1_hu_fa3a32fb6408b0ed.webp 1480w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="368" alt="From https://www.atlassian.com/agile/agile-at-scale/agile-iron-triangle" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>4 lines to Speed Up your Rails Test Suite on CircleCI</title><link>https://jetthoughts.com/blog/4-lines-speed-up-your-rails-test-suite-on-circleci/</link><pubDate>Fri, 07 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/4-lines-speed-up-your-rails-test-suite-on-circleci/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/4-lines-speed-up-your-rails-test-suite-on-circleci/file_0_hu_461a6b105d95b05b.webp" srcset="https://jetthoughts.com/blog/4-lines-speed-up-your-rails-test-suite-on-circleci/file_0_hu_461a6b105d95b05b.webp 704w, https://jetthoughts.com/blog/4-lines-speed-up-your-rails-test-suite-on-circleci/file_0_hu_461a6b105d95b05b.webp 704w" sizes="(max-width: 760px) 100vw, 556px" width="704" height="396" alt="Meme reading You don’t need to compile assets if you don’t have any" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Most of our projects have a big code base of assets which dramatically reduce not only browser page rendering but also increase passing test suites.&lt;/p&gt;&#10;&lt;p&gt;The &lt;em&gt;Rails&lt;/em&gt; asset pipeline provides an &lt;em&gt;assets:precompile&lt;/em&gt; &lt;em&gt;rake&lt;/em&gt; task to allow assets to be compiled and cached up front rather than compiled every time the app boots.&lt;/p&gt;</description></item><item><title>7 tricks of successful communication with candidates</title><link>https://jetthoughts.com/blog/7-tricks-of-successful-communication-with-candidates-startup-recruiting/</link><pubDate>Fri, 07 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/7-tricks-of-successful-communication-with-candidates-startup-recruiting/</guid><description>&lt;p&gt;&lt;em&gt;Nowadays attracting good candidates is a pretty hard process, thereby, recruiters often face the problem of long-term closing of vacancies. That happens because HR specialists don’t pay enough attention to the initial stage of selection and communication.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;So, how can you draw a candidate’s attention to your company from the very beginning? How to interest and immediately make a good impression on them?&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/7-tricks-of-successful-communication-with-candidates-startup-recruiting/file_0_hu_63aee3b8936177da.webp" srcset="https://jetthoughts.com/blog/7-tricks-of-successful-communication-with-candidates-startup-recruiting/file_0_hu_63aee3b8936177da.webp 800w, https://jetthoughts.com/blog/7-tricks-of-successful-communication-with-candidates-startup-recruiting/file_0_hu_3692aa86dc654437.webp 1170w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="533" alt="Photo by Adam Jang on Unsplash" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Advantages of freelance — why it's really worth trying?</title><link>https://jetthoughts.com/blog/advantages-of-freelance-why-its-really-worth-trying-remote/</link><pubDate>Fri, 07 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/advantages-of-freelance-why-its-really-worth-trying-remote/</guid><description>&lt;p&gt;&lt;em&gt;Every day freelance is becoming more and more popular among all industries where it’s possible to introduce. However, many people still don’t dare to take the first step and finally understand whether this opportunity is suitable for them. We decided to highlight all the key pros of freelance, which may help someone to make their choice.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/advantages-of-freelance-why-its-really-worth-trying-remote/file_0_hu_83d627ce61ea4a91.webp" srcset="https://jetthoughts.com/blog/advantages-of-freelance-why-its-really-worth-trying-remote/file_0_hu_83d627ce61ea4a91.webp 800w, https://jetthoughts.com/blog/advantages-of-freelance-why-its-really-worth-trying-remote/file_0_hu_8098f7e3d4b175cb.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="1067" alt="Photo by Jane Palash on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Work whenever you want? — No problems!&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Dedicated Software Development Teams</title><link>https://jetthoughts.com/blog/dedicated-software-development-teams-team-recruitment/</link><pubDate>Fri, 07 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/dedicated-software-development-teams-team-recruitment/</guid><description>&lt;h2 id="dedicated-software-development-teams"&gt;Dedicated Software Development Teams &lt;a class="hlink" href="#dedicated-software-development-teams" aria-label="Link to Dedicated Software Development Teams"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;em&gt;We’ve compiled everything you need to know about dedicated software development teams into an extensive guide you’ll definitely need to read before hiring a dedicated team for your project. Let’s take a look!&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/dedicated-software-development-teams-team-recruitment/file_0_hu_d3c36be98828c8ed.webp" srcset="https://jetthoughts.com/blog/dedicated-software-development-teams-team-recruitment/file_0_hu_d3c36be98828c8ed.webp 800w, https://jetthoughts.com/blog/dedicated-software-development-teams-team-recruitment/file_0_hu_2d0a24562686a14a.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="534" alt="Photo by Annie Spratt on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="what-is-it"&gt;What is it? &lt;a class="hlink" href="#what-is-it" aria-label="Link to What is it?"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;A dedicated team&lt;/strong&gt; is a business model of collaboration when the client gets a team of professionals meticulously selected according to a specific project’s requirements. The client may decide to manage the team from his side or assign the service provider’s advisor to coordinate the communication process.&lt;/p&gt;</description></item><item><title>DelayedJob and PG Error No Connection to Server</title><link>https://jetthoughts.com/blog/delayedjob-pg-error-no-connection-server-rails-ruby/</link><pubDate>Fri, 07 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/delayedjob-pg-error-no-connection-server-rails-ruby/</guid><description>&lt;h2 id="delayedjob-and-pg-error-no-connection-to-server"&gt;DelayedJob and PG Error No Connection to Server &lt;a class="hlink" href="#delayedjob-and-pg-error-no-connection-to-server" aria-label="Link to DelayedJob and PG Error No Connection to Server"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/delayedjob-pg-error-no-connection-server-rails-ruby/file_0_hu_b8f2c933dea964a9.webp" srcset="https://jetthoughts.com/blog/delayedjob-pg-error-no-connection-server-rails-ruby/file_0_hu_b8f2c933dea964a9.webp 512w, https://jetthoughts.com/blog/delayedjob-pg-error-no-connection-server-rails-ruby/file_0_hu_b8f2c933dea964a9.webp 512w" sizes="(max-width: 760px) 100vw, 556px" width="512" height="512" alt="Icon of a broken cable with a cross in the middle" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Recently I’ve got strange errors on the staging server. Delayed::Job workers started successfully. But when they were starting to lock the jobs, workers failed with PG::Error: no connection to server and PG::Error: FATAL: invalid frontend message type 60 errors.&lt;/p&gt;</description></item><item><title>Effortless Code Conventions Review for Pull Request Changes</title><link>https://jetthoughts.com/blog/effortless-code-conventions-review-for-pull-request-changes-ruby-ci/</link><pubDate>Fri, 07 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/effortless-code-conventions-review-for-pull-request-changes-ruby-ci/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;Reliably arranged source code helps hackability. You can filter code speedier if its organizing is predictable.&lt;/p&gt;&#10;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/effortless-code-conventions-review-for-pull-request-changes-ruby-ci/file_0_hu_89c1171536a91219.webp" srcset="https://jetthoughts.com/blog/effortless-code-conventions-review-for-pull-request-changes-ruby-ci/file_0_hu_89c1171536a91219.webp 800w, https://jetthoughts.com/blog/effortless-code-conventions-review-for-pull-request-changes-ruby-ci/file_0_hu_864afec5e3ea18d9.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="1198" alt="Photo by chuttersnap on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;To fight with non-consistent source code formatting there are static analysis tools such as &lt;a href="https://github.com/bbatsov/rubocop"&gt;RuboCop&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;We decided to share code formatting feedback directly on &lt;a href="https://github.com/"&gt;GitHub&lt;/a&gt; by commenting &lt;em&gt;Pull Requests&lt;/em&gt; changes.&lt;/p&gt;&#10;&lt;p&gt;There is a suitable tool for this job - &lt;a href="https://github.com/mmozuras/pronto"&gt;pronto&lt;/a&gt;. With help of &lt;em&gt;CI&lt;/em&gt;(in our case that’s &lt;a href="https://circleci.com/"&gt;CircleCI&lt;/a&gt;) we run it for each &lt;em&gt;Pull Request&lt;/em&gt;.&lt;/p&gt;</description></item><item><title>From what to start to stop delivering bugs when there is no time for changes?</title><link>https://jetthoughts.com/blog/from-what-start-stop-delivering-bugs-when-there-no-time-for-changes-management-agile/</link><pubDate>Fri, 07 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/from-what-start-stop-delivering-bugs-when-there-no-time-for-changes-management-agile/</guid><description>&lt;p&gt;While you are struggling with breaking into the market; small bugs, UX problems, unexpected behaviors make you insane. You start thinking that you and your team are doing something wrong.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/from-what-start-stop-delivering-bugs-when-there-no-time-for-changes-management-agile/file_0_hu_276929f0de76b5bb.webp" srcset="https://jetthoughts.com/blog/from-what-start-stop-delivering-bugs-when-there-no-time-for-changes-management-agile/file_0_hu_276929f0de76b5bb.webp 800w, https://jetthoughts.com/blog/from-what-start-stop-delivering-bugs-when-there-no-time-for-changes-management-agile/file_0_hu_e62885c94f4f15b2.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="1067" alt="Photo by Mikhail Nilov from Pexels" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;And for start over there is no time, there are obligations which you need to deliver now.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;So what can you do now, just after reading this post? How do make things smoother and make deliveries stable and predictable?&lt;/p&gt;</description></item><item><title>Help shepherd to count sheep in Elixir</title><link>https://jetthoughts.com/blog/help-shepherd-count-sheep-in-elixir-programming/</link><pubDate>Fri, 07 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/help-shepherd-count-sheep-in-elixir-programming/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/help-shepherd-count-sheep-in-elixir-programming/file_0_hu_6d671171addf9d90.webp" srcset="https://jetthoughts.com/blog/help-shepherd-count-sheep-in-elixir-programming/file_0_hu_6d671171addf9d90.webp 339w, https://jetthoughts.com/blog/help-shepherd-count-sheep-in-elixir-programming/file_0_hu_6d671171addf9d90.webp 339w" sizes="(max-width: 760px) 100vw, 556px" width="339" height="243" alt="Shepard (Mass Effect)" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;I have been thinking about learning a functional language for a long time. So recently I’ve started to play around with Elixir. I am reading official guide and docs for theory. And also I do simple katas on Codewars for practice.&lt;/p&gt;&#10;&lt;p&gt;The last kata is &lt;a href="https://www.codewars.com/kata/counting-sheep-dot-dot-dot/train/elixir"&gt;**Counting sheep…&lt;/a&gt; **And I’ve come up with 13 solutions for it. Let me show it to you and explain why I need so many.&lt;/p&gt;</description></item><item><title>How does your company work with clients to understand their needs?</title><link>https://jetthoughts.com/blog/how-does-your-company-work-with-clients-understand-their-needs-lean-process/</link><pubDate>Fri, 07 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-does-your-company-work-with-clients-understand-their-needs-lean-process/</guid><description>&lt;p&gt;In today&amp;rsquo;s competitive business landscape, understanding and meeting client needs is crucial for the success and growth of any company. One effective approach to achieving this is through a process called Lean Inception. Lean Inception is a collaborative and iterative process that helps businesses gain a deep understanding of their clients’ needs and challenges. By using discovery techniques such as design sprints and continuous discovery, companies can uncover real problems and pre-validate ideas through prototyping and customer research.&lt;/p&gt;</description></item><item><title>It's Time For Active Job</title><link>https://jetthoughts.com/blog/its-time-for-active-job-ruby-rails/</link><pubDate>Fri, 07 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/its-time-for-active-job-ruby-rails/</guid><description>&lt;h2 id="its-time-for-active-job"&gt;It’s Time For Active Job &lt;a class="hlink" href="#its-time-for-active-job" aria-label="Link to It’s Time For Active Job"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/its-time-for-active-job-ruby-rails/file_0_hu_80dbcb5ecf73e63.webp" srcset="https://jetthoughts.com/blog/its-time-for-active-job-ruby-rails/file_0_hu_80dbcb5ecf73e63.webp 320w, https://jetthoughts.com/blog/its-time-for-active-job-ruby-rails/file_0_hu_80dbcb5ecf73e63.webp 320w" sizes="(max-width: 760px) 100vw, 556px" width="320" height="213" alt="Row of dumbbells on a gym rack" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Recently we have upgraded one of our own projects to Rails 4.2. New minor version contains many improvements of old features and adds some new ones. One of most interesting (and helpful) new features is adding a new framework for declaring jobs and making them run on a variety of queuing backends — &lt;strong&gt;Active Job&lt;/strong&gt;.&lt;/p&gt;</description></item><item><title>Jekyll + GitHub Pages + Forestry.io</title><link>https://jetthoughts.com/blog/jekyll-github-pages-forestryio-jekyl/</link><pubDate>Fri, 07 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/jekyll-github-pages-forestryio-jekyl/</guid><description>&lt;p&gt;I’ve recently migrated the &lt;a href="https://www.jetthoughts.com/"&gt;jetthoughts.com&lt;/a&gt; website on &lt;a href="https://jekyllrb.com/"&gt;Jekyll&lt;/a&gt; to &lt;a href="https://forestry.io/"&gt;Forestry.io&lt;/a&gt;. I’d like to share my process with you, as well as a few tips about building a Jekyll site with GitHub Pages and &lt;a href="https://forestry.io/"&gt;Forestry.io&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/jekyll-github-pages-forestryio-jekyl/file_0_hu_e9aacd03ffcba6b0.webp" srcset="https://jetthoughts.com/blog/jekyll-github-pages-forestryio-jekyl/file_0_hu_e9aacd03ffcba6b0.webp 800w, https://jetthoughts.com/blog/jekyll-github-pages-forestryio-jekyl/file_0_hu_f19212864c2eb59.webp 1000w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="534" alt="Photo by Richard T onUnsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;The Advantages:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;All tools and services is free&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Ability to write content in &lt;a href="https://www.markdownguide.org/"&gt;Markdown&lt;/a&gt; or YML&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Lightweight, fast, and server-less&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Easy to use&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="for-whom-it-is-necessary"&gt;For whom it is necessary &lt;a class="hlink" href="#for-whom-it-is-necessary" aria-label="Link to For whom it is necessary"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;A novice developer or writer who has little knowledge and a small stack of technology but wants to create their own website with the ability to maintain.&lt;/p&gt;</description></item><item><title>JetThoughts Is On GoodFirms Radar for Delivering Effortless Ruby on Rails Development Services to Business of Various Niches</title><link>https://jetthoughts.com/blog/jetthoughts-on-goodfirms-radar-for-delivering-effortless-ruby-rails-development-services-business-of-various-niches/</link><pubDate>Fri, 07 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/jetthoughts-on-goodfirms-radar-for-delivering-effortless-ruby-rails-development-services-business-of-various-niches/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/jetthoughts-on-goodfirms-radar-for-delivering-effortless-ruby-rails-development-services-business-of-various-niches/file_0_hu_c0d5b02c406346bf.webp" srcset="https://jetthoughts.com/blog/jetthoughts-on-goodfirms-radar-for-delivering-effortless-ruby-rails-development-services-business-of-various-niches/file_0_hu_c0d5b02c406346bf.webp 800w, https://jetthoughts.com/blog/jetthoughts-on-goodfirms-radar-for-delivering-effortless-ruby-rails-development-services-business-of-various-niches/file_0_hu_fb718d0a96d11d95.webp 1200w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="533" alt="badge from goodfirms" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;&lt;a href="https://www.goodfirms.co/company/jetthoughts-llc"&gt;JetThoughts LLC&lt;/a&gt;&lt;/strong&gt; is an excellent firm offering various services that can give the business an edge in the competitive market. The firm is known for providing Ruby on Rails development services to different clients.&lt;/p&gt;&#10;&lt;h2 id="company-introduction"&gt;Company Introduction &lt;a class="hlink" href="#company-introduction" aria-label="Link to Company Introduction"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;JetThoughts is a renowned Ruby on Rails development firm delivering solutions to start-ups, mid-sized and small enterprises. They are located in the United States with another office in Ukraine. The firm was founded in 2008. JetThoughts consists of motivated and learned professionals who have years of experience and expertise in various fields. They utilize this experience to deliver the right solutions for their clients.&lt;/p&gt;</description></item><item><title>Our Default Ruby Development Stack</title><link>https://jetthoughts.com/blog/our-default-ruby-development-stack-rails/</link><pubDate>Fri, 07 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/our-default-ruby-development-stack-rails/</guid><description>&lt;h2 id="our-default-ruby-development-stack"&gt;Our Default Ruby Development Stack &lt;a class="hlink" href="#our-default-ruby-development-stack" aria-label="Link to Our Default Ruby Development Stack"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/our-default-ruby-development-stack-rails/file_0_hu_ae20cb2e935dfd89.webp" srcset="https://jetthoughts.com/blog/our-default-ruby-development-stack-rails/file_0_hu_ae20cb2e935dfd89.webp 320w, https://jetthoughts.com/blog/our-default-ruby-development-stack-rails/file_0_hu_ae20cb2e935dfd89.webp 320w" sizes="(max-width: 760px) 100vw, 556px" width="320" height="320" alt="Laptop on a desk with the text Default Ruby Development Stack" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Not that long ago I joined &lt;strong&gt;JetThoughts&lt;/strong&gt;. By this time I studied the team, the workflow, colleagues minds (just a little) and technologies used to build applications.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Development&lt;/strong&gt; is based on agile methodologies which means that clients are continuously getting new or changed functionality for their product deployed and maintained.&lt;/p&gt;</description></item><item><title>Reduce concurrent requests by Redux-Saga Effects</title><link>https://jetthoughts.com/blog/reduce-concurrent-requests-by-redux-saga-effects-react/</link><pubDate>Fri, 07 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/reduce-concurrent-requests-by-redux-saga-effects-react/</guid><description>&lt;p&gt;Are you familiar with the situation when the user clicks on a Load Data button 2 consecutive times at a rapid rate, the 2nd click will dispatch a request while the fetch fired on the first one hasn’t yet terminated? Then this blog post is for you.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/reduce-concurrent-requests-by-redux-saga-effects-react/file_0_hu_e0081e9e62c0c65a.webp" srcset="https://jetthoughts.com/blog/reduce-concurrent-requests-by-redux-saga-effects-react/file_0_hu_e0081e9e62c0c65a.webp 800w, https://jetthoughts.com/blog/reduce-concurrent-requests-by-redux-saga-effects-react/file_0_hu_24ac4299d11118f6.webp 1400w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="533" alt="React logo on the left linked to the Redux logo on the right" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;In this post, we do not dive into what the &lt;a href="https://redux-saga.js.org/"&gt;Redux-Saga&lt;/a&gt; is and how it works. This blog is already for those who know and know how to work with the Saga but encountered the problem of concurrent requests.&lt;/p&gt;</description></item><item><title>Revise Your Stylesheets. Part 1. Color Scheme</title><link>https://jetthoughts.com/blog/revise-your-stylesheets-part-1-color-scheme-webdev-css/</link><pubDate>Fri, 07 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/revise-your-stylesheets-part-1-color-scheme-webdev-css/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/revise-your-stylesheets-part-1-color-scheme-webdev-css/file_0_hu_63fb05cbe0d0965b.webp" srcset="https://jetthoughts.com/blog/revise-your-stylesheets-part-1-color-scheme-webdev-css/file_0_hu_63fb05cbe0d0965b.webp 800w, https://jetthoughts.com/blog/revise-your-stylesheets-part-1-color-scheme-webdev-css/file_0_hu_7e1caeb48ec4aedf.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="280" alt="Cartoon yellow dog with raised arms in front of rainbow rays" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="revise-your-stylesheets-part-1-color-scheme"&gt;Revise Your Stylesheets. Part 1. Color Scheme &lt;a class="hlink" href="#revise-your-stylesheets-part-1-color-scheme" aria-label="Link to Revise Your Stylesheets. Part 1. Color Scheme"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Ever wonder how many colors exist in your project? Do you have strict style guides kindly prepared by the design lead? How many PSDs did you slice for this particular project? Do you work alone or do you have a large front-end team and no codestyle manifest? I bet that one day you’ll wake up and see a rainbow full of hex, RGB and RGBA colors spread all over the 100 SCSS files. And do you want to know how to merge 300 colors into 30? In this article you’ll see how to gather and visualize colors presence in your project.&lt;/p&gt;</description></item><item><title>Self-promote on Reddit without getting banned</title><link>https://jetthoughts.com/blog/self-promote-on-reddit-without-getting-banned-promotion/</link><pubDate>Fri, 07 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/self-promote-on-reddit-without-getting-banned-promotion/</guid><description>&lt;p&gt;We are happy to share our experience on important aspects of starting self-promoting posts on Reddit. What do you need for it? What are the steps? We aim to identify the challenges affecting and easily face them.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/self-promote-on-reddit-without-getting-banned-promotion/file_0_hu_bcab7b093eac6fd9.webp" srcset="https://jetthoughts.com/blog/self-promote-on-reddit-without-getting-banned-promotion/file_0_hu_bcab7b093eac6fd9.webp 800w, https://jetthoughts.com/blog/self-promote-on-reddit-without-getting-banned-promotion/file_0_hu_c1f1865e4edfd9fc.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="532" alt="Photo by Kurt Cotoaga on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Reddit is a large community made up of thousands of smaller communities, making it great for Growth. Despite the potentially high traffic, many blog-post writers avoid it when they faced different problems just from the beginning.&lt;/p&gt;</description></item><item><title>Speed Up Your Rails Test Suite By 6% In 1 Line</title><link>https://jetthoughts.com/blog/speed-up-your-rails-test-suite-by-6-in-1-line-testing-ruby/</link><pubDate>Fri, 07 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/speed-up-your-rails-test-suite-by-6-in-1-line-testing-ruby/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/speed-up-your-rails-test-suite-by-6-in-1-line-testing-ruby/file_0_hu_574ea8b0400c6b4b.webp" srcset="https://jetthoughts.com/blog/speed-up-your-rails-test-suite-by-6-in-1-line-testing-ruby/file_0_hu_574ea8b0400c6b4b.webp 500w, https://jetthoughts.com/blog/speed-up-your-rails-test-suite-by-6-in-1-line-testing-ruby/file_0_hu_574ea8b0400c6b4b.webp 500w" sizes="(max-width: 760px) 100vw, 556px" width="500" height="472" alt="Five men in kilts in a row, tossing a long wooden pole at different stages" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;At one project we have a set of currently 3k+ tests, running more than 2 minutes. Most of the test cases rely on the DB, and ActiveRecord logs all queries by default. The test.log grows by around 20M per suite run.&lt;/p&gt;&#10;&lt;p&gt;Once again deleting an overgrown local log file, I thought that we don’t really need it and logging in a test mode should be better disabled by default.&lt;/p&gt;</description></item><item><title>Stress Testing Your Rails Application Using JMeter</title><link>https://jetthoughts.com/blog/stress-testing-your-rails-application-using-jmeter-ruby/</link><pubDate>Fri, 07 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/stress-testing-your-rails-application-using-jmeter-ruby/</guid><description>&lt;h2 id="stress-testing-your-rails-application-using-jmeter"&gt;Stress Testing Your Rails Application Using JMeter &lt;a class="hlink" href="#stress-testing-your-rails-application-using-jmeter" aria-label="Link to Stress Testing Your Rails Application Using JMeter"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/stress-testing-your-rails-application-using-jmeter-ruby/file_0_hu_3fe4e86b04f21db8.webp" srcset="https://jetthoughts.com/blog/stress-testing-your-rails-application-using-jmeter-ruby/file_0_hu_3fe4e86b04f21db8.webp 400w, https://jetthoughts.com/blog/stress-testing-your-rails-application-using-jmeter-ruby/file_0_hu_3fe4e86b04f21db8.webp 400w" sizes="(max-width: 760px) 100vw, 556px" width="400" height="400" alt="Stress meter gauge with the needle at Panic Attack, above Anxiety, Stressed, Coping and Relaxed" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Some time ago we needed to make a simple stress-testing of our application to get an idea of where we are going, and find out whether we should take a break and pay some attention to optimizations or not. The number of stress-testing tools is huge, but we decided to stick to a well-tried solution — &lt;a href="https://jmeter.apache.org/"&gt;JMeter&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Pay Attention to Method Names in Minitest::Unit</title><link>https://jetthoughts.com/blog/pay-attention-method-names-in-minitestunit-testing-ruby/</link><pubDate>Thu, 06 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/pay-attention-method-names-in-minitestunit-testing-ruby/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/pay-attention-method-names-in-minitestunit-testing-ruby/file_0_hu_8ce454bf0b40ca74.webp" srcset="https://jetthoughts.com/blog/pay-attention-method-names-in-minitestunit-testing-ruby/file_0_hu_8ce454bf0b40ca74.webp 320w, https://jetthoughts.com/blog/pay-attention-method-names-in-minitestunit-testing-ruby/file_0_hu_8ce454bf0b40ca74.webp 320w" sizes="(max-width: 760px) 100vw, 556px" width="320" height="240" alt="Cup of coffee on a wooden table next to a yellow sticky note reading Think" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;**&lt;em&gt;TL,DR: &lt;em&gt;don’t define any methods with names name, message, time, pass in Minitest::Unit test cases unless you really want to override those of Minitest::TestCase.&lt;/em&gt;&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;When writing Minitest::Unit tests, it’s convenient to use test case’s instance methods as kind of RSpec’s lazy-evaluated let-blocks or various helper methods.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;class&lt;/span&gt; &lt;span style="color:#f0883e;font-weight:bold"&gt;TrialPeriodVideoDownloadTest&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#79c0ff;font-weight:bold"&gt;ActiveSupport&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt;&lt;span style="color:#79c0ff;font-weight:bold"&gt;TestCase&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;def&lt;/span&gt; &lt;span style="color:#d2a8ff;font-weight:bold"&gt;user&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; users(&lt;span style="color:#a5d6ff"&gt;:trial_period_bob&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;def&lt;/span&gt; &lt;span style="color:#d2a8ff;font-weight:bold"&gt;video&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; videos(&lt;span style="color:#a5d6ff"&gt;:fullhd_video_private&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; test &lt;span style="color:#a5d6ff"&gt;&amp;#39;trial user can download private video&amp;#39;&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;do&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; travel_to user&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;registered_at&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; assert &lt;span style="color:#79c0ff;font-weight:bold"&gt;VideoPolicy&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;new(user, video)&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;download?&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; travel_back&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; test &lt;span style="color:#a5d6ff"&gt;&amp;#39;trial user cannot download private video after trial ended&amp;#39;&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;do&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; travel_to user&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;registered_at &lt;span style="color:#ff7b72;font-weight:bold"&gt;+&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;32&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;days&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; refute &lt;span style="color:#79c0ff;font-weight:bold"&gt;VideoPolicy&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;new(user, video)&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;download?&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; travel_back&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;em&gt;Note: I am extending ActiveSupport::TestCase for this nice test &amp;ldquo;verify something&amp;rdquo; DSL and for other handy features provided by ActiveSupport::Testing, but the problem concerns Minitest::TestCase, which is being inherited behind the scenes.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>Recent Searches &amp; Sorting Hashes: How They are Connected</title><link>https://jetthoughts.com/blog/recent-searches-sorting-hashes-how-they-are-connected-ruby-rails/</link><pubDate>Thu, 06 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/recent-searches-sorting-hashes-how-they-are-connected-ruby-rails/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/recent-searches-sorting-hashes-how-they-are-connected-ruby-rails/file_0_hu_7765ecdeea07e71e.webp" srcset="https://jetthoughts.com/blog/recent-searches-sorting-hashes-how-they-are-connected-ruby-rails/file_0_hu_7765ecdeea07e71e.webp 800w, https://jetthoughts.com/blog/recent-searches-sorting-hashes-how-they-are-connected-ruby-rails/file_0_hu_d05fbaf8fdfebd49.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="356" alt="Unsplash Photo: Caspar Rubin" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;In one of the applications, that we are developing, we needed to implement the storing of 10 last user search requests. If they were simple text queries, that would be the end of the story. However, the issue turned out to be much more complicated, because we had to save search filters.&lt;/p&gt;&#10;&lt;p&gt;In general, the search filter may be represented as a set of attributes, such as:&lt;/p&gt;</description></item><item><title>4 Steps to Bring Life into a Struggling Project</title><link>https://jetthoughts.com/blog/4-steps-bring-life-into-struggling-project-startup-management/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/4-steps-bring-life-into-struggling-project-startup-management/</guid><description>&lt;h2 id="4-steps-to-bring-life-into-a-struggling-project"&gt;4 Steps to Bring Life into a Struggling Project &lt;a class="hlink" href="#4-steps-to-bring-life-into-a-struggling-project" aria-label="Link to 4 Steps to Bring Life into a Struggling Project"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/4-steps-bring-life-into-struggling-project-startup-management/file_0_hu_a10d2db5a6fcc166.webp" srcset="https://jetthoughts.com/blog/4-steps-bring-life-into-struggling-project-startup-management/file_0_hu_a10d2db5a6fcc166.webp 800w, https://jetthoughts.com/blog/4-steps-bring-life-into-struggling-project-startup-management/file_0_hu_e1e06d97155ab264.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="265" alt="Blurred dark blue water surface with light reflections" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;At the initial stages of a new business or a startup, when the future is unknown, people often opt for short-term solutions in product development. These short term solutions often result in hiring and changing contractors, delivering code with &lt;a href="https://martinfowler.com/bliki/TechnicalDebt.html"&gt;technical debts&lt;/a&gt;, constant requirements changes.&lt;/p&gt;</description></item><item><title>5 Steps to Add Remote Modals to Your Rails App</title><link>https://jetthoughts.com/blog/5-steps-add-remote-modals-your-rails-app-javascript-ruby/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/5-steps-add-remote-modals-your-rails-app-javascript-ruby/</guid><description>&lt;p&gt;Sometimes you don’t want to write big JavaScript application just to have working remote modals in your rails application. The whole JSON-response parsing thing looks big and scary. Why can’t we simply render our views on a server and just display them as modals to users? Let’s take a look at how we can implement this with elegance.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/5-steps-add-remote-modals-your-rails-app-javascript-ruby/file_0_hu_130889bebc9d4afb.webp" srcset="https://jetthoughts.com/blog/5-steps-add-remote-modals-your-rails-app-javascript-ruby/file_0_hu_130889bebc9d4afb.webp 800w, https://jetthoughts.com/blog/5-steps-add-remote-modals-your-rails-app-javascript-ruby/file_0_hu_abe1c3e4e3fab993.webp 1103w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="397" alt="Browser showing a Remote Modals Demo page with a New message modal form" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Avoid data migrations in the schema migrations for Rails</title><link>https://jetthoughts.com/blog/avoid-data-migrations-in-schema-for-rails-ruby/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/avoid-data-migrations-in-schema-for-rails-ruby/</guid><description>&lt;h2 id="avoid-data-migrations-in-the-schema-migrations-for-rails"&gt;Avoid data migrations in the schema migrations for Rails &lt;a class="hlink" href="#avoid-data-migrations-in-the-schema-migrations-for-rails" aria-label="Link to Avoid data migrations in the schema migrations for Rails"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Could you re-run all migrations in the project? How often were you required to fix them while production was under fire? What can you do to prevent problems with migration and not waste much time on it?&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/avoid-data-migrations-in-schema-for-rails-ruby/file_0_hu_9946b5b30ec9dae7.webp" srcset="https://jetthoughts.com/blog/avoid-data-migrations-in-schema-for-rails-ruby/file_0_hu_9946b5b30ec9dae7.webp 800w, https://jetthoughts.com/blog/avoid-data-migrations-in-schema-for-rails-ruby/file_0_hu_92a1ca90607082ed.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="345" alt="Staled migrations on db:migrate:reset" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="solution"&gt;Solution &lt;a class="hlink" href="#solution" aria-label="Link to Solution"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Do not mess with schema and data migrations! Separate those problems. There is a pretty common strategy for this:&lt;/p&gt;</description></item><item><title>Checklist for the non-tech founder</title><link>https://jetthoughts.com/blog/checklist-for-non-tech-founder-agile/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/checklist-for-non-tech-founder-agile/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/checklist-for-non-tech-founder-agile/file_0_hu_85dd38f43e524b37.webp" srcset="https://jetthoughts.com/blog/checklist-for-non-tech-founder-agile/file_0_hu_85dd38f43e524b37.webp 800w, https://jetthoughts.com/blog/checklist-for-non-tech-founder-agile/file_0_hu_85dd38f43e524b37.webp 800w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="533" alt="Photo by Blake Wisz on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;If either agency, dev shop, or offshore team is building a product for you, it’s important to know how it goes. Without prior experience, it’s extremely hard to understand.&lt;/p&gt;&#10;&lt;p&gt;The development process, in general, is something that’s not easy to have control of, but there are some rules and workflow scenarios to follow in order to understand how things going and avoid numerous problems related to product delivery itself.&lt;/p&gt;</description></item><item><title>Cleaning Up Your Rails Views With View Objects</title><link>https://jetthoughts.com/blog/cleaning-up-your-rails-views-with-view-objects-development/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/cleaning-up-your-rails-views-with-view-objects-development/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/cleaning-up-your-rails-views-with-view-objects-development/file_0_hu_4039976a7da20fc6.webp" srcset="https://jetthoughts.com/blog/cleaning-up-your-rails-views-with-view-objects-development/file_0_hu_4039976a7da20fc6.webp 400w, https://jetthoughts.com/blog/cleaning-up-your-rails-views-with-view-objects-development/file_0_hu_4039976a7da20fc6.webp 400w" sizes="(max-width: 760px) 100vw, 556px" width="400" height="400" alt="Cartoon of a worker in a red cap and overalls holding a broom" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="why-logic-in-views-is-a-bad-idea"&gt;Why logic in views is a bad idea? &lt;a class="hlink" href="#why-logic-in-views-is-a-bad-idea" aria-label="Link to Why logic in views is a bad idea?"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The main reason not to put the complex logic into your views is, of course, testing. I don’t want to say that it is impossible to test logic defined in views, but it is much more complicated. And, as a very lazy person, I don’t like doing an extra work.&lt;/p&gt;</description></item><item><title>Fractional CTO: A Comprehensive Review of the First Two Weeks in a Startup</title><link>https://jetthoughts.com/blog/fractional-cto-comprehensive-review-of-first-two-weeks-in-startup-consulting-management/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/fractional-cto-comprehensive-review-of-first-two-weeks-in-startup-consulting-management/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/fractional-cto-comprehensive-review-of-first-two-weeks-in-startup-consulting-management/file_0_hu_8a9571a0ca1ce0d2.webp" srcset="https://jetthoughts.com/blog/fractional-cto-comprehensive-review-of-first-two-weeks-in-startup-consulting-management/file_0_hu_8a9571a0ca1ce0d2.webp 800w, https://jetthoughts.com/blog/fractional-cto-comprehensive-review-of-first-two-weeks-in-startup-consulting-management/file_0_hu_7d7286546556a8b3.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="457" alt="Illustration of a team working among gears, charts and laptops, titled Fractional CTO" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;In a world where startups need to move fast and make informed decisions, the role of a Fractional CTO has become increasingly critical. These professionals specialize in steering a company’s tech strategy and operations towards efficiency and innovation, providing agility and expertise without the full-time commitment. With the demand driven by cost-effectiveness and the versatility to work remotely, engaging a Fractional CTO offers strategic vision and quality assurance in software development &lt;a href="https://cto.academy/what-is-a-fractional-cto-and-how-do-you-become-one/"&gt;at a fraction of the usual cost&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Heroku Reviews Apps prevent delivering bugs on production</title><link>https://jetthoughts.com/blog/heroku-reviews-apps-prevent-delivering-bugs-on-production-ci-startup/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/heroku-reviews-apps-prevent-delivering-bugs-on-production-ci-startup/</guid><description>&lt;blockquote&gt;&#10;&lt;h1 id="are-you-afraid-to-deploy-a-master-branch-to-the-production-do-you-still-mess-with-staging-servers-do-you-spend-a-lot-of-time-to-find-out-which-pull-request-pr-has-introduced-a-bug"&gt;Are you afraid to deploy a master branch to the production? Do you still mess with staging servers? Do you spend a lot of time to find out which &lt;a href="https://help.github.com/articles/about-pull-requests/"&gt;Pull Request&lt;/a&gt; (PR) has introduced a bug? &lt;a class="hlink" href="#are-you-afraid-to-deploy-a-master-branch-to-the-production-do-you-still-mess-with-staging-servers-do-you-spend-a-lot-of-time-to-find-out-which-pull-request-pr-has-introduced-a-bug" aria-label="Link to Are you afraid to deploy a master branch to the production? Do you still mess with staging servers? Do you spend a lot of time to find out which Pull Request (PR) has introduced a bug?"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/heroku-reviews-apps-prevent-delivering-bugs-on-production-ci-startup/file_0_hu_98016e9afeffbf91.webp" srcset="https://jetthoughts.com/blog/heroku-reviews-apps-prevent-delivering-bugs-on-production-ci-startup/file_0_hu_98016e9afeffbf91.webp 800w, https://jetthoughts.com/blog/heroku-reviews-apps-prevent-delivering-bugs-on-production-ci-startup/file_0_hu_bafe85303abde106.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="266" alt="Photo by Terrah Holly on Unsplash" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>How JetThoughts implements Joel’s test?</title><link>https://jetthoughts.com/blog/how-jetthoughts-implements-joels-test-deveopment-management/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-jetthoughts-implements-joels-test-deveopment-management/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-jetthoughts-implements-joels-test-deveopment-management/file_0_hu_401bffbec8a8c905.webp" srcset="https://jetthoughts.com/blog/how-jetthoughts-implements-joels-test-deveopment-management/file_0_hu_401bffbec8a8c905.webp 800w, https://jetthoughts.com/blog/how-jetthoughts-implements-joels-test-deveopment-management/file_0_hu_6800530f67130d1f.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="531" alt="Unsplash Photo: Matt Briney" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;For those of you who don’t know who Joel Spolsky is here are some facts:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Worked at Microsoft&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Founded &lt;a href="https://www.fogcreek.com"&gt;Fog Creek Software&lt;/a&gt;, &lt;a href="http://stackexchange.com/about"&gt;Stack Exchange, Inc&lt;/a&gt;.&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Guilty for the world to see some interesting web products:&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-jetthoughts-implements-joels-test-deveopment-management/file_1_hu_e52c62262a708a48.webp" srcset="https://jetthoughts.com/blog/how-jetthoughts-implements-joels-test-deveopment-management/file_1_hu_e52c62262a708a48.webp 800w, https://jetthoughts.com/blog/how-jetthoughts-implements-joels-test-deveopment-management/file_1_hu_aaffe52c783794db.webp 923w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="165" alt="Logos and descriptions of FogBugz 2001, Stack Overflow 2008, Kiln 2010 and Trello 2011" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Wrote &lt;a href="http://www.joelonsoftware.com/articles/fog0000000043.html"&gt;an awesome post&lt;/a&gt; about test to rate the quality of software team.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="12-steps-of-joels-test-in-reality-of-jetthoughts-projects"&gt;12 steps of Joel’s test in reality of JetThoughts projects &lt;a class="hlink" href="#12-steps-of-joels-test-in-reality-of-jetthoughts-projects" aria-label="Link to 12 steps of Joel’s test in reality of JetThoughts projects"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="do-you-use-source-control"&gt;Do you use source control? &lt;a class="hlink" href="#do-you-use-source-control" aria-label="Link to Do you use source control?"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Hell yeah! Is there anyone who still develops software without using source control in 2016?! We use git as it is comfortable, reliable and modern.&lt;/p&gt;</description></item><item><title>How Our Expertise Helped Curb Real Estate Communication Chaos</title><link>https://jetthoughts.com/blog/how-our-expertise-helped-curb-real-estate-communication-chaos/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-our-expertise-helped-curb-real-estate-communication-chaos/</guid><description>&lt;h2 id="how-our-expertise-helped-curb-real-estate-communication-chaos"&gt;&lt;strong&gt;How Our Expertise Helped Curb Real Estate Communication Chaos&lt;/strong&gt; &lt;a class="hlink" href="#how-our-expertise-helped-curb-real-estate-communication-chaos" aria-label="Link to How Our Expertise Helped Curb Real Estate Communication Chaos"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;em&gt;The story of building Agent Inbox’s mobile and desktop messaging platform.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-our-expertise-helped-curb-real-estate-communication-chaos/file_0_hu_bff830bbfb9b4056.webp" srcset="https://jetthoughts.com/blog/how-our-expertise-helped-curb-real-estate-communication-chaos/file_0_hu_bff830bbfb9b4056.webp 800w, https://jetthoughts.com/blog/how-our-expertise-helped-curb-real-estate-communication-chaos/file_0_hu_4180a9c3e035c037.webp 1000w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="563" alt="One hand handing a set of house keys to another open hand" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;If you asked &lt;a href="https://www.linkedin.com/in/elliotkoolik/"&gt;*Elliot Koolik&lt;/a&gt;* for one complaint about his job, he’d have an answer ready for you in an instant. &lt;em&gt;&lt;strong&gt;Inefficient communication.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;</description></item><item><title>How to Get Remote Teams to High Perform</title><link>https://jetthoughts.com/blog/how-get-remote-teams-high-perform-agile-development/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-get-remote-teams-high-perform-agile-development/</guid><description>&lt;h2 id="how-to-get-remote-teams-to-high-perform"&gt;How to Get Remote Teams to High Perform &lt;a class="hlink" href="#how-to-get-remote-teams-to-high-perform" aria-label="Link to How to Get Remote Teams to High Perform"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-get-remote-teams-high-perform-agile-development/file_0_hu_ed87efd02b406a4.webp" srcset="https://jetthoughts.com/blog/how-get-remote-teams-high-perform-agile-development/file_0_hu_ed87efd02b406a4.webp 800w, https://jetthoughts.com/blog/how-get-remote-teams-high-perform-agile-development/file_0_hu_23eac8cd0bb2447f.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="533" alt="Photo by rawpixel on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Raise your hand in case you feel confused about project progress. How often do you ask about the current status in &lt;a href="https://slack.com"&gt;*Slack&lt;/a&gt;*?&lt;/p&gt;&#10;&lt;p&gt;We have seen such problems and would like to present our &lt;strong&gt;5&lt;/strong&gt; &lt;strong&gt;techniques&lt;/strong&gt; to have a &lt;strong&gt;transparent process&lt;/strong&gt; and build &lt;strong&gt;trust&lt;/strong&gt; within the team both internally and externally.&lt;/p&gt;</description></item><item><title>How to Learn Ruby</title><link>https://jetthoughts.com/blog/how-learn-ruby-tutorial/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-learn-ruby-tutorial/</guid><description>&lt;p&gt;Starting to learn a new programming language or a new framework every person faces a problem — what should I start studying with? In this article I will outline the basic resources, which I consider to be the best for Ruby on Rails beginners.&lt;/p&gt;&#10;&lt;p&gt;To begin with, I would like to share my experience in learning Ruby. I had tried programming in Python, C, C++, C#, Pascal, Assembler, before switching to Ruby. To be honest, at first I did not take Ruby seriously. Clear, simple, understandable — how possibly could a programming language be like that?&lt;/p&gt;</description></item><item><title>How To Memoize False and Nil Values</title><link>https://jetthoughts.com/blog/how-memoize-false-nil-values-ruby-rails/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-memoize-false-nil-values-ruby-rails/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-memoize-false-nil-values-ruby-rails/file_0_hu_f3d48576a7885713.webp" srcset="https://jetthoughts.com/blog/how-memoize-false-nil-values-ruby-rails/file_0_hu_f3d48576a7885713.webp 800w, https://jetthoughts.com/blog/how-memoize-false-nil-values-ruby-rails/file_0_hu_9cb64ef6c2ed3b95.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="598" alt="Unsplash Photo: Mike Petrucci" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;TL;DR: if method can return false or nil, and you want to memoize it, use defined?(@_result) instead of ||=.&lt;/strong&gt;&lt;/p&gt;&#10;&lt;p&gt;Memoization is a useful technique which helps to achieve cleaner and more efficient code. When some expensive method of an object is called, we save its value to an instance variable, so that we don’t have to do those heavy calculations again.&lt;/p&gt;</description></item><item><title>How To Name Variables And Methods In Ruby</title><link>https://jetthoughts.com/blog/how-name-variables-methods-in-ruby-programming/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-name-variables-methods-in-ruby-programming/</guid><description>&lt;h2 id="how-to-name-variables-and-methods-in-ruby"&gt;How To Name Variables And Methods In Ruby &lt;a class="hlink" href="#how-to-name-variables-and-methods-in-ruby" aria-label="Link to How To Name Variables And Methods In Ruby"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-name-variables-methods-in-ruby-programming/file_0_hu_aecfed7ef0995f17.webp" srcset="https://jetthoughts.com/blog/how-name-variables-methods-in-ruby-programming/file_0_hu_aecfed7ef0995f17.webp 450w, https://jetthoughts.com/blog/how-name-variables-methods-in-ruby-programming/file_0_hu_aecfed7ef0995f17.webp 450w" sizes="(max-width: 760px) 100vw, 556px" width="450" height="360" alt="Name tag reading Hello my name is m_str_var1" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;h1 id="whats-in-a-name-that-which-we-call-a-rose"&gt;What’s in a name? that which we call a rose &lt;a class="hlink" href="#whats-in-a-name-that-which-we-call-a-rose" aria-label="Link to What’s in a name? that which we call a rose"&gt;#&lt;/a&gt;&lt;/h1&gt;&lt;p&gt;#By any other name would smell as sweet.&lt;/p&gt;&#10;&lt;h1 id="-william-shakespeare-romeo-and-juliet"&gt;&lt;em&gt;― William Shakespeare, Romeo and Juliet&lt;/em&gt; &lt;a class="hlink" href="#-william-shakespeare-romeo-and-juliet" aria-label="Link to ― William Shakespeare, Romeo and Juliet"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Junior developers often struggle to choose good names for variables and methods they write. Or even dismiss the need in proper names without any struggle at all. I blame computer science education with its strange love for one-letter variables (or, when all letters are taken, then one-letter-and-a-number).&lt;/p&gt;</description></item><item><title>How to Setup a Project That Can Host Up to 1000 Users for Free</title><link>https://jetthoughts.com/blog/how-setup-project-that-can-host-up-1000-users-for-free-heroku-startup/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-setup-project-that-can-host-up-1000-users-for-free-heroku-startup/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-setup-project-that-can-host-up-1000-users-for-free-heroku-startup/file_0_hu_1d6823edeec54875.webp" srcset="https://jetthoughts.com/blog/how-setup-project-that-can-host-up-1000-users-for-free-heroku-startup/file_0_hu_1d6823edeec54875.webp 800w, https://jetthoughts.com/blog/how-setup-project-that-can-host-up-1000-users-for-free-heroku-startup/file_0_hu_b8b5d89b38a281a2.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="533" alt="Unsplash Photo: Parker Byrd" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="basic-heroku-setup-or-staging-configuration"&gt;Basic Heroku Setup or Staging Configuration &lt;a class="hlink" href="#basic-heroku-setup-or-staging-configuration" aria-label="Link to Basic Heroku Setup or Staging Configuration"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Hosting service: &lt;a href="https://www.heroku.com"&gt;Heroku&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Database: &lt;a href="http://www.postgresql.org"&gt;PostgreSQL&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Error-tracking: &lt;a href="https://rollbar.com"&gt;Rollbar&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Log aggregator: &lt;a href="https://logentries.com"&gt;Logentries&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Performance monitoring: &lt;a href="http://newrelic.com"&gt;New Relic&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Email testing: &lt;a href="https://mailtrap.io"&gt;Mailtrap&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Caching: Memcached Cloud&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Background Jobs: &lt;a href="http://sidekiq.org"&gt;Sidekiq&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Content Delivery Network: &lt;a href="https://aws.amazon.com/cloudfront"&gt;CloudFront&lt;/a&gt; and &lt;a href="https://www.cloudflare.com"&gt;CloudFlare&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Image Hosting: &lt;a href="http://cloudinary.com"&gt;Cloudinary&lt;/a&gt;&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;&lt;em&gt;TL;DR Fast, simple &amp;amp; cheap project setup for a start-up, that can handle up to a thousand users.&lt;/em&gt;&lt;/p&gt;&#10;&lt;h3 id="0-intro-to-the-problem"&gt;0. Intro to the problem &lt;a class="hlink" href="#0-intro-to-the-problem" aria-label="Link to 0. Intro to the problem"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Choosing Ruby on Rails (RoR) as a platform for your startup is a good choice for many reasons. One of them is the simplicity of a framework, and that’s why a lot of start-up founders use RoR.&lt;/p&gt;</description></item><item><title>How to Setup Incremental Design Process in a Startup</title><link>https://jetthoughts.com/blog/how-setup-incremental-design-process-in-startup/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-setup-incremental-design-process-in-startup/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-setup-incremental-design-process-in-startup/file_0_hu_66ff53e8d7365d3c.webp" srcset="https://jetthoughts.com/blog/how-setup-incremental-design-process-in-startup/file_0_hu_66ff53e8d7365d3c.webp 800w, https://jetthoughts.com/blog/how-setup-incremental-design-process-in-startup/file_0_hu_c387f62282d2df13.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="800" alt="https://www.mo-hr.com/en/Specifications/Performance" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Are you a startup looking to streamline your design process? Look no further! This article will guide you through the steps to set up an incremental design process that can help your startup thrive. By implementing an incremental approach, you can tackle design challenges in small, manageable increments, allowing for faster iteration and continuous improvement.&lt;/p&gt;&#10;&lt;h2 id="why-is-incremental-design-process-important-for-startups"&gt;Why is Incremental Design Process Important for Startups? &lt;a class="hlink" href="#why-is-incremental-design-process-important-for-startups" aria-label="Link to Why is Incremental Design Process Important for Startups?"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;In the fast-paced world of startups, time is of the essence. Traditional design processes often involve lengthy cycles hindering product development and innovation. This is where the incremental design process comes in. It allows startups to break down their design tasks into smaller, more manageable chunks, enabling them to identify and solve problems early on, leading to better user experiences and more efficient product development.&lt;/p&gt;</description></item><item><title>How We Helped an Existing Product Debug, Grow, and Gain More (Satisfied) Customers</title><link>https://jetthoughts.com/blog/how-we-helped-an-existing-product-debug-grow-gain-more-satisfied-customers-development-startup/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-we-helped-an-existing-product-debug-grow-gain-more-satisfied-customers-development-startup/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-we-helped-an-existing-product-debug-grow-gain-more-satisfied-customers-development-startup/file_0_hu_f8aa4fada90c76c.webp" srcset="https://jetthoughts.com/blog/how-we-helped-an-existing-product-debug-grow-gain-more-satisfied-customers-development-startup/file_0_hu_f8aa4fada90c76c.webp 800w, https://jetthoughts.com/blog/how-we-helped-an-existing-product-debug-grow-gain-more-satisfied-customers-development-startup/file_0_hu_63ee794c2a8d9113.webp 823w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="498" alt="Photo by NeONBRAND on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;&lt;strong&gt;As its client base grew, Faria Education Group (FEG) needed to ensure its &lt;a href="https://openapply.com/"&gt;OpenApply&lt;/a&gt; product could accommodate increasing demand. The problem? There were a lot (and we mean…a lot) of bugs within the code, and FEG didn’t have any governing project management structure or unified documentation processes in place to address the growing issue.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-we-helped-an-existing-product-debug-grow-gain-more-satisfied-customers-development-startup/file_1_hu_5c52219472405b1.webp" srcset="https://jetthoughts.com/blog/how-we-helped-an-existing-product-debug-grow-gain-more-satisfied-customers-development-startup/file_1_hu_5c52219472405b1.webp 800w, https://jetthoughts.com/blog/how-we-helped-an-existing-product-debug-grow-gain-more-satisfied-customers-development-startup/file_1_hu_99fb8e84cc6b4ca8.webp 1085w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="374" alt="" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>How We Hire Developers at JetThoughts</title><link>https://jetthoughts.com/blog/how-we-hire-developers-at-jetthoughts-recruiting-hr/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-we-hire-developers-at-jetthoughts-recruiting-hr/</guid><description>&lt;h2 id="how-we-hire-developers-at-jetthoughts"&gt;How We Hire Developers at JetThoughts &lt;a class="hlink" href="#how-we-hire-developers-at-jetthoughts" aria-label="Link to How We Hire Developers at JetThoughts"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-we-hire-developers-at-jetthoughts-recruiting-hr/file_0_hu_b4ba173a8cae82b1.webp" srcset="https://jetthoughts.com/blog/how-we-hire-developers-at-jetthoughts-recruiting-hr/file_0_hu_b4ba173a8cae82b1.webp 320w, https://jetthoughts.com/blog/how-we-hire-developers-at-jetthoughts-recruiting-hr/file_0_hu_b4ba173a8cae82b1.webp 320w" sizes="(max-width: 760px) 100vw, 556px" width="320" height="320" alt="JetThoughts hiring process: CV review, Skype tech interview, management interview" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Hiring process at JetThoughts is aimed at building a solid team. We are a small company, and it is crucial to hire right people who have the relevant experience and the same mindset as the rest of the team. This is a guide on how we hire developers.&lt;/p&gt;</description></item><item><title>How We Temporarily Transformed Our Usual Workflow for a Tight Deadline</title><link>https://jetthoughts.com/blog/how-we-temporarily-transformed-our-usual-workflow-for-tight-deadline-agile/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-we-temporarily-transformed-our-usual-workflow-for-tight-deadline-agile/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-we-temporarily-transformed-our-usual-workflow-for-tight-deadline-agile/file_0_hu_4a17c32bc5d1814e.webp" srcset="https://jetthoughts.com/blog/how-we-temporarily-transformed-our-usual-workflow-for-tight-deadline-agile/file_0_hu_4a17c32bc5d1814e.webp 800w, https://jetthoughts.com/blog/how-we-temporarily-transformed-our-usual-workflow-for-tight-deadline-agile/file_0_hu_2d4e6eca5410da8c.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="533" alt="Unsplash Photo: 榮達 陳" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="time-makes-rules"&gt;Time makes rules &lt;a class="hlink" href="#time-makes-rules" aria-label="Link to Time makes rules"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Every time when we start working on a new project, short iteration or just a new feature, we almost always worry about a delivery deadline. «Do we have enough time for this feature?», «Will we do it in time before customer loses the trust to us…». We always try to give an accurate estimation.&lt;/p&gt;</description></item><item><title>Improving Ruby on Rails Test Suite Performance by Disabling Animations</title><link>https://jetthoughts.com/blog/improving-ruby-on-rails-test-suite-performance-by-disabling-animations-testing/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/improving-ruby-on-rails-test-suite-performance-by-disabling-animations-testing/</guid><description>&lt;p&gt;Have you ever encountered random failing tests using the Ruby on Rails system tests? If so, you may be surprised to learn that animations could be the culprit. We’ll explain why animations can cause random failing tests and how disabling them can improve test performance.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/improving-ruby-on-rails-test-suite-performance-by-disabling-animations-testing/file_0_hu_d502d3d4f564d1ab.webp" srcset="https://jetthoughts.com/blog/improving-ruby-on-rails-test-suite-performance-by-disabling-animations-testing/file_0_hu_d502d3d4f564d1ab.webp 800w, https://jetthoughts.com/blog/improving-ruby-on-rails-test-suite-performance-by-disabling-animations-testing/file_0_hu_f27ec2eb693fbcb4.webp 1344w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="533" alt="Dark dashboard interface with charts, progress bars and a glowing ring" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="understanding-the-problem"&gt;Understanding the problem &lt;a class="hlink" href="#understanding-the-problem" aria-label="Link to Understanding the problem"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Animations introduce an unpredictable timing factor that complicates test control. During testing, animations may take longer to finalize than anticipated, resulting in failures. This can frustrate developers trying to build reliable and efficient test suites.&lt;/p&gt;</description></item><item><title>Inexpensive is Not Cheap. Choosing Software Development Company for Your Project</title><link>https://jetthoughts.com/blog/inexpensive-not-cheap-choosing-software-development-company-for-your-project-outsource-mvp/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/inexpensive-not-cheap-choosing-software-development-company-for-your-project-outsource-mvp/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/inexpensive-not-cheap-choosing-software-development-company-for-your-project-outsource-mvp/file_0_hu_b7adde1195b6e0af.webp" srcset="https://jetthoughts.com/blog/inexpensive-not-cheap-choosing-software-development-company-for-your-project-outsource-mvp/file_0_hu_b7adde1195b6e0af.webp 800w, https://jetthoughts.com/blog/inexpensive-not-cheap-choosing-software-development-company-for-your-project-outsource-mvp/file_0_hu_7e95fc3d59d9c5d5.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="558" alt="Person in a blue jacket on a wooden bridge shining a flashlight at the night sky" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;You have a great idea for a new product or a growing business and need a team of software developers. The number of companies and freelancers on IT market might be overwhelming. There are numerous decisions you have to make. For example:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Whether to choose an agency or an individual freelancer?&lt;/p&gt;</description></item><item><title>Mock Everything Is a Good Way to Sink</title><link>https://jetthoughts.com/blog/mock-everything-good-way-sink-tdd-testing/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/mock-everything-good-way-sink-tdd-testing/</guid><description>&lt;p&gt;&lt;em&gt;&lt;strong&gt;Have you found a lot of code with mocks and stubs? But how do you feel about it? When I see mocks/stubs, I am always looking for the way to remove them.&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/mock-everything-good-way-sink-tdd-testing/file_0_hu_ec589f73a0afc30f.webp" srcset="https://jetthoughts.com/blog/mock-everything-good-way-sink-tdd-testing/file_0_hu_ec589f73a0afc30f.webp 604w, https://jetthoughts.com/blog/mock-everything-good-way-sink-tdd-testing/file_0_hu_ec589f73a0afc30f.webp 604w" sizes="(max-width: 760px) 100vw, 556px" width="604" height="453" alt="Meme of a squinting cartoon character captioned Not sure if real or fake" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="application-lifecycle-with-mocking-everything-strategy"&gt;Application lifecycle with mocking everything strategy &lt;a class="hlink" href="#application-lifecycle-with-mocking-everything-strategy" aria-label="Link to Application lifecycle with mocking everything strategy"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;ol&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;Everything starts from a happy developer and a clean architecture with fastest tests.&lt;/p&gt;</description></item><item><title>Myth or Reality: Can Test-Driven Development in Agile Replace QA?</title><link>https://jetthoughts.com/blog/myth-or-reality-can-test-driven-development-in-agile-replace-qa-programming/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/myth-or-reality-can-test-driven-development-in-agile-replace-qa-programming/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/myth-or-reality-can-test-driven-development-in-agile-replace-qa-programming/file_0_hu_21841675f7546c53.webp" srcset="https://jetthoughts.com/blog/myth-or-reality-can-test-driven-development-in-agile-replace-qa-programming/file_0_hu_21841675f7546c53.webp 800w, https://jetthoughts.com/blog/myth-or-reality-can-test-driven-development-in-agile-replace-qa-programming/file_0_hu_a9e70eede1aa8d8e.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="457" alt="Developer at a TDD screen and tester at a QA screen with a question mark between them" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;a href="https://jetthoughts.com/blog/why-how-use-tdd-main-tips-testing/"&gt;Test-driven development&lt;/a&gt; (TDD) is a cornerstone of agile methodology. It involves creating unit tests before writing the code to ensure functionality and efficiency&lt;a href="https://www.nan-labs.com/blog/Test-driven-development-agile/"&gt;[1]&lt;/a&gt;. This practice optimizes the development process and seamlessly integrates with agile techniques such as Scrum, extreme programming, and agile testing, making it a critical component in achieving built-in quality.&lt;/p&gt;</description></item><item><title>Onboarding Tests into Legacy Project</title><link>https://jetthoughts.com/blog/onboarding-tests-into-legacy-project-testing-startup/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/onboarding-tests-into-legacy-project-testing-startup/</guid><description>&lt;p&gt;What solution should you apply to get the first results in a short time in the legacy project? What to do when it’s hard to change a project and you cannot inject dependencies? How to get some confidence in a reasonable time?&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/onboarding-tests-into-legacy-project-testing-startup/file_0_hu_beff01d0c440cbb9.webp" srcset="https://jetthoughts.com/blog/onboarding-tests-into-legacy-project-testing-startup/file_0_hu_beff01d0c440cbb9.webp 800w, https://jetthoughts.com/blog/onboarding-tests-into-legacy-project-testing-startup/file_0_hu_4870a7fb1d0b738.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="401" alt="Graphic reading How to onboard test Legacy Project with a rocket and money bags" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;We will work not only with the legacy but with the team that loses belief in the tests. &lt;em&gt;Cultivating habits starts from the small wins.&lt;/em&gt; And how to get one in such a complex environment.&lt;/p&gt;</description></item><item><title>React + Ruby on Rails without any gems</title><link>https://jetthoughts.com/blog/react-ruby-on-rails-without-any-gems-typescript/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/react-ruby-on-rails-without-any-gems-typescript/</guid><description>&lt;h2 id="react--ruby-on-rails-without-any-gems"&gt;React + Ruby on Rails without any gems &lt;a class="hlink" href="#react--ruby-on-rails-without-any-gems" aria-label="Link to React &amp;#43; Ruby on Rails without any gems"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;How to start using &lt;a href="https://reactjs.org/"&gt;React&lt;/a&gt; components written in &lt;a href="https://www.typescriptlang.org/"&gt;TypeScript&lt;/a&gt; using &lt;a href="https://rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt; as a server with only built-in Rails features? There are a couple of ways we can achieve it with.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/react-ruby-on-rails-without-any-gems-typescript/file_0_hu_48cee82d15807026.webp" srcset="https://jetthoughts.com/blog/react-ruby-on-rails-without-any-gems-typescript/file_0_hu_48cee82d15807026.webp 800w, https://jetthoughts.com/blog/react-ruby-on-rails-without-any-gems-typescript/file_0_hu_f38de96adfe4b7c5.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="640" alt="Photo by Gene Devine on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;One is to add a gem: &lt;a href="https://github.com/reactjs/react-rails"&gt;react-rails&lt;/a&gt; or &lt;a href="https://github.com/shakacode/react_on_rails"&gt;react_on_rails&lt;/a&gt; for example. But there is a way to have a simple integration without using these gems.&lt;/p&gt;</description></item><item><title>Responsive or Adaptive Design? Find out which one is better for you</title><link>https://jetthoughts.com/blog/responsive-or-adaptive-design-find-out-which-one-better-for-you-webdesign/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/responsive-or-adaptive-design-find-out-which-one-better-for-you-webdesign/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/responsive-or-adaptive-design-find-out-which-one-better-for-you-webdesign/file_0_hu_b2d9d439662b15b2.webp" srcset="https://jetthoughts.com/blog/responsive-or-adaptive-design-find-out-which-one-better-for-you-webdesign/file_0_hu_b2d9d439662b15b2.webp 600w, https://jetthoughts.com/blog/responsive-or-adaptive-design-find-out-which-one-better-for-you-webdesign/file_0_hu_b2d9d439662b15b2.webp 600w" sizes="(max-width: 760px) 100vw, 556px" width="600" height="450" alt="Infographic comparing Responsive and Adaptive design, listing traits of each beside device illustrations" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;JetThoughts has launched a new project recently. Whole front-end team was set and started developing the UI part. They designed selected and adapted the suitable libraries, plugins, distributed the tasks — everything as usual. At this stage, a question arises: how the customer sees his future application. Fortunately, we’ve already had several ready design layouts based on which we could estimate the basic layout. Was it responsive in this case…. or adaptive after all?&lt;/p&gt;</description></item><item><title>Simultaneous work on the feature for frontend and backend developers</title><link>https://jetthoughts.com/blog/simultaneous-work-on-feature-for-frontend-backend-developers-development-startup/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/simultaneous-work-on-feature-for-frontend-backend-developers-development-startup/</guid><description>&lt;h2 id="simultaneous-work-on-the-feature-for-frontend-and-backend-developers"&gt;Simultaneous work on the feature for frontend and backend developers &lt;a class="hlink" href="#simultaneous-work-on-the-feature-for-frontend-and-backend-developers" aria-label="Link to Simultaneous work on the feature for frontend and backend developers"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;How do split features on static and backend for 2 developers to prevent blockers? What no-time solution we could use for small projects?&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/simultaneous-work-on-feature-for-frontend-backend-developers-development-startup/file_0_hu_4adf92f85205c082.webp" srcset="https://jetthoughts.com/blog/simultaneous-work-on-feature-for-frontend-backend-developers-development-startup/file_0_hu_4adf92f85205c082.webp 800w, https://jetthoughts.com/blog/simultaneous-work-on-feature-for-frontend-backend-developers-development-startup/file_0_hu_d3ff8f8a4a24658.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="261" alt="Dark project board with Ready, In Progress and Review lists and two cards in progress" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="tiny-feature-flag-solution"&gt;Tiny Feature-flag Solution &lt;a class="hlink" href="#tiny-feature-flag-solution" aria-label="Link to Tiny Feature-flag Solution"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/simultaneous-work-on-feature-for-frontend-backend-developers-development-startup/file_1_hu_b1d2a9ca5e417706.webp" srcset="https://jetthoughts.com/blog/simultaneous-work-on-feature-for-frontend-backend-developers-development-startup/file_1_hu_b1d2a9ca5e417706.webp 532w, https://jetthoughts.com/blog/simultaneous-work-on-feature-for-frontend-backend-developers-development-startup/file_1_hu_b1d2a9ca5e417706.webp 532w" sizes="(max-width: 760px) 100vw, 556px" width="532" height="112" alt="Browser address bar showing jetthoughts.com with a preview query parameter" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Test Driven Thinking for Solving Common Ruby Pitfalls</title><link>https://jetthoughts.com/blog/test-driven-thinking-for-solving-common-ruby-pitfalls-rails-tdd/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/test-driven-thinking-for-solving-common-ruby-pitfalls-rails-tdd/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/test-driven-thinking-for-solving-common-ruby-pitfalls-rails-tdd/file_0_hu_b5b70de65aa7b35f.webp" srcset="https://jetthoughts.com/blog/test-driven-thinking-for-solving-common-ruby-pitfalls-rails-tdd/file_0_hu_b5b70de65aa7b35f.webp 800w, https://jetthoughts.com/blog/test-driven-thinking-for-solving-common-ruby-pitfalls-rails-tdd/file_0_hu_194efd67419e22ea.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="533" alt="Unsplash Photo: Robert Adams" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;Comrade! Our Great Leader requests a web-service for his Despotic Duties! He has chosen you for completing the Booletproof Automate Bloody Repression Machine with REST API, Authorization and other munchies for glory of the Empire.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;OK, does it look like a regular specification for your customer’s new project? As professional developers we definitely can handle this. Let’s dive into our goals:&lt;/p&gt;</description></item><item><title>The simplest way to automate delivery of your React Native Application</title><link>https://jetthoughts.com/blog/simplest-way-automate-delivery-of-your-react-native-application-android-reactnative/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/simplest-way-automate-delivery-of-your-react-native-application-android-reactnative/</guid><description>&lt;h2 id="introduction"&gt;Introduction &lt;a class="hlink" href="#introduction" aria-label="Link to Introduction"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Delivering mobile application’s updates is not as simple as in the case of a web application. From all currently available tools, we have found a working solution which is easy to integrate into a React Native Application.&lt;/p&gt;&#10;&lt;p&gt;And you definitely need to have an automated delivery. Today it’s one of the basic business requirements.&lt;/p&gt;&#10;&lt;p&gt;For a new React Native project, it is crucial to building a clear working process which will involve a business owner.&lt;/p&gt;</description></item><item><title>Video player with React Native. Part 1: Expo</title><link>https://jetthoughts.com/blog/video-player-with-react-native-part-1-expo-reactnative/</link><pubDate>Wed, 05 Jun 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/video-player-with-react-native-part-1-expo-reactnative/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/video-player-with-react-native-part-1-expo-reactnative/file_0_hu_19603e15d2e1245c.webp" srcset="https://jetthoughts.com/blog/video-player-with-react-native-part-1-expo-reactnative/file_0_hu_19603e15d2e1245c.webp 800w, https://jetthoughts.com/blog/video-player-with-react-native-part-1-expo-reactnative/file_0_hu_66f0bd30fbfab7ca.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="React and Expo logos above the JetThoughts name on a dark background" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Nowadays there are &lt;a href="https://medium.freecodecamp.org/a-deeply-detailed-but-never-definitive-guide-to-mobile-development-architecture-6b01ce3b1528"&gt;plenty of solutions&lt;/a&gt; to build an application for a mobile platform. If we are talking about the technology that feels native (uses native UI components), our company has successful experience in &lt;a href="https://jetthoughts.com/blog/simplest-way-automate-delivery-of-your-react-native-application-android-reactnative/"&gt;building React Native applications&lt;/a&gt;. And now we decided to check other similar solutions that are built on top of React Native.&lt;/p&gt;</description></item><item><title>New in Ruby on Rails 7.2: Development Containers Configuration</title><link>https://jetthoughts.com/blog/new-in-ruby-on-rails-72-development-containers-configuration/</link><pubDate>Fri, 31 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/new-in-ruby-on-rails-72-development-containers-configuration/</guid><description>&lt;p&gt;Development container is a full-featured coding environment. &lt;strong&gt;Rails 7.2&lt;/strong&gt; introduces configurations for these containers in your application, including a &lt;code&gt;.devcontainer&lt;/code&gt; folder with &lt;code&gt;Dockerfile&lt;/code&gt;, &lt;code&gt;docker-compose.yml&lt;/code&gt;, and &lt;code&gt;devcontainer.json&lt;/code&gt;.&lt;/p&gt;&#10;&lt;p&gt;The default dev container includes:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;A database (SQLite, Postgres, MySQL, or MariaDB)&lt;/li&gt;&#10;&lt;li&gt;Active Storage with local disk usage and preview features&lt;/li&gt;&#10;&lt;li&gt;A Redis container&lt;/li&gt;&#10;&lt;li&gt;A Headless Chrome container for system tests&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;Generate a new application with a development container using:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;rails new myapp --devcontainer&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;After this, you will see the result of the generator:&lt;/p&gt;</description></item><item><title>SQL: Get records having min/max value per group</title><link>https://jetthoughts.com/blog/sql-get-records-having-minmax-value-per-group-mysql/</link><pubDate>Mon, 20 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/sql-get-records-having-minmax-value-per-group-mysql/</guid><description>&lt;p&gt;Here&amp;rsquo;s one possible solution for a case when you need to fetch a set of records unique on one (or several) column with a min/max value in the other column (usually a timestamp). The solution doesn&amp;rsquo;t require any changes to the DB scheme (denormalization or creation of views) and can be performed in the scope of a single SQL query.&lt;/p&gt;&#10;&lt;h2 id="scenario"&gt;Scenario &lt;a class="hlink" href="#scenario" aria-label="Link to Scenario"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Imagine you have a table named &lt;code&gt;customer_subscriptions&lt;/code&gt; with the following fields:&lt;/p&gt;</description></item><item><title>8-Step Sales Process in 5 min</title><link>https://jetthoughts.com/blog/8-step-sales-process-in-5-min-productivity/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/8-step-sales-process-in-5-min-productivity/</guid><description>&lt;p&gt;The essential part of Sales Planning is to clearly see which steps you as a sales rep should cover in order to get the results you envisioned for your company.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/8-step-sales-process-in-5-min-productivity/file_0_hu_4b57666492390f.webp" srcset="https://jetthoughts.com/blog/8-step-sales-process-in-5-min-productivity/file_0_hu_4b57666492390f.webp 800w, https://jetthoughts.com/blog/8-step-sales-process-in-5-min-productivity/file_0_hu_5c067ab825675ef5.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="800" alt="Illustration by Freepik Storyset" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;We created the briefest checklist to help you go through each of those steps fast while getting the most out of it:&lt;/p&gt;&#10;&lt;h2 id="prospecting"&gt;Prospecting &lt;a class="hlink" href="#prospecting" aria-label="Link to Prospecting"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Here it’s important to decide what your ICP(Ideal Client Profile) is and where you can find people who look like it in the most efficient way.&lt;/p&gt;</description></item><item><title>A typical day at JetThoughts</title><link>https://jetthoughts.com/blog/typical-day-at-jetthoughts-agile-remote/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/typical-day-at-jetthoughts-agile-remote/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/typical-day-at-jetthoughts-agile-remote/file_0_hu_8f2ebfd345c6d305.webp" srcset="https://jetthoughts.com/blog/typical-day-at-jetthoughts-agile-remote/file_0_hu_8f2ebfd345c6d305.webp 800w, https://jetthoughts.com/blog/typical-day-at-jetthoughts-agile-remote/file_0_hu_479fd3a1b359efec.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="600" alt="Photo by Jon Tyson on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;In this article, I want to tell you about a typical day at JetThoughts: culture, values, and the way we communicate and develop. This article will cover our working day and the process by which we deliver the best experience to our clients.&lt;/p&gt;&#10;&lt;p&gt;JetThoughts is about team, passion, and culture. It is highly qualified Ruby on Rails developers, designers, and managers. It is Agile consulting, Web, and Mobile development. It is all about our principles and values: &lt;strong&gt;Self-Management, Trust, Fulfillment, Efficiency, Passion.&lt;/strong&gt;&lt;/p&gt;</description></item><item><title>Cheap tests with Ghost Inspector</title><link>https://jetthoughts.com/blog/cheap-tests-with-ghost-inspector-webdev-legacy/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/cheap-tests-with-ghost-inspector-webdev-legacy/</guid><description>&lt;p&gt;What do you do when a legacy project has no tests and adding them is difficult? Before making new changes, the developer wants to ensure the old code works as expected.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/cheap-tests-with-ghost-inspector-webdev-legacy/file_0_hu_2baa38a628c65746.webp" srcset="https://jetthoughts.com/blog/cheap-tests-with-ghost-inspector-webdev-legacy/file_0_hu_2baa38a628c65746.webp 800w, https://jetthoughts.com/blog/cheap-tests-with-ghost-inspector-webdev-legacy/file_0_hu_f79fa24e17c41e90.webp 810w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="597" alt="Ghost Inspector failed screenshot test showing 3.10 percent change with side-by-side comparison buttons" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;In &lt;a href="https://www.jetthoughts.com/"&gt;JetThoughts&lt;/a&gt;, we resolved such an issue by using &lt;a href="https://ghostinspector.com/"&gt;Ghost Inspector&lt;/a&gt; to simulate a user&amp;rsquo;s actions and check for expected screenshots.&lt;/p&gt;&#10;&lt;h3 id="what-is-ghost-inspector"&gt;What is Ghost Inspector? &lt;a class="hlink" href="#what-is-ghost-inspector" aria-label="Link to What is Ghost Inspector?"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;a href="https://ghostinspector.com/"&gt;Ghost Inspector&lt;/a&gt; is a testing service for monitoring key site functionality. All tests are stored in the cloud and run continuously, and you are notified if an error or variance is detected.&lt;/p&gt;</description></item><item><title>Cons of the private chats for team collaboration</title><link>https://jetthoughts.com/blog/cons-of-private-chats-for-team-collaboration-communication-process/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/cons-of-private-chats-for-team-collaboration-communication-process/</guid><description>&lt;p&gt;Communication between team members is a very important part of the software development process. Especially when the team works remotely.&lt;/p&gt;&#10;&lt;p&gt;At &lt;a href="https://www.jetthoughts.com/"&gt;JetThoughts&lt;/a&gt; we have a time-proven rule — &lt;em&gt;&lt;strong&gt;all communication between team should be in the public channels&lt;/strong&gt;&lt;/em&gt;. Let’s look at the reasons that led to avoiding private chats.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/cons-of-private-chats-for-team-collaboration-communication-process/file_0_hu_7425c48c54736751.webp" srcset="https://jetthoughts.com/blog/cons-of-private-chats-for-team-collaboration-communication-process/file_0_hu_7425c48c54736751.webp 800w, https://jetthoughts.com/blog/cons-of-private-chats-for-team-collaboration-communication-process/file_0_hu_3b83064948254b06.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="533" alt="Photo by Jason Rosewell on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="organize-public-communication"&gt;Organize public communication &lt;a class="hlink" href="#organize-public-communication" aria-label="Link to Organize public communication"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;At JetThoughts we use &lt;a href="https://discordapp.com/"&gt;Discord&lt;/a&gt; as one of the communication tools. Every project has its own channel for the current process discussion, also there are some additional chats for company usage (for example, for tracking day-offs, posting interesting tech news).&lt;/p&gt;</description></item><item><title>Cross-platform development using ReactXP</title><link>https://jetthoughts.com/blog/cross-platform-development-using-reactxp-react-javascript/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/cross-platform-development-using-reactxp-react-javascript/</guid><description>&lt;h2 id="cross-platform-development-using-reactxp"&gt;Cross-platform development using ReactXP &lt;a class="hlink" href="#cross-platform-development-using-reactxp" aria-label="Link to Cross-platform development using ReactXP"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Startups with limited resources trying to reduce cost on delivering their apps to both web and mobile platforms. For now, it’s common to use &lt;a href="https://facebook.github.io/react-native/"&gt;React Native&lt;/a&gt; for mobile and &lt;a href="https://reactjs.org/"&gt;React.js&lt;/a&gt; for the Web. Even though these are two different frameworks, there are some solutions which reduce maintenance and at least prevent duplication in the code.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/cross-platform-development-using-reactxp-react-javascript/file_0_hu_39c9aba991789f22.webp" srcset="https://jetthoughts.com/blog/cross-platform-development-using-reactxp-react-javascript/file_0_hu_39c9aba991789f22.webp 800w, https://jetthoughts.com/blog/cross-platform-development-using-reactxp-react-javascript/file_0_hu_5b224c7df4a7ad97.webp 1198w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="333" alt="Aerial view of a dirt road curving through green forest" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Deploying Jekyll to GitHub Pages with CircleCI 2.0</title><link>https://jetthoughts.com/blog/deploying-jekyll-github-pages-with-circleci-20/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/deploying-jekyll-github-pages-with-circleci-20/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/deploying-jekyll-github-pages-with-circleci-20/file_0_hu_ef472ec800cf7da4.webp" srcset="https://jetthoughts.com/blog/deploying-jekyll-github-pages-with-circleci-20/file_0_hu_ef472ec800cf7da4.webp 800w, https://jetthoughts.com/blog/deploying-jekyll-github-pages-with-circleci-20/file_0_hu_ef472ec800cf7da4.webp 800w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="White interlocking gears on a black background" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Have you ever seen this error when you tried to deploy your Jekyll site to GitHub Pages?&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/deploying-jekyll-github-pages-with-circleci-20/file_1_hu_71d007838b132b74.webp" srcset="https://jetthoughts.com/blog/deploying-jekyll-github-pages-with-circleci-20/file_1_hu_71d007838b132b74.webp 599w, https://jetthoughts.com/blog/deploying-jekyll-github-pages-with-circleci-20/file_1_hu_71d007838b132b74.webp 599w" sizes="(max-width: 760px) 100vw, 556px" width="599" height="281" alt="GitHub Pages warning that a post filename does not have a valid date" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;One of the reasons is that some of the gems in your Gemfile are not supported by GitHub Pages. There is a way to have custom gems by setting up your own continuous delivery. In this post we will use CircleCI to solve the problem.&lt;/p&gt;</description></item><item><title>Docker Compose Test Setup for Isolated CI Runs</title><link>https://jetthoughts.com/blog/running-tests-in-containers-with-docker-compose-coding-tutorial/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/running-tests-in-containers-with-docker-compose-coding-tutorial/</guid><description>&lt;blockquote&gt;&#10;&lt;h3 id="the-main-advantages-of-this-way-are-to-have-independent-environment-for-the-tests-running-and-to-reduce-the-complexity-of-the-test-environment-setup-just-load-and-run-tests-consider-how-to-achieve-this"&gt;The main advantages of this way are to have independent environment for the tests running and to reduce the complexity of the test environment setup. Just load and run tests. Consider how to achieve this &lt;a class="hlink" href="#the-main-advantages-of-this-way-are-to-have-independent-environment-for-the-tests-running-and-to-reduce-the-complexity-of-the-test-environment-setup-just-load-and-run-tests-consider-how-to-achieve-this" aria-label="Link to The main advantages of this way are to have independent environment for the tests running and to reduce the complexity of the test environment setup. Just load and run tests. Consider how to achieve this"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/running-tests-in-containers-with-docker-compose-coding-tutorial/file_0_hu_4fadbd79a17119a8.webp" srcset="https://jetthoughts.com/blog/running-tests-in-containers-with-docker-compose-coding-tutorial/file_0_hu_4fadbd79a17119a8.webp 800w, https://jetthoughts.com/blog/running-tests-in-containers-with-docker-compose-coding-tutorial/file_0_hu_cf0510057b1a42fc.webp 891w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="288" alt="Bash script that exports the current user id and runs docker-compose run app bin/rspec" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Effective project onboarding checklist</title><link>https://jetthoughts.com/blog/effective-project-onboarding-checklist-management-productivity/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/effective-project-onboarding-checklist-management-productivity/</guid><description>&lt;p&gt;To avoid the onboarding slip and remove expectations and misunderstandings, the &lt;strong&gt;&lt;a href="https://www.jetthoughts.com"&gt;JetThoughts&lt;/a&gt;&lt;/strong&gt; team defined a checklist of items to clarify. We will discuss how to start the project, but we won&amp;rsquo;t discuss the onboarding process.&lt;/p&gt;&#10;&lt;p&gt;We assume all the developers are familiar with the principles described in our &lt;a href="https://jetthoughts.com/blog/typical-day-at-jetthoughts-agile-remote/"&gt;article&lt;/a&gt;. The checklist should give information about the project and define some rules and conventions. Let&amp;rsquo;s take a closer look at each of those.&lt;/p&gt;</description></item><item><title>Feature Branches and Where to Find Them</title><link>https://jetthoughts.com/blog/feature-branches-where-find-them-development-coding/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/feature-branches-where-find-them-development-coding/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;Here we want to go through the feature branch process, show what downsides this approach may have and share why it causes us pain.&lt;/p&gt;&#10;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/feature-branches-where-find-them-development-coding/file_0_hu_ed021e0d42ee9830.webp" srcset="https://jetthoughts.com/blog/feature-branches-where-find-them-development-coding/file_0_hu_ed021e0d42ee9830.webp 800w, https://jetthoughts.com/blog/feature-branches-where-find-them-development-coding/file_0_hu_a95f3749ab2ea0d5.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="530" alt="Photo by Yancy Min on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;How to develop a new fancy application feature and ship it to the production? One popular way is to use the long-lived feature branch flow. It means that one or few developers fully code the feature in a separate independent branch and only then make Pull Request to the master branch. They can still do small incremental changes there but it’s isolated from the master.&lt;/p&gt;</description></item><item><title>Git minimum for effective project development</title><link>https://jetthoughts.com/blog/git-minimum-for-effective-project-development/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/git-minimum-for-effective-project-development/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;For beginners who are not familiar with &lt;a href="https://git-scm.com/"&gt;Git&lt;/a&gt; or GitFlow, we grabbed the most common commands to be effective from the first day.&lt;/p&gt;&#10;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/git-minimum-for-effective-project-development/file_0_hu_e1ee60b49f1f684c.webp" srcset="https://jetthoughts.com/blog/git-minimum-for-effective-project-development/file_0_hu_e1ee60b49f1f684c.webp 800w, https://jetthoughts.com/blog/git-minimum-for-effective-project-development/file_0_hu_8a6007b65d7586d1.webp 902w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="187" alt="Terminal commands git add, git commit with a message, and git push" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="global-configurations"&gt;Global configurations &lt;a class="hlink" href="#global-configurations" aria-label="Link to Global configurations"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Initialize and configure the Git to push the current branch to a branch with the same name on the remote repo. While pushing the code, if branch with your local name does not exist in your remote repo, Git will automatically create it:&lt;/p&gt;</description></item><item><title>How does the onboarding look like in JetThoughts?</title><link>https://jetthoughts.com/blog/how-does-onboarding-look-like-in-jetthoughts-productivity-startup/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-does-onboarding-look-like-in-jetthoughts-productivity-startup/</guid><description>&lt;h2 id="how-does-the-onboarding-look-like-in-jetthoughts"&gt;How does the onboarding look like in JetThoughts? &lt;a class="hlink" href="#how-does-the-onboarding-look-like-in-jetthoughts" aria-label="Link to How does the onboarding look like in JetThoughts?"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;em&gt;This is an &lt;a href="https://jetthoughts.com/blog/effective-project-onboarding-checklist-management-productivity/"&gt;onboarding checklist&lt;/a&gt; replication built relying on my own experience in &lt;a href="https://www.jetthoughts.com/"&gt;**JetThoughts&lt;/a&gt;**. We created our process, which could be less stressful and more enjoyable at the same time.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;If you follow these onboarding strategies thoroughly, you will grow both successful and happy employees. Here’s the &lt;a href="https://jetthoughts.com/blog/effective-project-onboarding-checklist-management-productivity/"&gt;article&lt;/a&gt; which I was relying on.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-does-onboarding-look-like-in-jetthoughts-productivity-startup/file_0_hu_63211dc15fd5b1cc.webp" srcset="https://jetthoughts.com/blog/how-does-onboarding-look-like-in-jetthoughts-productivity-startup/file_0_hu_63211dc15fd5b1cc.webp 800w, https://jetthoughts.com/blog/how-does-onboarding-look-like-in-jetthoughts-productivity-startup/file_0_hu_e3766c775f995e8f.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="534" alt="Photo by Toa Heftiba on Unsplash" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>How to handle remote services in tests</title><link>https://jetthoughts.com/blog/how-handle-remote-services-in-tests-rails-tutorial/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-handle-remote-services-in-tests-rails-tutorial/</guid><description>&lt;blockquote&gt;&#10;&lt;h3 id="do-you-have-difficulties-in-adding-the-new-tests-and-their-readability-decreased-due-to-mocks-and-stubs-lets-try-to-get-rid-of-external-requests-in-tests"&gt;Do you have difficulties in adding the new tests and their readability decreased due to mocks and stubs? Let’s try to get rid of external requests in tests &lt;a class="hlink" href="#do-you-have-difficulties-in-adding-the-new-tests-and-their-readability-decreased-due-to-mocks-and-stubs-lets-try-to-get-rid-of-external-requests-in-tests" aria-label="Link to Do you have difficulties in adding the new tests and their readability decreased due to mocks and stubs? Let’s try to get rid of external requests in tests"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-handle-remote-services-in-tests-rails-tutorial/file_0_hu_977a56c716749271.webp" srcset="https://jetthoughts.com/blog/how-handle-remote-services-in-tests-rails-tutorial/file_0_hu_977a56c716749271.webp 800w, https://jetthoughts.com/blog/how-handle-remote-services-in-tests-rails-tutorial/file_0_hu_2853042261e65b2e.webp 1324w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="434" alt="Ruby code picking a fake posts adapter in the test environment, otherwise a Medium adapter" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>How to have a clean CSS structure with RSCSS/ITCSS</title><link>https://jetthoughts.com/blog/how-have-clean-css-structure-with-rscssitcss-rscss/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-have-clean-css-structure-with-rscssitcss-rscss/</guid><description>&lt;p&gt;Writing the CSS code is relatively simple. Learning a language is not a big problem and doesn’t take a lot of effort. Making three lines of CSS code to style a DOM-element won’t take you more than two minutes, but let’s open our eyes to the bigger picture…&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-have-clean-css-structure-with-rscssitcss-rscss/file_0_hu_65521de6cc37f5d6.webp" srcset="https://jetthoughts.com/blog/how-have-clean-css-structure-with-rscssitcss-rscss/file_0_hu_65521de6cc37f5d6.webp 800w, https://jetthoughts.com/blog/how-have-clean-css-structure-with-rscssitcss-rscss/file_0_hu_93d595fccaf5dc9c.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="339" alt="Large red CSS lettering between curly braces on a yellow patterned background" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;What if the application grows faster than expected at the beginning of the project?&lt;/p&gt;</description></item><item><title>How to know what your team is doing?</title><link>https://jetthoughts.com/blog/how-know-what-your-team-doing-remote-startup/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-know-what-your-team-doing-remote-startup/</guid><description>&lt;p&gt;&lt;em&gt;Photo by &lt;a href="https://unsplash.com/@thomasdrouaultphotography"&gt;Thomas Drouault&lt;/a&gt; on &lt;a href="https://unsplash.com/s/photos/clients"&gt;Unsplash&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;What techniques do you use to work with the team in an async, remote environment? How to collaborate effectively within the distributed team located in different timezones and deliver tangible results on top of that?&lt;/p&gt;&#10;&lt;p&gt;In &lt;a href="https://www.jetthoughts.com/"&gt;JetThoughts&lt;/a&gt;, we got some common tactics we use when dealing with clients. They were built having &lt;a href="https://jetthoughts.com/blog/checklist-for-non-tech-founder-agile/"&gt;these tips&lt;/a&gt; in mind.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;h1 id="its-vital-to-built-trust-and-rapport-with-the-client-so-here-are-some-best-practices-on-how-to-achieve-that"&gt;It’s vital to built trust and rapport with the client, so here are some best practices on how to achieve that &lt;a class="hlink" href="#its-vital-to-built-trust-and-rapport-with-the-client-so-here-are-some-best-practices-on-how-to-achieve-that" aria-label="Link to It’s vital to built trust and rapport with the client, so here are some best practices on how to achieve that"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;/blockquote&gt;&#10;&lt;h3 id="1-over-communication-by-everyday-updates"&gt;1. Over-communication by everyday updates &lt;a class="hlink" href="#1-over-communication-by-everyday-updates" aria-label="Link to 1. Over-communication by everyday updates"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Always listen and read what your client needs and provide feedback right away, use async text standups to keep your customer in the loop.&lt;/p&gt;</description></item><item><title>How To Write The Right Content For Your Article</title><link>https://jetthoughts.com/blog/how-write-right-content-for-your-article-blogging-posting/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-write-right-content-for-your-article-blogging-posting/</guid><description>&lt;p&gt;There are moments when you’re full of motivation, ideas come up with your mind and straight onto the page. But there are other moments when you take up hours of your time, before getting to that last sentence. You’re almost about giving up.&lt;/p&gt;&#10;&lt;p&gt;It’s time to write creating content. But not just any content. We’re talking creative, suitable and interesting content that actually gets read. And that’s exactly what you’ll get in this article.&lt;/p&gt;</description></item><item><title>JetThoughts receives First Review on Clutch.co: Thank you</title><link>https://jetthoughts.com/blog/jetthoughts-receives-first-review-on-clutchco-thank-you-startup/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/jetthoughts-receives-first-review-on-clutchco-thank-you-startup/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/jetthoughts-receives-first-review-on-clutchco-thank-you-startup/file_0_hu_f95f322a21a1a0bb.webp" srcset="https://jetthoughts.com/blog/jetthoughts-receives-first-review-on-clutchco-thank-you-startup/file_0_hu_f95f322a21a1a0bb.webp 800w, https://jetthoughts.com/blog/jetthoughts-receives-first-review-on-clutchco-thank-you-startup/file_0_hu_3fc5f961519d22ba.webp 1269w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="1009" alt="Clutch profile showing a 5.0 star review of JetThoughts for mobile app development" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Our team at JetThoughts has an expertise of the &lt;a href="https://rubyonrails.org/"&gt;Ruby on Rails&lt;/a&gt; development service line, and we’re excited we could have offered that to our real estate platform client. This web application framework streamlines the processes for building our clients’ apps that stand out in the crowd.&lt;/p&gt;&#10;&lt;p&gt;We’ve recently received on the first review from this client on Clutch, &lt;a href="https://clutch.co/developers/ruby-rails"&gt;an evaluation-based platform&lt;/a&gt; for B2B companies. This five-star review means a lot to us personally, but it also means a lot for the future of JetThoughts.&lt;/p&gt;</description></item><item><title>Load web page in less than one second</title><link>https://jetthoughts.com/blog/load-web-page-in-less-than-one-second-optimization-html/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/load-web-page-in-less-than-one-second-optimization-html/</guid><description>&lt;p&gt;How to improve the website load time without much effort? What optimizations and improvements can help to speed up page loading? Consider a web page as an example and prove that downloading in less than one second is possible.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/load-web-page-in-less-than-one-second-optimization-html/file_0_hu_e2ea6022137f5180.webp" srcset="https://jetthoughts.com/blog/load-web-page-in-less-than-one-second-optimization-html/file_0_hu_e2ea6022137f5180.webp 800w, https://jetthoughts.com/blog/load-web-page-in-less-than-one-second-optimization-html/file_0_hu_46215c39a621f5f8.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="482" alt="Photo by Igor Miske on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="what-reduces-site-performance"&gt;What reduces site performance? &lt;a class="hlink" href="#what-reduces-site-performance" aria-label="Link to What reduces site performance?"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The main reason for a long page load is the downloading of third-party files (styles, scripts, pictures, fonts).&lt;/p&gt;</description></item><item><title>Migrate from Sidekiq to Sidekiq.cr in Rails application</title><link>https://jetthoughts.com/blog/migrate-from-sidekiq-sidekiqcr-in-rails-application-tdd-testing/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/migrate-from-sidekiq-sidekiqcr-in-rails-application-tdd-testing/</guid><description>&lt;blockquote&gt;&#10;&lt;h1 id="where-is-it-better-to-start-the-sidekiq-jobs-transition-from-ruby-to-crystal-in-order-to-optimize-the-resources-usage-on-the-server-and-at-the-same-time-not-to-struggle-with-the-duplication"&gt;Where is it better to start the Sidekiq jobs transition from Ruby to Crystal in order to optimize the resources usage on the server and, at the same time, not to struggle with the duplication? &lt;a class="hlink" href="#where-is-it-better-to-start-the-sidekiq-jobs-transition-from-ruby-to-crystal-in-order-to-optimize-the-resources-usage-on-the-server-and-at-the-same-time-not-to-struggle-with-the-duplication" aria-label="Link to Where is it better to start the Sidekiq jobs transition from Ruby to Crystal in order to optimize the resources usage on the server and, at the same time, not to struggle with the duplication?"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/migrate-from-sidekiq-sidekiqcr-in-rails-application-tdd-testing/file_0_hu_2cee22f08751876d.webp" srcset="https://jetthoughts.com/blog/migrate-from-sidekiq-sidekiqcr-in-rails-application-tdd-testing/file_0_hu_2cee22f08751876d.webp 706w, https://jetthoughts.com/blog/migrate-from-sidekiq-sidekiqcr-in-rails-application-tdd-testing/file_0_hu_2cee22f08751876d.webp 706w" sizes="(max-width: 760px) 100vw, 556px" width="706" height="232" alt="Two black logos with a handshake icon between them" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>React Native Testing Options Overview</title><link>https://jetthoughts.com/blog/react-native-testing-options-overview/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/react-native-testing-options-overview/</guid><description>&lt;p&gt;After investigating 100 articles about testing React Native applications I detected 2 main methods of testing which helped me succeed and can definitely help you.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/react-native-testing-options-overview/file_0_hu_b0471f3b094ad6c3.webp" srcset="https://jetthoughts.com/blog/react-native-testing-options-overview/file_0_hu_b0471f3b094ad6c3.webp 800w, https://jetthoughts.com/blog/react-native-testing-options-overview/file_0_hu_d658e2fd3b7ff473.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="449" alt="Photo by Austin Neill on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="unit-testing"&gt;Unit testing &lt;a class="hlink" href="#unit-testing" aria-label="Link to Unit testing"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;A lot of people use &lt;a href="https://jestjs.io/docs/en/tutorial-react-native"&gt;Jest&lt;/a&gt; with &lt;a href="https://airbnb.io/enzyme/docs/guides/react-native.html"&gt;Enzyme&lt;/a&gt; to make unit testing more confident and more easygoing. You can do snapshot testing, test components, and assert functional staff.&lt;/p&gt;&#10;&lt;p&gt;There is another option called &lt;a href="https://github.com/callstack/react-native-testing-library"&gt;React Native Testing Library&lt;/a&gt; is a lightweight React Native testing utilities helping you write better tests with less effort.&lt;/p&gt;</description></item><item><title>Services and tools to automatize development for the remote teams</title><link>https://jetthoughts.com/blog/services-tools-automatize-development-for-remote-teams-workflow-automation/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/services-tools-automatize-development-for-remote-teams-workflow-automation/</guid><description>&lt;blockquote&gt;&#10;&lt;h3 id="we-save-a-lot-of-time-on-development-and-create-better-products-due-to-well-formed-workflow-tools-and-services-that-help-us-to-implement-the-workflow-we-will-describe-below"&gt;We save a lot of time on development and create better products due to well-formed workflow. Tools and services that help us to implement the workflow we will describe below &lt;a class="hlink" href="#we-save-a-lot-of-time-on-development-and-create-better-products-due-to-well-formed-workflow-tools-and-services-that-help-us-to-implement-the-workflow-we-will-describe-below" aria-label="Link to We save a lot of time on development and create better products due to well-formed workflow. Tools and services that help us to implement the workflow we will describe below"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/services-tools-automatize-development-for-remote-teams-workflow-automation/file_0_hu_938356ee74c08e2.webp" srcset="https://jetthoughts.com/blog/services-tools-automatize-development-for-remote-teams-workflow-automation/file_0_hu_938356ee74c08e2.webp 800w, https://jetthoughts.com/blog/services-tools-automatize-development-for-remote-teams-workflow-automation/file_0_hu_2d15b062b6c98f55.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="532" alt="Photo by Frederic Köberl on Unsplash" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Simplest step by step guide creating a post</title><link>https://jetthoughts.com/blog/simplest-step-by-guide-creating-post-blogging-writing/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/simplest-step-by-guide-creating-post-blogging-writing/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/simplest-step-by-guide-creating-post-blogging-writing/file_0_hu_8fff5d5453a0671f.webp" srcset="https://jetthoughts.com/blog/simplest-step-by-guide-creating-post-blogging-writing/file_0_hu_8fff5d5453a0671f.webp 800w, https://jetthoughts.com/blog/simplest-step-by-guide-creating-post-blogging-writing/file_0_hu_7f251a8cbcc4eb15.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="601" alt="Photo by Aaron Burden on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;For novice authors who are going to share their thoughts with public through the posts, we highlighted the recommendations and the stages for starting to write.&lt;/p&gt;&#10;&lt;h2 id="think-up-a-title"&gt;Think up a title &lt;a class="hlink" href="#think-up-a-title" aria-label="Link to Think up a title"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Every post has a **title.**A thing that indicates what the article is about and distinguishes it from other articles. After making a research about a thing you want to describe you need to think about the title of your own post. For this, compose a few variants, about 4–5 and try to find one that matches best.&lt;/p&gt;</description></item><item><title>Speed up GitHub PR’s review of your React applications</title><link>https://jetthoughts.com/blog/speed-up-github-prs-review-of-your-react-applications-development-tutorial/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/speed-up-github-prs-review-of-your-react-applications-development-tutorial/</guid><description>&lt;p&gt;Would you like to speed up PR’s review of React application, when you use Jest snapshot testing?&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/speed-up-github-prs-review-of-your-react-applications-development-tutorial/file_0_hu_34cf11e47877526f.webp" srcset="https://jetthoughts.com/blog/speed-up-github-prs-review-of-your-react-applications-development-tutorial/file_0_hu_34cf11e47877526f.webp 800w, https://jetthoughts.com/blog/speed-up-github-prs-review-of-your-react-applications-development-tutorial/file_0_hu_473660736876d386.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="533" alt="Photo by Makarios Tang on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;How much time do we spend on waiting while snap files being rendered? Working with lots of large React components’ .snap files, manually collapsing files over and over gets quite painful. But don’t panic, here is the solution: GitHub uses &lt;a href="https://github.com/github/linguist"&gt;Linguist&lt;/a&gt; to compute stats about your files, ignore files that are vendored, and even to suppress files that are generated automatically. So, you can configure it to treat files of your choosing in a certain way.&lt;/p&gt;</description></item><item><title>Things that remote teams expect from the product owner</title><link>https://jetthoughts.com/blog/things-that-remote-teams-expect-from-product-owner-startup/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/things-that-remote-teams-expect-from-product-owner-startup/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/things-that-remote-teams-expect-from-product-owner-startup/file_0_hu_8b6fc3a082c3e096.webp" srcset="https://jetthoughts.com/blog/things-that-remote-teams-expect-from-product-owner-startup/file_0_hu_8b6fc3a082c3e096.webp 800w, https://jetthoughts.com/blog/things-that-remote-teams-expect-from-product-owner-startup/file_0_hu_37366488a53645f4.webp 1000w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="534" alt="Photo by Helloquence" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Modern digital product development methods require a flexible approach. It is much more efficient than the old school cascade with a clearly defined approach, which cannot be deviated easily. The principle of the flexible methodology is the opposite. It’s iterative, requires competent prioritization, and product changes on demand are justified.&lt;/p&gt;&#10;&lt;p&gt;It would seem that this approach should cause chaos in the project team because everyone is trying to express their opinion influencing the product vision, but it’s not true. To avoid this chaos, there should always be a decision-maker in the development team.&lt;/p&gt;</description></item><item><title>Tips for writing readable system tests in Rails</title><link>https://jetthoughts.com/blog/tips-for-writing-readable-system-tests-in-rails-capybara-ruby/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/tips-for-writing-readable-system-tests-in-rails-capybara-ruby/</guid><description>&lt;blockquote&gt;&#10;&lt;h1 id="want-to-make-system-tests-easy-to-main-tain-we-have-selected-some-best-practice-tips-to-help-achieve-this"&gt;Want to make system tests easy to main tain? We have selected some best practice tips to help achieve this &lt;a class="hlink" href="#want-to-make-system-tests-easy-to-main-tain-we-have-selected-some-best-practice-tips-to-help-achieve-this" aria-label="Link to Want to make system tests easy to main tain? We have selected some best practice tips to help achieve this"&gt;#&lt;/a&gt;&lt;/h1&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/tips-for-writing-readable-system-tests-in-rails-capybara-ruby/file_0_hu_7312fbc8d089d8a0.webp" srcset="https://jetthoughts.com/blog/tips-for-writing-readable-system-tests-in-rails-capybara-ruby/file_0_hu_7312fbc8d089d8a0.webp 800w, https://jetthoughts.com/blog/tips-for-writing-readable-system-tests-in-rails-capybara-ruby/file_0_hu_d1920c2f05f5e4ae.webp 1080w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="427" alt="Ruby feature spec for marking a todo complete, with helper methods below the scenario" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="organize-tests-in-four-phases"&gt;Organize tests in four phases &lt;a class="hlink" href="#organize-tests-in-four-phases" aria-label="Link to Organize tests in four phases"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The &lt;a href="http://xunitpatterns.com/Four%20Phase%20Test.html"&gt;Four-Phase Test&lt;/a&gt; is a testing pattern, applicable to all programming languages and unit tests (not so much integration tests).&lt;/p&gt;</description></item><item><title>Tips to hire great people</title><link>https://jetthoughts.com/blog/tips-hire-great-people-startup-hiring/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/tips-hire-great-people-startup-hiring/</guid><description>&lt;p&gt;At JetThoughts, we don’t typically fire our employees. We always strive to find the right people who share our beliefs and values and are committed to long-term cooperation.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/tips-hire-great-people-startup-hiring/file_0_hu_26caf54ecbb637b9.webp" srcset="https://jetthoughts.com/blog/tips-hire-great-people-startup-hiring/file_0_hu_26caf54ecbb637b9.webp 800w, https://jetthoughts.com/blog/tips-hire-great-people-startup-hiring/file_0_hu_31692f58e66ccb68.webp 1204w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="441" alt="Photo by rawpixel" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;We are a small remote team. Unlike mid-sized or big companies, where people could meet you one day and not recognize you the day after, JetThoughts is where everyone knows everyone else.&lt;/p&gt;&#10;&lt;p&gt;When hiring, we are looking for people who are comfortable working and communicating with others, so it’s about skills and personality.&lt;/p&gt;</description></item><item><title>Tools to provide effective feedback for distributed development teams</title><link>https://jetthoughts.com/blog/tools-provide-effective-feedback-for-distributed-development-teams-productivity-startup/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/tools-provide-effective-feedback-for-distributed-development-teams-productivity-startup/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/tools-provide-effective-feedback-for-distributed-development-teams-productivity-startup/file_0_hu_e138c9d0acc8dd1d.webp" srcset="https://jetthoughts.com/blog/tools-provide-effective-feedback-for-distributed-development-teams-productivity-startup/file_0_hu_e138c9d0acc8dd1d.webp 800w, https://jetthoughts.com/blog/tools-provide-effective-feedback-for-distributed-development-teams-productivity-startup/file_0_hu_9dcb1a9953128c17.webp 1000w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="541" alt="Photo by Jakob Owens on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;How to share info in a remote async environment? What is the best way to keep everyone in the loop?&lt;/p&gt;&#10;&lt;p&gt;When people work in the office, their processes are synchronized, and a lot of routines, delivery flows are dependent, which results in bureaucracy and unnecessary tasks ping pong over and over again.&lt;/p&gt;&#10;&lt;p&gt;It may not only result in a toxic culture, stressful environment, and overall decrease not just in quality, but also in communication and the way people used to do their job.&lt;/p&gt;</description></item><item><title>Why communication is so important when you work remotely?</title><link>https://jetthoughts.com/blog/why-communication-important-when-you-work-remotely-remote/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/why-communication-important-when-you-work-remotely-remote/</guid><description>&lt;p&gt;Communication at work is one of the most important aspects of any business.&lt;/p&gt;&#10;&lt;p&gt;But why? Let’s take a brief look at the reasons.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/why-communication-important-when-you-work-remotely-remote/file_0_hu_184b9b45533734d0.webp" srcset="https://jetthoughts.com/blog/why-communication-important-when-you-work-remotely-remote/file_0_hu_184b9b45533734d0.webp 800w, https://jetthoughts.com/blog/why-communication-important-when-you-work-remotely-remote/file_0_hu_9aac884fe88b3896.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="534" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="working-routine"&gt;Working routine &lt;a class="hlink" href="#working-routine" aria-label="Link to Working routine"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;How does your working day in the office start? Right, it starts with coffee.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/why-communication-important-when-you-work-remotely-remote/file_1_hu_966ac5a292f52b5d.webp" srcset="https://jetthoughts.com/blog/why-communication-important-when-you-work-remotely-remote/file_1_hu_966ac5a292f52b5d.webp 672w, https://jetthoughts.com/blog/why-communication-important-when-you-work-remotely-remote/file_1_hu_966ac5a292f52b5d.webp 672w" sizes="(max-width: 760px) 100vw, 556px" width="672" height="992" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Seriously, coffee is the most important part of my daily routine. When you work remotely, you are not able to come to the office in the morning, take your favorite cup, make fresh coffee and drink it while chatting with your colleagues before the working day starts.&lt;/p&gt;</description></item><item><title>Why Hiring Senior Developers on Freelance Platforms Fails</title><link>https://jetthoughts.com/blog/why-it-hard-find-great-developer-on-upwork-other-freelance-platforms-senior/</link><pubDate>Wed, 15 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/why-it-hard-find-great-developer-on-upwork-other-freelance-platforms-senior/</guid><description>&lt;p&gt;Finding good developers is a challenge. Nowadays, professionals are rare. Not all developers get to this stage and the ones that do are in demand. They don’t have much trouble finding work, they have been working for stable customers for years …&lt;/p&gt;&#10;&lt;p&gt;So, Are you asking yourself now, how you can find a great developer to join your team or to build the product? Let’s find out about it.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/why-it-hard-find-great-developer-on-upwork-other-freelance-platforms-senior/file_0_hu_9c167c9819297c0a.webp" srcset="https://jetthoughts.com/blog/why-it-hard-find-great-developer-on-upwork-other-freelance-platforms-senior/file_0_hu_9c167c9819297c0a.webp 800w, https://jetthoughts.com/blog/why-it-hard-find-great-developer-on-upwork-other-freelance-platforms-senior/file_0_hu_c2d1b685827fff72.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="534" alt="Photo by Ryoji Iwata on Unsplash" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>4 Tricks to Write Catchy Headlines</title><link>https://jetthoughts.com/blog/4-tricks-write-catchy-headlines-contentwriting/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/4-tricks-write-catchy-headlines-contentwriting/</guid><description>&lt;p&gt;How to improve your writing, and create not just a good headline, but a catchy one? No matter what your content type is, and if you’re either writing a small post or an in-depth report.&lt;/p&gt;&#10;&lt;p&gt;The headline is the first thing people will see on a page. Copyblogger estimated that 8 out of 10 people read the title. However, the title doesn’t keep them reading through your blog content. With these headline writing tricks, you’ll get attention from readers immediately.&lt;/p&gt;</description></item><item><title>5 Free tools to make the sales process easier</title><link>https://jetthoughts.com/blog/5-free-tools-make-sales-process-easier-leadgeneration/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/5-free-tools-make-sales-process-easier-leadgeneration/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/5-free-tools-make-sales-process-easier-leadgeneration/file_0_hu_f8ca3782b5984b72.webp" srcset="https://jetthoughts.com/blog/5-free-tools-make-sales-process-easier-leadgeneration/file_0_hu_f8ca3782b5984b72.webp 800w, https://jetthoughts.com/blog/5-free-tools-make-sales-process-easier-leadgeneration/file_0_hu_a33418740fbfee66.webp 1200w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="531" alt="Photo by Jesse Orico on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;What if I told you that there is no need to spend all your budget on super modern CRMs and expensive sales tools in order to start getting your first leads?&lt;/p&gt;&#10;&lt;p&gt;The right choice of your sales tools and practices becomes crucially important, as, in digitally influenced sales, the whole process is no longer focused so much on giving pitches and pricing, but aimed at well-thought value proposition personalized for each client.&lt;/p&gt;</description></item><item><title>5 Rails Virtual Attribute Use Cases - Skip the Column</title><link>https://jetthoughts.com/blog/rails-virtual-attributes-use-cases-ruby/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rails-virtual-attributes-use-cases-ruby/</guid><description>&lt;p&gt;You want to keep some data but do not want to create the new column in the database? Your data should be stored in a form different from the one the user got to deal with?&lt;/p&gt;&#10;&lt;p&gt;The virtual attributes could help you! Let’s look at the main cases that come to our aid.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/rails-virtual-attributes-use-cases-ruby/file_0_hu_f70b2f0d4fda09d7.webp" srcset="https://jetthoughts.com/blog/rails-virtual-attributes-use-cases-ruby/file_0_hu_f70b2f0d4fda09d7.webp 800w, https://jetthoughts.com/blog/rails-virtual-attributes-use-cases-ruby/file_0_hu_efebcebe3f07519f.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="534" alt="Photo by Bram Van Oost onUnsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h3 id="what-is-virtual-attribute"&gt;What is ‘Virtual Attribute’? &lt;a class="hlink" href="#what-is-virtual-attribute" aria-label="Link to What is ‘Virtual Attribute’?"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;The Virtual Attribute is a class attribute, which has no representation in the database. It becomes available after object initialization and remains alive while the object itself is available (like the instance methods). We defined some cases, where virtual attributes are useful and make the code and development more understandable.&lt;/p&gt;</description></item><item><title>A Practical Guide To Writing Introductions</title><link>https://jetthoughts.com/blog/practical-guide-writing-introductions-introduction/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/practical-guide-writing-introductions-introduction/</guid><description>&lt;p&gt;&lt;em&gt;Are you struggling with the introduction as it’s absolutely annoying thing that has to be written? It simply summarises the main points of your article. So why so much noise about it?&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;If your introduction is weak, it’ll discourage the reader from reading further — even if the title was captivating. You have just a few seconds to catch your reader’s attention.&lt;/p&gt;&#10;&lt;p&gt;Let’s go!&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/practical-guide-writing-introductions-introduction/file_0_hu_16675869439c23a9.webp" srcset="https://jetthoughts.com/blog/practical-guide-writing-introductions-introduction/file_0_hu_16675869439c23a9.webp 800w, https://jetthoughts.com/blog/practical-guide-writing-introductions-introduction/file_0_hu_e7219343827c6a2d.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="534" alt="Photo by Green Chameleon on Unsplash" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Automated delivery React / Vue app for each Pull Request.</title><link>https://jetthoughts.com/blog/automated-delivery-react-vue-app-for-each-pull-request-ci/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/automated-delivery-react-vue-app-for-each-pull-request-ci/</guid><description>&lt;p&gt;Would you like to speed up the development process of your React / Vue application? Make it more predictable and transparent for clients and teammates? Well, continue reading. In this article, I want to describe a set of tools that will make your life easier.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/automated-delivery-react-vue-app-for-each-pull-request-ci/file_0_hu_23425b2e53ffe913.webp" srcset="https://jetthoughts.com/blog/automated-delivery-react-vue-app-for-each-pull-request-ci/file_0_hu_23425b2e53ffe913.webp 800w, https://jetthoughts.com/blog/automated-delivery-react-vue-app-for-each-pull-request-ci/file_0_hu_1aad97678fce0a19.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="533" alt="Photo by jesse ramirez on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="online-snapshot-for-pull-request"&gt;Online “snapshot” for Pull Request &lt;a class="hlink" href="#online-snapshot-for-pull-request" aria-label="Link to Online “snapshot” for Pull Request"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Continuous Integration&lt;/strong&gt; (CI) is a practice when developers merge their changes to the main branch as often as possible. Every developer commits daily to a shared repository. Every commit creates a build and runs automated tests.&lt;/p&gt;</description></item><item><title>Benefits of working remotely</title><link>https://jetthoughts.com/blog/benefits-of-working-remotely-remote/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/benefits-of-working-remotely-remote/</guid><description>&lt;p&gt;&lt;em&gt;Nowadays, remote work gains more and more prominence. Many successful companies let their employees work from home and even prefer hiring people who don’t need an office and love working home. But why?&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;What benefits could you get from this type of work? Is it worth leaving your office?&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/benefits-of-working-remotely-remote/file_0_hu_53c828ec7c42fb9d.webp" srcset="https://jetthoughts.com/blog/benefits-of-working-remotely-remote/file_0_hu_53c828ec7c42fb9d.webp 800w, https://jetthoughts.com/blog/benefits-of-working-remotely-remote/file_0_hu_a3db94e3d74e345f.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="742" alt="Photo by Kornél Máhl on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="1-flexible-schedule"&gt;1. Flexible schedule &lt;a class="hlink" href="#1-flexible-schedule" aria-label="Link to 1. Flexible schedule"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The flexible schedule allows employees to work when they accomplish most and enjoy working. If you are an early bird feel free to work with sunrise, but if you are a night owl, don’t push yourself to work in the morning, much better for you to do that in the evening.&lt;/p&gt;</description></item><item><title>Cleaning routines to keep your project without bugs</title><link>https://jetthoughts.com/blog/cleaning-routines-keep-your-project-without-bugs-agile/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/cleaning-routines-keep-your-project-without-bugs-agile/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/cleaning-routines-keep-your-project-without-bugs-agile/file_0_hu_f77e950def4e5731.webp" srcset="https://jetthoughts.com/blog/cleaning-routines-keep-your-project-without-bugs-agile/file_0_hu_f77e950def4e5731.webp 800w, https://jetthoughts.com/blog/cleaning-routines-keep-your-project-without-bugs-agile/file_0_hu_72dcff5da5aac9a6.webp 1366w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="500" alt="Photo by Oliver Hale on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;How to manage problems with your project? How to understand how buggy it is and address the issues properly? In &lt;a href="https://jetthoughts.com/"&gt;JetThoughts&lt;/a&gt;, we build our own process of handling those problems, and here is how…&lt;/p&gt;&#10;&lt;h3 id="know-your-enemy"&gt;&lt;strong&gt;Know your enemy&lt;/strong&gt; &lt;a class="hlink" href="#know-your-enemy" aria-label="Link to Know your enemy"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;In order to understand what issues might be crucial and threaten project stability, it’s not enough to just rely on users’ feedback. It’s important to have a monitoring system that would inform your team on possible issues in advance before the client encounters the bug, glitch, or slow performance of the app. For our project, we use several tools for such purposes&lt;/p&gt;</description></item><item><title>Collecting JavaScript code coverage with Capybara in Ruby on Rails application</title><link>https://jetthoughts.com/blog/collecting-javascript-code-coverage-with-capybara-in-ruby-on-rails-application-testing/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/collecting-javascript-code-coverage-with-capybara-in-ruby-on-rails-application-testing/</guid><description>&lt;h3 id="having-javascript-code-covered-by-capybara-system-tests-can-we-utilize-them-for-the-code-coverage-collecting-and-get-the-aggregated-result-with-the-coverage-from-the-unit-tests"&gt;Having JavaScript code covered by Capybara system tests, can we utilize them for the code coverage collecting and get the aggregated result with the coverage from the unit tests? &lt;a class="hlink" href="#having-javascript-code-covered-by-capybara-system-tests-can-we-utilize-them-for-the-code-coverage-collecting-and-get-the-aggregated-result-with-the-coverage-from-the-unit-tests" aria-label="Link to Having JavaScript code covered by Capybara system tests, can we utilize them for the code coverage collecting and get the aggregated result with the coverage from the unit tests?"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/collecting-javascript-code-coverage-with-capybara-in-ruby-on-rails-application-testing/file_0_hu_b639768d4825805.webp" srcset="https://jetthoughts.com/blog/collecting-javascript-code-coverage-with-capybara-in-ruby-on-rails-application-testing/file_0_hu_b639768d4825805.webp 659w, https://jetthoughts.com/blog/collecting-javascript-code-coverage-with-capybara-in-ruby-on-rails-application-testing/file_0_hu_b639768d4825805.webp 659w" sizes="(max-width: 760px) 100vw, 556px" width="659" height="477" alt="Codecov report showing coverage rising from 91.36 to 91.38 percent" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Delivery Flow for Distributed Remote Teams</title><link>https://jetthoughts.com/blog/delivery-flow-for-distributed-remote-teams-agile-kanban/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/delivery-flow-for-distributed-remote-teams-agile-kanban/</guid><description>&lt;blockquote&gt;&#10;&lt;p&gt;Process which help the team make effective decisions to better live up to expectations while prioritizing, visualizing progress, and preventing bottlenecks.&lt;/p&gt;&#10;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/delivery-flow-for-distributed-remote-teams-agile-kanban/file_0_hu_9e921189a57582c1.webp" srcset="https://jetthoughts.com/blog/delivery-flow-for-distributed-remote-teams-agile-kanban/file_0_hu_9e921189a57582c1.webp 800w, https://jetthoughts.com/blog/delivery-flow-for-distributed-remote-teams-agile-kanban/file_0_hu_4b4ba009f9bbc564.webp 1234w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="160" alt="Kanban board with Backlog, Ready, In Progress, Code Review, Verify and Done lists of issue cards" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="kanban-delivering-lists"&gt;Kanban Delivering Lists &lt;a class="hlink" href="#kanban-delivering-lists" aria-label="Link to Kanban Delivering Lists"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;We use several lists: &lt;em&gt;Backlog, Ready, In Progress, Code Review, Verify, Done&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;On the Board, issues are listed as Kanban Cards. Each list represents &lt;em&gt;status/progress&lt;/em&gt; in the Development Pipeline.&lt;/p&gt;</description></item><item><title>Deploying subdirectory projects to Heroku</title><link>https://jetthoughts.com/blog/deploying-subdirectory-projects-heroku-git/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/deploying-subdirectory-projects-heroku-git/</guid><description>&lt;p&gt;When you want to deploy to Heroku a project located in a Git subdirectory, simply running git push heroku master will likely fail, because Heroku buildpacks won’t be able to detect your project files location. There are two simple solutions which will help you make it work.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/deploying-subdirectory-projects-heroku-git/file_0_hu_1f0e451f2a2d88ad.webp" srcset="https://jetthoughts.com/blog/deploying-subdirectory-projects-heroku-git/file_0_hu_1f0e451f2a2d88ad.webp 800w, https://jetthoughts.com/blog/deploying-subdirectory-projects-heroku-git/file_0_hu_17e0ba9cb92f31b6.webp 939w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="204" alt="Heroku build log showing the subdir buildpack detected, then a Node.js app detected" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Project source code can reside in a subdirectory due to various reasons:&lt;/p&gt;</description></item><item><title>Design Rails JSON API with performance in mind</title><link>https://jetthoughts.com/blog/design-rails-json-api-with-performance-in-mind-cache/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/design-rails-json-api-with-performance-in-mind-cache/</guid><description>&lt;blockquote&gt;&#10;&lt;h3 id="caching-can-reduce-load-time-and-increase-the-throughput-of-your-api-endpoints-without-in-depth-optimization-but-there-are-certain-design-principles-you-should-follow-to-make-your-endpoints-cacheable-and-gain-all-benefits-caching-can-provide-for-your-app"&gt;Caching can reduce load time and increase the throughput of your API endpoints without in-depth optimization. But there are certain design principles you should follow to make your endpoints cacheable and gain all benefits caching can provide for your app &lt;a class="hlink" href="#caching-can-reduce-load-time-and-increase-the-throughput-of-your-api-endpoints-without-in-depth-optimization-but-there-are-certain-design-principles-you-should-follow-to-make-your-endpoints-cacheable-and-gain-all-benefits-caching-can-provide-for-your-app" aria-label="Link to Caching can reduce load time and increase the throughput of your API endpoints without in-depth optimization. But there are certain design principles you should follow to make your endpoints cacheable and gain all benefits caching can provide for your app"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/design-rails-json-api-with-performance-in-mind-cache/file_0_hu_9194bbd6def3af5f.webp" srcset="https://jetthoughts.com/blog/design-rails-json-api-with-performance-in-mind-cache/file_0_hu_9194bbd6def3af5f.webp 687w, https://jetthoughts.com/blog/design-rails-json-api-with-performance-in-mind-cache/file_0_hu_9194bbd6def3af5f.webp 687w" sizes="(max-width: 760px) 100vw, 556px" width="687" height="329" alt="Terminal benchmark output showing 1000 complete requests in 32.089 seconds and connection times" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Enum validation in Ruby on Rails 7.1</title><link>https://jetthoughts.com/blog/enum-validation-in-ruby-on-rails-71/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/enum-validation-in-ruby-on-rails-71/</guid><description>&lt;p&gt;&lt;img src="https://cdn-images-1.medium.com/max/2852/1*JxBXDGJmdqyog3dCqDlDOw.png" alt="Ruby enum with validate true, where assigning an invalid status makes valid? return false" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;The latest version of Rails 7.1 introduces the ability to validate enums, enhancing data integrity and error handling in Rails models. Enums in Rails allow defining a set of permissible values for an attribute. Prior to Rails 7.1, assigning an invalid enum value would raise an ArgumentError, necessitating manual validation checks. The updated feature in Rails 7.1 streamlines this process by enabling built-in enum validation options within ActiveRecord objects.&lt;/p&gt;</description></item><item><title>How to avoid N+1 query using SQL views (materialized) in Rails application</title><link>https://jetthoughts.com/blog/how-avoid-n1-query-using-sql-views-materialized-in-rails-application-ruby/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-avoid-n1-query-using-sql-views-materialized-in-rails-application-ruby/</guid><description>&lt;blockquote&gt;&#10;&lt;h3 id="consider-the-way-to-reduce-the-queries-when-calculating-the-average-values-and-find-the-place-where-to-do-it-in-the-ruby-on-rails-application"&gt;Consider the way to reduce the queries when calculating the average values and find the place where to do it in the Ruby on Rails application &lt;a class="hlink" href="#consider-the-way-to-reduce-the-queries-when-calculating-the-average-values-and-find-the-place-where-to-do-it-in-the-ruby-on-rails-application" aria-label="Link to Consider the way to reduce the queries when calculating the average values and find the place where to do it in the Ruby on Rails application"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-avoid-n1-query-using-sql-views-materialized-in-rails-application-ruby/file_0_hu_d84ae876a01dd54d.webp" srcset="https://jetthoughts.com/blog/how-avoid-n1-query-using-sql-views-materialized-in-rails-application-ruby/file_0_hu_d84ae876a01dd54d.webp 800w, https://jetthoughts.com/blog/how-avoid-n1-query-using-sql-views-materialized-in-rails-application-ruby/file_0_hu_bb324c0800b9adef.webp 938w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="342" alt="Terminal table of films with average rate, film id, title and genre columns" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>How to create a technical post in a short time</title><link>https://jetthoughts.com/blog/how-create-technical-post-in-short-time-writing-blogging/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-create-technical-post-in-short-time-writing-blogging/</guid><description>&lt;p&gt;&lt;em&gt;After reading thousands of posts, it’s time to share a workflow that will help those who are creating amazing things to blog more easily and often.&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;Here, in &lt;a href="https://www.jetthoughts.com/"&gt;JetThoughts&lt;/a&gt; we highlight 3 main principles that helped us overcome a barrier of writing fast, and can definitely help you with it.&lt;/p&gt;&#10;&lt;p&gt;Let’s start!&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-create-technical-post-in-short-time-writing-blogging/file_0_hu_4df15b99c06905a.webp" srcset="https://jetthoughts.com/blog/how-create-technical-post-in-short-time-writing-blogging/file_0_hu_4df15b99c06905a.webp 800w, https://jetthoughts.com/blog/how-create-technical-post-in-short-time-writing-blogging/file_0_hu_ded1ab523172e459.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="534" alt="Photo by Luke Chesser on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="practical"&gt;Practical &lt;a class="hlink" href="#practical" aria-label="Link to Practical"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;When people query keywords within Google, what they typically need is an answer/solution, and the search engines do deliver well at this. So also it is when folks are reading your content — they simply want an answer.&lt;/p&gt;</description></item><item><title>How to start an Open Source project. Building RESO API JS client</title><link>https://jetthoughts.com/blog/how-start-an-open-source-project-building-reso-api-js-client-javascript-opensource/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-start-an-open-source-project-building-reso-api-js-client-javascript-opensource/</guid><description>&lt;p&gt;Would you like to understand how to start your new Open Source project in a week? How to build a rapid development process and bootstrap your ideas faster?&lt;/p&gt;&#10;&lt;p&gt;In this post, you will understand the &lt;a href="https://www.jetthoughts.com/"&gt;JetThoughts&lt;/a&gt; way of prototyping and testing of new ideas.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-start-an-open-source-project-building-reso-api-js-client-javascript-opensource/file_0_hu_4ee588587041cb31.webp" srcset="https://jetthoughts.com/blog/how-start-an-open-source-project-building-reso-api-js-client-javascript-opensource/file_0_hu_4ee588587041cb31.webp 800w, https://jetthoughts.com/blog/how-start-an-open-source-project-building-reso-api-js-client-javascript-opensource/file_0_hu_198d97a5146700f5.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="601" alt="Photo by Aaron Burden on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="kickoff"&gt;Kickoff &lt;a class="hlink" href="#kickoff" aria-label="Link to Kickoff"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Before starting the project, you need to discuss all the possible details with colleagues. You need to set a goal, form a plan, split the work, and prepare the project delivery. After the discussion, you’d understand what you want to get in a week.&lt;/p&gt;</description></item><item><title>JetThoughts is recognized by Techreviewer as a Top Web Development Company in 2020</title><link>https://jetthoughts.com/blog/jetthoughts-recognized-by-techreviewer-as-top-web-development-company-in-2020-webdev/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/jetthoughts-recognized-by-techreviewer-as-top-web-development-company-in-2020-webdev/</guid><description>&lt;p&gt;JetThoughts is a web software development company that has proven its value by providing high-quality solutions and providing flexibility and support to customers.&lt;/p&gt;&#10;&lt;p&gt;Extensive experience and deep technical expertise in providing full-cycle web development services have placed the company on the list of leading software development companies, according to well-known online catalogs and research institutions.&lt;/p&gt;&#10;&lt;p&gt;Now there is another achievement: the trusted analysis company Techreviewer named JetThoughts one of the leading &lt;a href="https://techreviewer.co/top-web-development-companies"&gt;Web Development Companies&lt;/a&gt; in 2020.&lt;/p&gt;</description></item><item><title>Prepare the Pull Request before asking to Review</title><link>https://jetthoughts.com/blog/prepare-pull-request-before-asking-review-git-pullrequest/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/prepare-pull-request-before-asking-review-git-pullrequest/</guid><description>&lt;p&gt;How to avoid being the victim of an open loop trying to get your Pull Request verified while working asynchronously? In &lt;a href="https://www.jetthoughts.com/"&gt;JetThoughts&lt;/a&gt;, we set some rules. They help optimize the process of verifying Pull Requests for the remote team.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/prepare-pull-request-before-asking-review-git-pullrequest/file_0_hu_eaffa643fd0c9e7.webp" srcset="https://jetthoughts.com/blog/prepare-pull-request-before-asking-review-git-pullrequest/file_0_hu_eaffa643fd0c9e7.webp 692w, https://jetthoughts.com/blog/prepare-pull-request-before-asking-review-git-pullrequest/file_0_hu_eaffa643fd0c9e7.webp 692w" sizes="(max-width: 760px) 100vw, 556px" width="692" height="309" alt="github activity history per pull request" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="the-author-is-the-first-reviewer-for-his-code"&gt;The author is the first reviewer for his code &lt;a class="hlink" href="#the-author-is-the-first-reviewer-for-his-code" aria-label="Link to The author is the first reviewer for his code"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Then imagine that you are a reviewer and you see someone else’s Pull Request. Try to look at the code as critically as possible.&lt;/p&gt;</description></item><item><title>Regular automatic dependencies update with CircleCI</title><link>https://jetthoughts.com/blog/regular-automatic-dependencies-update-with-circleci-github-circle/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/regular-automatic-dependencies-update-with-circleci-github-circle/</guid><description>&lt;blockquote&gt;&#10;&lt;h3 id="resolving-the-auto-upgrade-issue-will-allow-having-edge-gems-versions-with-little-to-no-effort-how-could-you-achieve-this-with-ci-specifically-circleci"&gt;Resolving the auto-upgrade issue will allow having edge gems versions with little to no effort. How could you achieve this with CI (specifically CircleCI)? &lt;a class="hlink" href="#resolving-the-auto-upgrade-issue-will-allow-having-edge-gems-versions-with-little-to-no-effort-how-could-you-achieve-this-with-ci-specifically-circleci" aria-label="Link to Resolving the auto-upgrade issue will allow having edge gems versions with little to no effort. How could you achieve this with CI (specifically CircleCI)?"&gt;#&lt;/a&gt;&lt;/h3&gt;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/regular-automatic-dependencies-update-with-circleci-github-circle/file_0_hu_d342a85ad99e3dca.webp" srcset="https://jetthoughts.com/blog/regular-automatic-dependencies-update-with-circleci-github-circle/file_0_hu_d342a85ad99e3dca.webp 800w, https://jetthoughts.com/blog/regular-automatic-dependencies-update-with-circleci-github-circle/file_0_hu_72f7a9b008634e23.webp 1010w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="530" alt="GitHub pull request diff updating the rugged gem version in Gemfile.tools.lock" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="automatic-update-idea"&gt;Automatic update idea &lt;a class="hlink" href="#automatic-update-idea" aria-label="Link to Automatic update idea"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;CircleCI provides scheduling jobs and workflows. So you need to configure it to run updating script, which also needs to be prepared. That’s all!&lt;/p&gt;</description></item><item><title>RSCSS. Styling CSS without losing your sanity</title><link>https://jetthoughts.com/blog/rscss-styling-css-without-losing-your-sanity/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/rscss-styling-css-without-losing-your-sanity/</guid><description>&lt;p&gt;Thinking of a beautiful and grammatically correct CSS code over and over again but still wiped out with the methodology? Decided to use RSCSS but don’t know how to start?&lt;/p&gt;&#10;&lt;p&gt;Then this article is just for you. We will not go through the theory but move on to practice right away.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/rscss-styling-css-without-losing-your-sanity/file_0_hu_a810d55ee8765a9.webp" srcset="https://jetthoughts.com/blog/rscss-styling-css-without-losing-your-sanity/file_0_hu_a810d55ee8765a9.webp 800w, https://jetthoughts.com/blog/rscss-styling-css-without-losing-your-sanity/file_0_hu_8fae30d5842a2e4e.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="530" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="what-we-will-use"&gt;What we will use? &lt;a class="hlink" href="#what-we-will-use" aria-label="Link to What we will use?"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="components"&gt;&lt;strong&gt;Components&lt;/strong&gt; &lt;a class="hlink" href="#components" aria-label="Link to Components"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;In RSCSS you should think of UI like small parts, breaking it into several smaller pieces, which are the components. These components must have a class of two or more words separated by a dash -. For example ‘my-component’.&lt;/p&gt;</description></item><item><title>Simple Lead Generation Tactics</title><link>https://jetthoughts.com/blog/simple-lead-generation-tactics-startup-sails/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/simple-lead-generation-tactics-startup-sails/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/simple-lead-generation-tactics-startup-sails/file_0_hu_b2910502a26c03fa.webp" srcset="https://jetthoughts.com/blog/simple-lead-generation-tactics-startup-sails/file_0_hu_b2910502a26c03fa.webp 800w, https://jetthoughts.com/blog/simple-lead-generation-tactics-startup-sails/file_0_hu_b2910502a26c03fa.webp 800w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="600" alt="Photo by Denys Nevozhai on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;How to build the Lead Generation workflow? Which tools should be used?&lt;/p&gt;&#10;&lt;p&gt;In &lt;a href="https://www.jetthoughts.com"&gt;JetThoughts&lt;/a&gt;, we build our own process, which could be easily maintained by one person and scalable at the same time, allowing to attract more and more leads.&lt;/p&gt;&#10;&lt;p&gt;In our &lt;a href="https://jetthoughts.com/blog/5-free-tools-make-sales-process-easier-leadgeneration/"&gt;previous article&lt;/a&gt;, we talked about the tools which help to generate leads, and this is a second part where we will touch on the process we built around these tools to get the lead generation automated and easily trackable. We are using different channels like &lt;a href="https://www.linkedin.com/"&gt;LinkedIn&lt;/a&gt;, &lt;a href="http://angel.co/"&gt;Angel.co&lt;/a&gt;, &lt;a href="https://www.behance.net/"&gt;Behance&lt;/a&gt;, &lt;a href="https://dribbble.com/"&gt;Dribble&lt;/a&gt; etc. to take the leads data.&lt;/p&gt;</description></item><item><title>The Trial Period for Staff Augmentation in JetThoughts</title><link>https://jetthoughts.com/blog/trial-period-for-staff-augmentation-in-jetthoughts-startup-engagement/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/trial-period-for-staff-augmentation-in-jetthoughts-startup-engagement/</guid><description>&lt;p&gt;&lt;em&gt;We offer a 2-week trial with no obligation. So you can test everything and see how it goes with no financial risks at all. Let’s see how it works…&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/trial-period-for-staff-augmentation-in-jetthoughts-startup-engagement/file_0_hu_952b52a049667fe8.webp" srcset="https://jetthoughts.com/blog/trial-period-for-staff-augmentation-in-jetthoughts-startup-engagement/file_0_hu_952b52a049667fe8.webp 800w, https://jetthoughts.com/blog/trial-period-for-staff-augmentation-in-jetthoughts-startup-engagement/file_0_hu_43c8787cc67a499b.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="457" alt="Photo by Austin Kehmeier on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="what-is-the-trial-period"&gt;What is the trial period? &lt;a class="hlink" href="#what-is-the-trial-period" aria-label="Link to What is the trial period?"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The Trial period is primarily designed to test out whether new employees are a good fit for the business and allow both employer and employee to start an employment relationship.&lt;/p&gt;</description></item><item><title>The Ultimate Guide to the Sales Onboarding in IT Companies</title><link>https://jetthoughts.com/blog/ultimate-guide-sales-onboarding-in-it-companies-sails-leadgeneration/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ultimate-guide-sales-onboarding-in-it-companies-sails-leadgeneration/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/ultimate-guide-sales-onboarding-in-it-companies-sails-leadgeneration/file_0_hu_602ffe10ffd5623.webp" srcset="https://jetthoughts.com/blog/ultimate-guide-sales-onboarding-in-it-companies-sails-leadgeneration/file_0_hu_602ffe10ffd5623.webp 800w, https://jetthoughts.com/blog/ultimate-guide-sales-onboarding-in-it-companies-sails-leadgeneration/file_0_hu_7ef518c23edc3c41.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Illustration by Freepik Storyset" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;Are you new at hiring Sales Reps for your IT company? Most probably you are struggling with what to tell them first and how to create the onboarding process that will last ages. I know how you feel. Here’s what I learned through the past 12 years of working in Sales:&lt;/em&gt;&lt;/p&gt;&#10;&lt;h2 id="mind-the-time"&gt;&lt;strong&gt;Mind the time&lt;/strong&gt; &lt;a class="hlink" href="#mind-the-time" aria-label="Link to Mind the time"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Onboarding doesn’t happen overnight. Even if a new employee is experienced they still need some time.&lt;/p&gt;</description></item><item><title>Tips to attract readers to read your post</title><link>https://jetthoughts.com/blog/tips-attract-readers-read-your-post-blogging/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/tips-attract-readers-read-your-post-blogging/</guid><description>&lt;p&gt;Do you know how to keep readers’ attention? We had been experimenting with different ways to make articles more attractive until we found and checked the best steps to do it. Let’s read!&lt;/p&gt;&#10;&lt;p&gt;So, your content should be Scannable! In other words, short and understandable from the very beginning till the end. Sentences and paragraphs are brief. Bold text and bullet points highlight key points.&lt;/p&gt;&#10;&lt;p&gt;It’s specifically used to streamline the way readers absorb information to keep them interested. Most people read online by scanning the page for individual words, phrases, or headings.&lt;/p&gt;</description></item><item><title>We got 3 main principles for writing Technical Blog posts. Here's what we learned.</title><link>https://jetthoughts.com/blog/we-got-3-main-principles-for-writing-technical-blog-posts-heres-what-learned/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/we-got-3-main-principles-for-writing-technical-blog-posts-heres-what-learned/</guid><description>&lt;p&gt;After 100 articles of the research on how to write Technical Blog post simple and quickly, without any stress, we can distinguish 3 main principles which helped us overcome this barrier and can definitely help you with writing. Learn with us how to improve your post’s readability!&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/we-got-3-main-principles-for-writing-technical-blog-posts-heres-what-learned/file_0_hu_ff2f2f11a8fba4f9.webp" srcset="https://jetthoughts.com/blog/we-got-3-main-principles-for-writing-technical-blog-posts-heres-what-learned/file_0_hu_ff2f2f11a8fba4f9.webp 800w, https://jetthoughts.com/blog/we-got-3-main-principles-for-writing-technical-blog-posts-heres-what-learned/file_0_hu_bbbc80e188c981bd.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="532" alt="Photo by Glenn Carstens-Peters on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="start-from-angle"&gt;Start from Angle &lt;a class="hlink" href="#start-from-angle" aria-label="Link to Start from Angle"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;What is Angle? It’s the laser-focused main point of your content. Everything you write starts with your angle. An easy way to visualize it to write a one or two-paragraph summary of what your content will be about.&lt;/p&gt;</description></item><item><title>What activities are expected from a remote developer for effective collaboration</title><link>https://jetthoughts.com/blog/what-activities-are-expected-from-remote-developer-for-effective-collaboration-development-process/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/what-activities-are-expected-from-remote-developer-for-effective-collaboration-development-process/</guid><description>&lt;h3 id="in-order-to-build-trust-relationships-with-remote-non-technical-founders-we-designed-the-easiest-and-effective-routine-for-remote-developers-to-provide"&gt;In order to build trust relationships with remote non-technical founders, we designed the easiest and effective routine for remote developers to provide &lt;a class="hlink" href="#in-order-to-build-trust-relationships-with-remote-non-technical-founders-we-designed-the-easiest-and-effective-routine-for-remote-developers-to-provide" aria-label="Link to In order to build trust relationships with remote non-technical founders, we designed the easiest and effective routine for remote developers to provide"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/what-activities-are-expected-from-remote-developer-for-effective-collaboration-development-process/file_0_hu_d861c40f26312e26.webp" srcset="https://jetthoughts.com/blog/what-activities-are-expected-from-remote-developer-for-effective-collaboration-development-process/file_0_hu_d861c40f26312e26.webp 800w, https://jetthoughts.com/blog/what-activities-are-expected-from-remote-developer-for-effective-collaboration-development-process/file_0_hu_f7f52273421293e7.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="533" alt="Photo by Roman Synkevych on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;In &lt;a href="https://www.jetthoughts.com/"&gt;JetThoughts&lt;/a&gt;, the usual working environment contains the GitHub repository with the Kanban board and some rules described in the article &lt;a href="https://jetthoughts.com/blog/delivery-flow-for-distributed-remote-teams-agile-kanban/"&gt;“Delivery Flow for Distributed Remote Teams”&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>What are the most common misconceptions about remote work?</title><link>https://jetthoughts.com/blog/what-are-most-common-misconceptions-about-remote-work-misconception/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/what-are-most-common-misconceptions-about-remote-work-misconception/</guid><description>&lt;p&gt;&lt;em&gt;A lot of people don’t know the truth about what it’s like to work from home. It seems to me that the first thing that comes to mind when you think of remote work is freelancing. Absolutely no, companies are aware of the many advantages connected with moving away from offices, so that’s why it’s so popular nowadays. It has also been shown that more and more remote job openings for full-time and part-time as well as are being opened.&lt;/em&gt;&lt;/p&gt;</description></item><item><title>What are the steps of an Automation Test Plan?</title><link>https://jetthoughts.com/blog/what-are-steps-of-an-automation-test-plan-qualitycontrol-testing/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/what-are-steps-of-an-automation-test-plan-qualitycontrol-testing/</guid><description>&lt;h2 id="step-1-defining-the-scope-of-automation"&gt;Step 1: Defining the Scope of Automation &lt;a class="hlink" href="#step-1-defining-the-scope-of-automation" aria-label="Link to Step 1: Defining the Scope of Automation"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Here are the things to consider while identifying the scope of Testing Automation:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;What are the modules that can be automated?&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;What are the total effective costs and the team size?&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;li&gt;&#10;&lt;p&gt;What tests should be automated, and which approach should be taken?&lt;/p&gt;&#10;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="step-2-appropriate-tool-selection"&gt;Step 2: Appropriate tool selection &lt;a class="hlink" href="#step-2-appropriate-tool-selection" aria-label="Link to Step 2: Appropriate tool selection"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;It solely depends on the technology on which the application tests are built. Each tool or framework may serve different demands; therefore, a thorough understanding of multiple tool types is also a prominent factor in choosing your best tool.&lt;/p&gt;</description></item><item><title>What to do for the developer when the WIP limit is reached</title><link>https://jetthoughts.com/blog/what-do-for-developer-when-wip-limit-reached-agile-kanban/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/what-do-for-developer-when-wip-limit-reached-agile-kanban/</guid><description>&lt;p&gt;Did you reach WIP limits and don’t know what to do? And you don’t want to procrastinate, do you? Keep reading this article in order to find out the perfect solution when you or your teammates-developers reach WIP limits.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/what-do-for-developer-when-wip-limit-reached-agile-kanban/file_0_hu_9ba161a2f1626b05.webp" srcset="https://jetthoughts.com/blog/what-do-for-developer-when-wip-limit-reached-agile-kanban/file_0_hu_9ba161a2f1626b05.webp 800w, https://jetthoughts.com/blog/what-do-for-developer-when-wip-limit-reached-agile-kanban/file_0_hu_99200a872f37a955.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="533" alt="Photo by Clark Tibbs on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="what-is-wip-and-what-are-the-wip-limitations"&gt;What is WIP and what are the WIP limitations? &lt;a class="hlink" href="#what-is-wip-and-what-are-the-wip-limitations" aria-label="Link to What is WIP and what are the WIP limitations?"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href="https://en.wikipedia.org/wiki/Work_in_process"&gt;WIP&lt;/a&gt; is an abbreviation of &lt;em&gt;work in progress,&lt;/em&gt; which means activities have started but are not yet completed (e.g., task waiting for review). WIP determines how many tasks can simultaneously be at a particular stage.&lt;/p&gt;</description></item><item><title>Where to read ENV variables in Ruby on Rails application</title><link>https://jetthoughts.com/blog/where-read-env-variables-in-ruby-on-rails-application/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/where-read-env-variables-in-ruby-on-rails-application/</guid><description>&lt;h3 id="the-env-variables-should-not-be-used-outside-the-config-folder-this-rule-will-allow-the-developer-to-quickly-find-errors-and-places-where-they-occurred-and-not-keep-in-his-head-a-bunch-of-dependency-components"&gt;The ENV variables should not be used outside the &lt;em&gt;config&lt;/em&gt; folder. This rule will allow the developer to quickly find errors and places where they occurred and not keep in his head a bunch of dependency components &lt;a class="hlink" href="#the-env-variables-should-not-be-used-outside-the-config-folder-this-rule-will-allow-the-developer-to-quickly-find-errors-and-places-where-they-occurred-and-not-keep-in-his-head-a-bunch-of-dependency-components" aria-label="Link to The ENV variables should not be used outside the config folder. This rule will allow the developer to quickly find errors and places where they occurred and not keep in his head a bunch of dependency components"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;What if the project has too many dependencies from the environment variables? This may lead to the formation of implicit dependencies, confuse the developer’s expectations.&lt;/p&gt;</description></item><item><title>Which platforms are better to use for non-tech founders to look for contractors?</title><link>https://jetthoughts.com/blog/which-platforms-are-better-use-for-non-tech-founders-look-contractors-freelance-development/</link><pubDate>Tue, 14 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/which-platforms-are-better-use-for-non-tech-founders-look-contractors-freelance-development/</guid><description>&lt;p&gt;&lt;em&gt;Are you looking for developers? In need of delivering your product ASAP? Don’t know where you can find an experienced freelancer or a team?&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;If these questions sound familiar to you, be sure — you are on the right page.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/which-platforms-are-better-use-for-non-tech-founders-look-contractors-freelance-development/file_0_hu_28064403f28925ee.webp" srcset="https://jetthoughts.com/blog/which-platforms-are-better-use-for-non-tech-founders-look-contractors-freelance-development/file_0_hu_28064403f28925ee.webp 800w, https://jetthoughts.com/blog/which-platforms-are-better-use-for-non-tech-founders-look-contractors-freelance-development/file_0_hu_9e3c976f6bf6eee0.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="534" alt="Photo by Sergey Zolkin on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Nowadays, finding the perfect place for hiring developers is really confusing. You asking why?&lt;/p&gt;&#10;&lt;p&gt;It seems that it should be easy, but lots of freelancers and agencies try to catch your eye on them. You are supposed to read lots of CVs, interviewing numerous developers and checking their test tasks.&lt;/p&gt;</description></item><item><title>New asserts for testing stopped streams after Ruby on Rails 7.1.</title><link>https://jetthoughts.com/blog/new-asserts-for-testing-stopped-streams-after-ruby-on-rails-71-changelog/</link><pubDate>Mon, 13 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/new-asserts-for-testing-stopped-streams-after-ruby-on-rails-71-changelog/</guid><description>&lt;p&gt;Previously, developers encountered a significant challenge verifying if streams ceased operation correctly. This issue often led to the creation of intricate workarounds or the omission of proper testing.&lt;/p&gt;&#10;&lt;h2 id="the-old-way"&gt;The Old Way &lt;a class="hlink" href="#the-old-way" aria-label="Link to The Old Way"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Here&amp;rsquo;s an e­xample:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;assert_not &lt;span style="color:#79c0ff;font-weight:bold"&gt;ActionCable&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;server&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;pubsub&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;redis_connection_for_subscriptions&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;subscribed_to?(&lt;span style="color:#a5d6ff"&gt;&amp;#34;messages&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This code­ works but isn&amp;rsquo;t straightforward to update.&lt;/p&gt;&#10;&lt;h2 id="the-new-solution"&gt;The New Solution &lt;a class="hlink" href="#the-new-solution" aria-label="Link to The New Solution"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The following Ruby on Rails introduces &lt;code&gt;assert_has_no_stream&lt;/code&gt; and &lt;code&gt;assert_has_no_stream_for&lt;/code&gt;. These new methods simplify the testing of stopped streams.&lt;/p&gt;</description></item><item><title>Migration from Medium to Hugo + dev.to API</title><link>https://jetthoughts.com/blog/migration-from-medium-devto-hugo-blog-webdev/</link><pubDate>Wed, 08 May 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/migration-from-medium-devto-hugo-blog-webdev/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/migration-from-medium-devto-hugo-blog-webdev/file_0_hu_d1388fa6cfad3e6e.webp" srcset="https://jetthoughts.com/blog/migration-from-medium-devto-hugo-blog-webdev/file_0_hu_d1388fa6cfad3e6e.webp 800w, https://jetthoughts.com/blog/migration-from-medium-devto-hugo-blog-webdev/file_0_hu_44c9b42c5baac03b.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="488" alt="Photo by Stephen Phillips - Hostreviews.co.uk on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;For a long time, we&amp;rsquo;ve been running a corporate blog on Medium, but recently, we&amp;rsquo;ve run into some problems:&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Problems with Google Indexes.&lt;/strong&gt;&#10;Google started flagging issues with the structure of our articles, causing them to fall out of the search index and negatively impacting our visibility in search results.&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;They should have integrated Google Analytics.&lt;/strong&gt;&#10;We encountered the issue of Google Analytics disappearing for our blog on Medium, hindering our ability to track and analyze visitor data.&lt;/p&gt;</description></item><item><title>Setting Up Docker for Ruby on Rails 7</title><link>https://jetthoughts.com/blog/setting-up-docker-for-ruby-on-rails-7-beginners/</link><pubDate>Thu, 07 Mar 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/setting-up-docker-for-ruby-on-rails-7-beginners/</guid><description>&lt;h2 id="introduction"&gt;Introduction &lt;a class="hlink" href="#introduction" aria-label="Link to Introduction"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Docker is essential for modern software development, ensuring a consistent environment and simplifying setup. This article guides you through configuring Docker for Ruby on Rails 7, enhancing workflow efficiency and collaboration.&#10; &lt;/p&gt;&#10;&lt;h2 id="prerequisites"&gt;Prerequisites &lt;a class="hlink" href="#prerequisites" aria-label="Link to Prerequisites"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Before diving into Dockerizing your Ruby on Rails 7 application, ensure you have Docker installed on your system. Below are instructions for installing Docker:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="https://docs.docker.com/desktop/install/mac-install/"&gt;for Mac&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://docs.docker.com/desktop/install/windows-install/"&gt;for Windows&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="https://docs.docker.com/desktop/install/linux-install/"&gt;for Linux&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;p&gt;For example to install Docker on Ubuntu, run the following commands in the terminal:&lt;/p&gt;</description></item><item><title>More control over enum in Rails 7.1</title><link>https://jetthoughts.com/blog/more-control-over-enum-in-rails-71-webdev/</link><pubDate>Wed, 28 Feb 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/more-control-over-enum-in-rails-71-webdev/</guid><description>&lt;p&gt;&lt;code&gt;ActiveRecord::Enum&lt;/code&gt; in Rails have long been a convenient tool for representing a set of symbolic values within a model. However, using &lt;code&gt;enum&lt;/code&gt; can sometimes lead to unexpected behavior, especially when it comes to the automatic generation of instance methods.&#10;For instance, consider an &lt;code&gt;Order&lt;/code&gt; model with an &lt;code&gt;enum&lt;/code&gt; for status:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;class&lt;/span&gt; &lt;span style="color:#f0883e;font-weight:bold"&gt;Order&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#79c0ff;font-weight:bold"&gt;ApplicationRecord&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; enum &lt;span style="color:#a5d6ff"&gt;status&lt;/span&gt;: &lt;span style="color:#ff7b72;font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;:pending&lt;/span&gt;, &lt;span style="color:#a5d6ff"&gt;:processed&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Instance objects would have a convenient methods like &lt;code&gt;order.pending?&lt;/code&gt;, &lt;code&gt;order.processed?&lt;/code&gt;.&#10;One of common possible issues with generated instance methods might be naming conflicts. For example, if we need to add a new status &lt;code&gt;persisted&lt;/code&gt; for our &lt;code&gt;Order&lt;/code&gt; model.&lt;/p&gt;</description></item><item><title>Upgrading PostgreSQL on Heroku: A Step-by-Step Guide</title><link>https://jetthoughts.com/blog/upgrading-postgresql-on-heroku-step-by-guide-database/</link><pubDate>Wed, 14 Feb 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/upgrading-postgresql-on-heroku-step-by-guide-database/</guid><description>&lt;p&gt;Are you looking to upgrade your PostgreSQL database on Heroku? Whether it&amp;rsquo;s for performance improvements or staying up-to-date with the latest features, upgrading your database is a crucial task. In this guide, we&amp;rsquo;ll walk you through the process of upgrading PostgreSQL on Heroku with clear, step-by-step instructions.&lt;/p&gt;&#10;&lt;h2 id="1-create-a-dbfollower"&gt;1. Create a DB Follower &lt;a class="hlink" href="#1-create-a-dbfollower" aria-label="Link to 1. Create a DB Follower"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The first step in the PostgreSQL upgrade process is to create a database follower. This is essential for minimizing downtime during the upgrade.&lt;/p&gt;</description></item><item><title>Install Official Firefox .deb in Dockerfile</title><link>https://jetthoughts.com/blog/install-official-firefox-deb-in-dockerfile-docker-devops/</link><pubDate>Wed, 24 Jan 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/install-official-firefox-deb-in-dockerfile-docker-devops/</guid><description>&lt;p&gt;Mozilla announced its dedicated APT repo for Debian-based distros, including Ubuntu, containing new stable releases of Firefox as a DEB package with the release of Firefox 122 in January 2023.&lt;/p&gt;&#10;&lt;p&gt;Mozilla recommends this way because it ensures Firefox and all the required libraries are installed and configured optimally for your distribution.&lt;/p&gt;&#10;&lt;p&gt;To install from a Dockerfile, follow these steps:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-dockerfile" data-lang="dockerfile"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Install Firefox from Mozilla&lt;/span&gt;&lt;span style="color:#f85149"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;RUN&lt;/span&gt; --mount&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#79c0ff"&gt;type&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;cache,target&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;/var/cache/apt,sharing&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;locked &lt;span style="color:#79c0ff"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --mount&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#79c0ff"&gt;type&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;cache,target&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;/var/lib/apt,sharing&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;locked &lt;span style="color:#79c0ff"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; --mount&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#79c0ff"&gt;type&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;tmpfs,target&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;/var/log &lt;span style="color:#79c0ff"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8b949e;font-style:italic"&gt;# Create a directory to store APT repository keys, repository lists, and preferences if they don&amp;#39;t exist&lt;/span&gt;&lt;span style="color:#f85149"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; install -d -m &lt;span style="color:#a5d6ff"&gt;0755&lt;/span&gt; /etc/apt/keyrings /etc/apt/preferences.d /etc/apt/sources.list.d &amp;gt; /dev/null &lt;span style="color:#ff7b72;font-weight:bold"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#f85149"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f85149"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8b949e;font-style:italic"&gt;# Import the Mozilla APT repository signing key&lt;/span&gt;&lt;span style="color:#f85149"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; curl -fsSL https://packages.mozilla.org/apt/repo-signing-key.gpg | &lt;span style="color:#79c0ff"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; gpg --dearmor --no-tty -o /etc/apt/keyrings/packages.mozilla.org.gpg &amp;gt; /dev/null &lt;span style="color:#ff7b72;font-weight:bold"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#f85149"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f85149"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8b949e;font-style:italic"&gt;# Add the Mozilla APT repository to the APT sources list&lt;/span&gt;&lt;span style="color:#f85149"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#a5d6ff"&gt;&amp;#34;deb [arch=&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;$(&lt;/span&gt;dpkg --print-architecture&lt;span style="color:#ff7b72"&gt;)&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt; signed-by=/etc/apt/keyrings/packages.mozilla.org.gpg] https://packages.mozilla.org/apt mozilla main&amp;#34;&lt;/span&gt; | &lt;span style="color:#79c0ff"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; tee /etc/apt/sources.list.d/packages.mozilla.org.list &amp;gt; /dev/null &lt;span style="color:#ff7b72;font-weight:bold"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#f85149"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f85149"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8b949e;font-style:italic"&gt;# Configure APT to prioritize packages from the Mozilla repository&lt;/span&gt;&lt;span style="color:#f85149"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; echo &lt;span style="color:#a5d6ff"&gt;&amp;#34;Package: *\nPin: origin packages.mozilla.org\nPin-Priority: 1000\n\n&amp;#34;&lt;/span&gt; | tee /etc/apt/preferences.d/mozilla &amp;gt; /dev/null &lt;span style="color:#ff7b72;font-weight:bold"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#f85149"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#f85149"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8b949e;font-style:italic"&gt;# Update your package list and install the Firefox .deb package&lt;/span&gt;&lt;span style="color:#f85149"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; apt-get update -qq &amp;gt; /dev/null &lt;span style="color:#ff7b72;font-weight:bold"&gt;&amp;amp;&amp;amp;&lt;/span&gt; &lt;span style="color:#79c0ff"&gt;\&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#79c0ff"&gt;DEBIAN_FRONTEND&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;noninteractive apt-get install -qq firefox &amp;gt; /dev/null&lt;span style="color:#f85149"&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Anonymous block argument in Ruby</title><link>https://jetthoughts.com/blog/anonymous-block-argument-in-ruby-tutorial/</link><pubDate>Tue, 23 Jan 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/anonymous-block-argument-in-ruby-tutorial/</guid><description>&lt;p&gt;In the Ruby programming language, it is possible to use default block parameters instead of variables. This feature allows for more concise and expressive code.&lt;/p&gt;&#10;&lt;h2 id="before-ruby-27"&gt;Before Ruby 2.7 &lt;a class="hlink" href="#before-ruby-27" aria-label="Link to Before Ruby 2.7"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;We would need to write code like this:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;irb(main):&lt;span style="color:#a5d6ff"&gt;005&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a5d6ff"&gt;2&lt;/span&gt;, &lt;span style="color:#a5d6ff"&gt;3&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;].&lt;/span&gt;map { &lt;span style="color:#ff7b72;font-weight:bold"&gt;|&lt;/span&gt;el&lt;span style="color:#ff7b72;font-weight:bold"&gt;|&lt;/span&gt; el }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&amp;gt;&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a5d6ff"&gt;2&lt;/span&gt;, &lt;span style="color:#a5d6ff"&gt;3&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="from-ruby-27"&gt;From Ruby 2.7 &lt;a class="hlink" href="#from-ruby-27" aria-label="Link to From Ruby 2.7"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;However, in Ruby 2.7, numbered parameters were introduced, which allows us to write code like this:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;irb(main):&lt;span style="color:#a5d6ff"&gt;010&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;&amp;gt;&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;10&lt;/span&gt;, &lt;span style="color:#a5d6ff"&gt;100&lt;/span&gt;, &lt;span style="color:#a5d6ff"&gt;1000&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;].&lt;/span&gt;each_with_index { p &lt;span style="color:#a5d6ff"&gt;&amp;#34;&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;#{&lt;/span&gt;_1&lt;span style="color:#a5d6ff"&gt;}&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;, &lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;#{&lt;/span&gt;_2&lt;span style="color:#a5d6ff"&gt;}&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;&lt;/span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;10, 0&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;100, 1&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;1000, 2&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;In the above example, &lt;code&gt;_1&lt;/code&gt; refers to the first element of the array, and &lt;code&gt;_2&lt;/code&gt; refers to its index.&lt;/p&gt;</description></item><item><title>Discover the Best Software Developer Companies Near Me in 2025</title><link>https://jetthoughts.com/blog/discover-best-software-developer-companies-near/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/discover-best-software-developer-companies-near/</guid><description>&lt;p&gt;In 2025, the tech landscape is buzzing with opportunities, especially for those looking to collaborate with software developer companies near me. Whether you&amp;rsquo;re a startup or an established business, finding the right local developers can make a huge difference in turning your ideas into reality. This article will guide you through the best companies, emerging trends, and tips for choosing the right partner for your software development needs.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Look for software developer companies near me to benefit from local expertise and support.&lt;/li&gt;&#10;&lt;li&gt;Check client reviews and industry ratings to find reliable partners.&lt;/li&gt;&#10;&lt;li&gt;Stay updated on trends like AI and agile methodologies that shape software development.&lt;/li&gt;&#10;&lt;li&gt;Networking through local meetups can lead to valuable connections.&lt;/li&gt;&#10;&lt;li&gt;Consider the company&amp;rsquo;s portfolio and pricing models before making a decision.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="finding-software-developer-companies-near-me"&gt;Finding Software Developer Companies Near Me &lt;a class="hlink" href="#finding-software-developer-companies-near-me" aria-label="Link to Finding Software Developer Companies Near Me"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;h3 id="why-location-matters"&gt;Why Location Matters &lt;a class="hlink" href="#why-location-matters" aria-label="Link to Why Location Matters"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Why bother with local? Well, for starters, time zones. Ever tried scheduling a meeting with a team halfway across the globe? It&amp;rsquo;s not fun. Plus, there&amp;rsquo;s something to be said for face-to-face meetings. You can grab coffee, hash out ideas on a whiteboard, and generally get a better feel for the team. &lt;strong&gt;Being in the same location can really boost collaboration.&lt;/strong&gt; And let&amp;rsquo;s not forget the local &lt;em&gt;knowledge&lt;/em&gt;. A company familiar with your area might have insights into the market and customer base that an out-of-state firm wouldn&amp;rsquo;t.&lt;/p&gt;</description></item><item><title>The Future of Software Engineering</title><link>https://jetthoughts.com/blog/future-of-software-engineering/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/future-of-software-engineering/</guid><description>&lt;p&gt;&lt;a href="https://www.youtube.com/watch?v=a-O7vv0ZfNg"&gt;&lt;img src="https://jetthoughts.com/blog/future-of-software-engineering/file_0_hu_37c6beb79c46f8c6.webp" srcset="https://jetthoughts.com/blog/future-of-software-engineering/file_0_hu_37c6beb79c46f8c6.webp 800w, https://jetthoughts.com/blog/future-of-software-engineering/file_0_hu_19183627a5ae835e.webp 1280w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="The Future of Software Engineering" loading="lazy"&gt;&lt;/a&gt;&lt;/p&gt;&#10;&lt;p&gt;The future of software engineering is here, and it is not what many expect. Artificial intelligence will change how we build software. This shift means we will need more human developers, not fewer. These developers will manage AI agents that do much of the coding work.&lt;/p&gt;&#10;&lt;h2 id="ai-and-the-cost-of-software"&gt;AI and the Cost of Software &lt;a class="hlink" href="#ai-and-the-cost-of-software" aria-label="Link to AI and the Cost of Software"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;AI language models write code well. This will make building software much cheaper. Some think this means fewer jobs for software developers. But the opposite is true. Software will run almost everything. This means we will need more people to manage it.&lt;/p&gt;</description></item><item><title>Top 8 YouTube Ad Agencies to Watch in 2024</title><link>https://jetthoughts.com/blog/top-8-youtube-ad-agencies-watch/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/top-8-youtube-ad-agencies-watch/</guid><description>&lt;p&gt;As businesses increasingly turn to video marketing, YouTube ad agencies are becoming essential partners in crafting effective campaigns. With over 2 billion monthly active users, YouTube offers unparalleled opportunities for brand visibility and engagement. Here are the top eight YouTube ad agencies to consider for 2024.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;YouTube ad agencies provide expertise in video marketing strategies.&lt;/li&gt;&#10;&lt;li&gt;The right agency can enhance ROI through tailored campaigns.&lt;/li&gt;&#10;&lt;li&gt;Consider your project scope, budget, and agency reputation when choosing.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="why-you-need-a-youtube-ad-agency"&gt;Why You Need a YouTube Ad Agency &lt;a class="hlink" href="#why-you-need-a-youtube-ad-agency" aria-label="Link to Why You Need a YouTube Ad Agency"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Investing in a YouTube ad agency can significantly enhance your marketing strategies. These agencies specialize in navigating the complexities of YouTube&amp;rsquo;s algorithms, ad formats, and audience engagement techniques. They can help you:&lt;/p&gt;</description></item><item><title>Top Communication Tools for Remote Teams: Enhancing Collaboration and Productivity</title><link>https://jetthoughts.com/blog/top-communication-tools-for-remote-teams/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/top-communication-tools-for-remote-teams/</guid><description>&lt;p&gt;In today&amp;rsquo;s increasingly remote work environment, effective communication tools are essential for teams spread across different locations. This article explores some of the most popular communication platforms that help remote teams stay connected, collaborate efficiently, and maintain productivity.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Slack&lt;/strong&gt;: A leading collaboration hub with channels for organized communication and numerous integrations.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;ProofHub&lt;/strong&gt;: An all-in-one project management tool that enhances transparency and accountability among team members.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Twist&lt;/strong&gt;: Focuses on asynchronous communication, allowing teams to engage in organized, topic-based discussions.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Workplace by Facebook&lt;/strong&gt;: Leverages familiar social media features to enhance workplace communication and collaboration.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Skype&lt;/strong&gt;: Offers versatile communication options including video calls, messaging, and screen sharing.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="slack-the-collaboration-hub"&gt;Slack: The Collaboration Hub &lt;a class="hlink" href="#slack-the-collaboration-hub" aria-label="Link to Slack: The Collaboration Hub"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Slack is arguably the most popular communication tool for remote teams. It aims to simplify work processes and enhance productivity through features such as:&lt;/p&gt;</description></item><item><title>Transforming Brands Through Product-Led Storytelling</title><link>https://jetthoughts.com/blog/transforming-brands-through-product-led-storytelling/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/transforming-brands-through-product-led-storytelling/</guid><description>&lt;p&gt;In a recent episode of the Executive Guidance podcast, industry experts discussed the transformative power of product-led storytelling in marketing. The conversation highlighted how innovative product strategies can enhance brand perception and customer experiences, particularly in a competitive landscape.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;strong&gt;Product Experiences as Storytelling Tools&lt;/strong&gt;: Brands can leverage product experiences to create compelling narratives that resonate with their audience.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Balancing Brand Perception and User Needs&lt;/strong&gt;: Successful marketing requires a delicate balance between maintaining brand identity and addressing genuine user needs.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Engaging Gen Z and Millennials&lt;/strong&gt;: Strategies for connecting with younger audiences are crucial, as their expectations and preferences differ significantly from previous generations.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Empathy in User Engagement&lt;/strong&gt;: Understanding and responding to shifting user expectations with empathy can foster stronger customer loyalty.&lt;/li&gt;&#10;&lt;li&gt;&lt;strong&gt;Identifying Core Audiences&lt;/strong&gt;: Brands must identify and build connections with their core audiences to thrive in competitive markets.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-role-of-product-led-storytelling"&gt;The Role of Product-Led Storytelling &lt;a class="hlink" href="#the-role-of-product-led-storytelling" aria-label="Link to The Role of Product-Led Storytelling"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Product-led storytelling is an approach that emphasizes the product as the central element of the brand narrative. This method allows companies to showcase their innovations and how they solve real-world problems for users. By focusing on the product, brands can create authentic stories that resonate with their target audience.&lt;/p&gt;</description></item><item><title>Unlocking Marketing Success: A Strategic Guide for Small Businesses</title><link>https://jetthoughts.com/blog/unlocking-marketing-success-strategic-guide-for/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-marketing-success-strategic-guide-for/</guid><description>&lt;p&gt;In today’s competitive landscape, small businesses must navigate the complex world of marketing to maximize their return on investment (ROI). A recent strategic guide emphasizes the importance of selecting the right marketing channels to ensure effective outreach and customer engagement.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Understand your market and customer needs before selecting marketing channels.&lt;/li&gt;&#10;&lt;li&gt;Develop a robust go-to-market strategy to guide your marketing efforts.&lt;/li&gt;&#10;&lt;li&gt;Focus on a few effective channels rather than spreading your budget too thin.&lt;/li&gt;&#10;&lt;li&gt;Establish a measurement framework to evaluate the performance of your marketing initiatives.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="the-importance-of-a-go-to-market-strategy"&gt;The Importance Of A Go-To-Market Strategy &lt;a class="hlink" href="#the-importance-of-a-go-to-market-strategy" aria-label="Link to The Importance Of A Go-To-Market Strategy"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Launching a product successfully requires more than just a great idea; it necessitates a well-thought-out go-to-market strategy. This strategy should address:&lt;/p&gt;</description></item><item><title>Unlocking Potential: 6 Compelling Reasons to Outsource Software Development to Peru in 2024</title><link>https://jetthoughts.com/blog/unlocking-potential-6-compelling-reasons-outsource/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-potential-6-compelling-reasons-outsource/</guid><description>&lt;p&gt;The software development outsourcing landscape is evolving, and Peru is emerging as a prime destination for companies looking to enhance their tech capabilities. With a burgeoning IT sector and a wealth of skilled developers, Peru offers numerous advantages for businesses considering outsourcing in 2024.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;Peru&amp;rsquo;s IT market is projected to grow significantly, reaching $7.02 billion by 2026.&lt;/li&gt;&#10;&lt;li&gt;The country boasts a large pool of over 38,000 skilled software developers.&lt;/li&gt;&#10;&lt;li&gt;Competitive salary rates make Peru an attractive option for outsourcing.&lt;/li&gt;&#10;&lt;li&gt;Cultural similarities and time zone compatibility enhance collaboration.&lt;/li&gt;&#10;&lt;li&gt;Government initiatives are improving the technical infrastructure.&lt;/li&gt;&#10;&lt;li&gt;Despite some challenges, the benefits of outsourcing to Peru are substantial.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h3 id="overview-of-perus-software-development-landscape"&gt;Overview Of Peru&amp;rsquo;s Software Development Landscape &lt;a class="hlink" href="#overview-of-perus-software-development-landscape" aria-label="Link to Overview Of Peru’s Software Development Landscape"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;Peru&amp;rsquo;s capital, Lima, is at the heart of its growing tech scene. The country has a population of over 33 million, with a significant number of professionals in the IT sector. The average salary for software developers in Peru is approximately $63,072, which is considerably lower than in the U.S., making it a financially viable option for outsourcing.&lt;/p&gt;</description></item><item><title>Unlocking Success: Innovative Tech Talent Solutions for the Modern Workforce</title><link>https://jetthoughts.com/blog/unlocking-success-innovative-tech-talent-solutions/</link><pubDate>Mon, 01 Jan 2024 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/unlocking-success-innovative-tech-talent-solutions/</guid><description>&lt;p&gt;In today&amp;rsquo;s fast-paced job market, finding and keeping the right tech talent is more challenging than ever. Companies are turning to innovative tech talent solutions to streamline their hiring processes, create supportive work environments, and adapt to the ever-changing demands of the workforce. This article explores various strategies and tools that organizations can use to attract, retain, and effectively manage tech talent in a competitive landscape.&lt;/p&gt;&#10;&lt;h3 id="key-takeaways"&gt;Key Takeaways &lt;a class="hlink" href="#key-takeaways" aria-label="Link to Key Takeaways"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;ul&gt;&#10;&lt;li&gt;AI tools can simplify recruitment and help find the best candidates quickly.&lt;/li&gt;&#10;&lt;li&gt;Creating a flexible and collaborative work culture boosts tech talent retention.&lt;/li&gt;&#10;&lt;li&gt;Continuous planning for talent needs is essential in a changing market.&lt;/li&gt;&#10;&lt;li&gt;Highlighting company values and remote work options attracts top talent.&lt;/li&gt;&#10;&lt;li&gt;Regular feedback and personalized development plans improve employee satisfaction.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="transforming-recruitment-with-ai-powered-tools"&gt;Transforming Recruitment With AI-Powered Tools &lt;a class="hlink" href="#transforming-recruitment-with-ai-powered-tools" aria-label="Link to Transforming Recruitment With AI-Powered Tools"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Recruiting can be tough. You need to find the right people, and fast. Luckily, AI is here to help. It is changing how companies find and hire talent. Let&amp;rsquo;s look at how you can use AI to improve your hiring process.&lt;/p&gt;</description></item><item><title>Stimulus Keyboard Event Filter</title><link>https://jetthoughts.com/blog/stimulus-keyboard-event-filter/</link><pubDate>Fri, 15 Dec 2023 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/stimulus-keyboard-event-filter/</guid><description>&lt;p&gt;&lt;strong&gt;What it was&lt;/strong&gt;&#10;In the last update of Stimulus &lt;code&gt;v3.2.2&lt;/code&gt;, the ability to filter the event by &lt;code&gt;PageDown&lt;/code&gt; and &lt;code&gt;PageUp&lt;/code&gt; keys was added.&lt;/p&gt;&#10;&lt;p&gt;Before that, in &lt;code&gt;v3.2.1&lt;/code&gt;, it looked like this:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#7ee787"&gt;div&lt;/span&gt; data-action&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;keyup-&amp;gt;myController#myfunction&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#7ee787"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;and some like this&amp;hellip;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-js" data-lang="js"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;import&lt;/span&gt; { Controller } from &lt;span style="color:#a5d6ff"&gt;&amp;#34;stimulus&amp;#34;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;export&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;default&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;class&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;extends&lt;/span&gt; Controller {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; connect() {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8b949e;font-style:italic"&gt;// Add a keydown event listener when the controller is connected to the DOM&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; document.addEventListener(&lt;span style="color:#a5d6ff"&gt;&amp;#34;keydown&amp;#34;&lt;/span&gt;, &lt;span style="color:#ff7b72"&gt;this&lt;/span&gt;.handleKeyDown);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; disconnect() {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8b949e;font-style:italic"&gt;// Remove the keydown event listener when the controller is disconnected&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; document.removeEventListener(&lt;span style="color:#a5d6ff"&gt;&amp;#34;keydown&amp;#34;&lt;/span&gt;, &lt;span style="color:#ff7b72"&gt;this&lt;/span&gt;.handleKeyDown);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; handleKeyDown(event) {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8b949e;font-style:italic"&gt;// Access the pressed key from the event&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;const&lt;/span&gt; pressedKey &lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt; event.key;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8b949e;font-style:italic"&gt;// Do something with the pressed key&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; console.log(&lt;span style="color:#a5d6ff"&gt;`Pressed key: &lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;${&lt;/span&gt;pressedKey&lt;span style="color:#a5d6ff"&gt;}&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;`&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; }&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;What the new&lt;/strong&gt;&#10;For now, you can call &lt;code&gt;page_up&lt;/code&gt;/&lt;code&gt;page_down&lt;/code&gt; in action, like:&lt;/p&gt;</description></item><item><title>Custom ordering without custom SQL with Ruby on Rails 7</title><link>https://jetthoughts.com/blog/custom-ordering-without-sql-with-ruby-on-rails-7/</link><pubDate>Fri, 24 Nov 2023 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/custom-ordering-without-sql-with-ruby-on-rails-7/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/custom-ordering-without-sql-with-ruby-on-rails-7/file_0_hu_2bd92c22b93d0fee.webp" srcset="https://jetthoughts.com/blog/custom-ordering-without-sql-with-ruby-on-rails-7/file_0_hu_2bd92c22b93d0fee.webp 707w, https://jetthoughts.com/blog/custom-ordering-without-sql-with-ruby-on-rails-7/file_0_hu_2bd92c22b93d0fee.webp 707w" sizes="(max-width: 760px) 100vw, 556px" width="707" height="432" alt="Custom order SQL" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;The problem&lt;/strong&gt;&#10;It&amp;rsquo;s a common case for Rails applications to have &lt;code&gt;enum&lt;/code&gt; fields on a model like:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;class&lt;/span&gt; &lt;span style="color:#f0883e;font-weight:bold"&gt;Review&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#79c0ff;font-weight:bold"&gt;ApplicationRecord&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; enum &lt;span style="color:#a5d6ff"&gt;status&lt;/span&gt;: &lt;span style="color:#ff7b72;font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;:pending&lt;/span&gt;, &lt;span style="color:#a5d6ff"&gt;:processing&lt;/span&gt;, &lt;span style="color:#a5d6ff"&gt;:completed&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;]&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;All&amp;rsquo;s good until we need to sort records by their status in a specific order. For example, on reviews page records should be ordered by status in alphabetical order, but internally in DB status values are stored as integers.&#10;We can&amp;rsquo;t just add &lt;code&gt;order(status: :asc)&lt;/code&gt;. Previously we&amp;rsquo;d have to write some custom SQL for the task:&lt;/p&gt;</description></item><item><title>How to Configure SimpleCov in Rails</title><link>https://jetthoughts.com/blog/how-we-configure-simplecov-for-our-ruby-on-rails-projects/</link><pubDate>Tue, 21 Nov 2023 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-we-configure-simplecov-for-our-ruby-on-rails-projects/</guid><description>&lt;p&gt;Here’s a step-by-step guide to setting up simplecov with explanations of what each part of the code does:&lt;/p&gt;&#10;&lt;h2 id="step-1-install-the-simplecov-gem"&gt;Step 1: Install the simplecov gem &lt;a class="hlink" href="#step-1-install-the-simplecov-gem" aria-label="Link to Step 1: Install the simplecov gem"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Add the following line to your Gemfile:&lt;/p&gt;&#10;&lt;p&gt;&lt;code&gt;gem ‘simplecov’&lt;/code&gt;&#10;Then run bundle install to install the gem.&lt;/p&gt;&#10;&lt;h2 id="step-2-create-a-test-helper-file"&gt;Step 2: Create a test helper file &lt;a class="hlink" href="#step-2-create-a-test-helper-file" aria-label="Link to Step 2: Create a test helper file"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Create a file called spec_helper.rb or test_helper.rb in your project’s test directory if it does not exist.&lt;/p&gt;</description></item><item><title>Integrating Bun with Vite Ruby for Lightning-Fast Frontend Builds</title><link>https://jetthoughts.com/blog/integrating-bun-with-vite-ruby-for-lightning-fast-frontend-builds-rails-javascript/</link><pubDate>Wed, 15 Nov 2023 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/integrating-bun-with-vite-ruby-for-lightning-fast-frontend-builds-rails-javascript/</guid><description>&lt;p&gt;With the recent release of &lt;a href="https://bun.sh/"&gt;Bun&lt;/a&gt; and its newfound support for Vite, coupled with &lt;em&gt;Ruby on Rails 7.1&lt;/em&gt; incorporating native support for Bun, developers can now enhance their web development workflow significantly. Here is the effortless process of enabling &lt;em&gt;Bun&lt;/em&gt; for &lt;a href="https://vite-ruby.netlify.app/"&gt;Vite Ruby&lt;/a&gt;, ultimately streamlining your front-end builds.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/integrating-bun-with-vite-ruby-for-lightning-fast-frontend-builds-rails-javascript/file_0_hu_2272edd217c1df41.webp" srcset="https://jetthoughts.com/blog/integrating-bun-with-vite-ruby-for-lightning-fast-frontend-builds-rails-javascript/file_0_hu_2272edd217c1df41.webp 800w, https://jetthoughts.com/blog/integrating-bun-with-vite-ruby-for-lightning-fast-frontend-builds-rails-javascript/file_0_hu_61be3e1b9866be7b.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="450" alt="Bun plus Vite Ruby" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="getting-started-creating-a-shim-bin"&gt;Getting Started: Creating a Shim Bin &lt;a class="hlink" href="#getting-started-creating-a-shim-bin" aria-label="Link to Getting Started: Creating a Shim Bin"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;To kick things off, you need to create a shim bin. Navigate to the &lt;code&gt;bin/shims&lt;/code&gt; directory and add a file named &lt;code&gt;vite&lt;/code&gt; with the following content:&lt;/p&gt;</description></item><item><title>Optimize your Chrome options for testing to get x1.25 impact</title><link>https://jetthoughts.com/blog/optimize-your-chrome-options-for-testing-get-x125-impact-performance/</link><pubDate>Sat, 05 Aug 2023 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/optimize-your-chrome-options-for-testing-get-x125-impact-performance/</guid><description>&lt;p&gt;Slow Capybara + Selenium suite? The right Chrome flags trim 20-25% off wall-clock time on a typical Rails system test run. Below is the exact set of flags I use - copy the &lt;code&gt;CHROME_ARGS&lt;/code&gt; constant straight into your &lt;code&gt;ApplicationSystemTestCase&lt;/code&gt; and re-run.&lt;/p&gt;&#10;&lt;p&gt;The full description of every flag is below the snippet, so you can audit which ones are safe for your environment before shipping.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/optimize-your-chrome-options-for-testing-get-x125-impact-performance/file_0_hu_9239a40cfe289d3.webp" srcset="https://jetthoughts.com/blog/optimize-your-chrome-options-for-testing-get-x125-impact-performance/file_0_hu_9239a40cfe289d3.webp 800w, https://jetthoughts.com/blog/optimize-your-chrome-options-for-testing-get-x125-impact-performance/file_0_hu_9239a40cfe289d3.webp 800w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="800" alt="Image description" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Ruby on Rails Views Resources for Frontend Developer</title><link>https://jetthoughts.com/blog/ruby-on-rails-views-resources-for-frontend-developer-programming-javascript/</link><pubDate>Fri, 04 Aug 2023 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/ruby-on-rails-views-resources-for-frontend-developer-programming-javascript/</guid><description>&lt;p&gt;🚀 Excited to share some awesome resources to help front-end developers onboard into the Ruby on Rails Views kitchen! 🎉&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/ruby-on-rails-views-resources-for-frontend-developer-programming-javascript/file_0_hu_efbc4b4299cb1f32.webp" srcset="https://jetthoughts.com/blog/ruby-on-rails-views-resources-for-frontend-developer-programming-javascript/file_0_hu_efbc4b4299cb1f32.webp 800w, https://jetthoughts.com/blog/ruby-on-rails-views-resources-for-frontend-developer-programming-javascript/file_0_hu_a58bd95ffe092ade.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="454" alt="ViewComponent" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;1️⃣ &lt;strong&gt;ViewComponent:&lt;/strong&gt; If you&amp;rsquo;re looking for a powerful way to build Rails views, look no further! Check out ViewComponent, the first component-based library in the Rails world. It allows you to break down complex UIs into reusable and manageable components, making your codebase cleaner and more maintainable. Head over to &lt;a href="https://viewcomponent.org"&gt;https://viewcomponent.org&lt;/a&gt; to dive into the magic of component-driven development in Rails.&lt;/p&gt;</description></item><item><title>Align remote teams with OKRs and Impact Mapping</title><link>https://jetthoughts.com/blog/align-remote-teams-with-okrs-impact-mapping-management-devops/</link><pubDate>Wed, 02 Aug 2023 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/align-remote-teams-with-okrs-impact-mapping-management-devops/</guid><description>&lt;p&gt;In today&amp;rsquo;s fast-paced business environment, remote distributed teams are becoming increasingly common, especially among pre-seed startups.&lt;/p&gt;&#10;&lt;p&gt;However, managing projects and coordinating business analysis workshops with limited resources can be challenging.&lt;/p&gt;&#10;&lt;p&gt;The lack of a full-time project manager and the absence of real-time feedback from product sponsors often hinder development.&lt;/p&gt;&#10;&lt;p&gt;To address these issues and support a cross-functional team with limited experience working with stakeholders, implementing a minimal cadence with &lt;strong&gt;OKRs&lt;/strong&gt; and &lt;strong&gt;Impact Mapping&lt;/strong&gt; can be the key to success.&lt;/p&gt;</description></item><item><title>How a large transaction can be a source of DB deadlocks and how this can be fixed.</title><link>https://jetthoughts.com/blog/how-large-transaction-can-be-source-of-db-deadlocks-this-fixed-ruby-database/</link><pubDate>Mon, 01 May 2023 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-large-transaction-can-be-source-of-db-deadlocks-this-fixed-ruby-database/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-large-transaction-can-be-source-of-db-deadlocks-this-fixed-ruby-database/file_0_hu_4d6f2cf30a555b34.webp" srcset="https://jetthoughts.com/blog/how-large-transaction-can-be-source-of-db-deadlocks-this-fixed-ruby-database/file_0_hu_4d6f2cf30a555b34.webp 800w, https://jetthoughts.com/blog/how-large-transaction-can-be-source-of-db-deadlocks-this-fixed-ruby-database/file_0_hu_a6a842f89913a4af.webp 1426w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="480" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Recently in a project, we encountered the fact that sometimes we had a DB Deadlocks error. After some experiments, we realized that this is due to the fact that we have too large a transaction and it mixes searching creating, and updating actions.&lt;/p&gt;&#10;&lt;p&gt;&lt;em&gt;Code example (In the real project, the transaction was much larger):&lt;/em&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#79c0ff;font-weight:bold"&gt;ActiveRecord&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt;&lt;span style="color:#79c0ff;font-weight:bold"&gt;Base&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;transaction &lt;span style="color:#ff7b72"&gt;do&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8b949e;font-style:italic"&gt;# 1. Creating a new order&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; order &lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#79c0ff;font-weight:bold"&gt;Order&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;create(&lt;span style="color:#a5d6ff"&gt;user_id&lt;/span&gt;: current_user&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;id, &lt;span style="color:#a5d6ff"&gt;total_price&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;0&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8b949e;font-style:italic"&gt;# 2. Adding products to the order&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; products &lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#79c0ff;font-weight:bold"&gt;Product&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;where(id: &lt;span style="color:#ff7b72;font-weight:bold"&gt;[&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a5d6ff"&gt;2&lt;/span&gt;, &lt;span style="color:#a5d6ff"&gt;3&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;]&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; products&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;each &lt;span style="color:#ff7b72"&gt;do&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;|&lt;/span&gt;product&lt;span style="color:#ff7b72;font-weight:bold"&gt;|&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; order_items &lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#79c0ff;font-weight:bold"&gt;OrderItem&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;create(&lt;span style="color:#a5d6ff"&gt;order_id&lt;/span&gt;: order&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;id, &lt;span style="color:#a5d6ff"&gt;product_id&lt;/span&gt;: product&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;id, &lt;span style="color:#a5d6ff"&gt;quantity&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;1&lt;/span&gt;, &lt;span style="color:#a5d6ff"&gt;price&lt;/span&gt;: product&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;price)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; order&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;total_price &lt;span style="color:#ff7b72;font-weight:bold"&gt;+=&lt;/span&gt; order_items&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;price&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8b949e;font-style:italic"&gt;# 3. Updating user balance&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; user &lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#79c0ff;font-weight:bold"&gt;User&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;find(current_user&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;id)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; user&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;balance &lt;span style="color:#ff7b72;font-weight:bold"&gt;-=&lt;/span&gt; order&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;total_price&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; user&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;save!&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8b949e;font-style:italic"&gt;# 4. Updating product quantity in stock&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; products&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;each &lt;span style="color:#ff7b72"&gt;do&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;|&lt;/span&gt;product&lt;span style="color:#ff7b72;font-weight:bold"&gt;|&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; product&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;update(&lt;span style="color:#a5d6ff"&gt;quantity&lt;/span&gt;: product&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;quantity &lt;span style="color:#ff7b72;font-weight:bold"&gt;-&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;1&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8b949e;font-style:italic"&gt;# 5. Creating a new record in user&amp;#39;s purchase history&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; purchase_history &lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#79c0ff;font-weight:bold"&gt;PurchaseHistory&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;create(&lt;span style="color:#a5d6ff"&gt;user_id&lt;/span&gt;: current_user&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;id, &lt;span style="color:#a5d6ff"&gt;order_id&lt;/span&gt;: order&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;id)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8b949e;font-style:italic"&gt;# 6. Sending a notification to the user about a successful purchase&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; message &lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;&amp;#34;Thank you for your purchase! Your order №&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;#{&lt;/span&gt;order&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;id&lt;span style="color:#a5d6ff"&gt;}&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt; for the amount of &lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;#{&lt;/span&gt;order&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;total_price&lt;span style="color:#a5d6ff"&gt;}&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt; rubles has been successfully placed.&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#79c0ff;font-weight:bold"&gt;Notification&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;create(&lt;span style="color:#a5d6ff"&gt;user_id&lt;/span&gt;: current_user&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;id, &lt;span style="color:#a5d6ff"&gt;message&lt;/span&gt;: message)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If we execute queries to search or retrieve data before the start of the transaction, then we will reduce the likelihood of locking tables in the database and can speed up the transaction.&lt;/p&gt;</description></item><item><title>How to keep clean Ruby on Rails views with the Null Object pattern</title><link>https://jetthoughts.com/blog/how-keep-clean-ruby-on-rails-views-with-null-object-pattern/</link><pubDate>Wed, 22 Feb 2023 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-keep-clean-ruby-on-rails-views-with-null-object-pattern/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-keep-clean-ruby-on-rails-views-with-null-object-pattern/file_0_hu_90026bbc9df381b5.webp" srcset="https://jetthoughts.com/blog/how-keep-clean-ruby-on-rails-views-with-null-object-pattern/file_0_hu_90026bbc9df381b5.webp 800w, https://jetthoughts.com/blog/how-keep-clean-ruby-on-rails-views-with-null-object-pattern/file_0_hu_9d9f3274ac9509f3.webp 1426w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="502" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;One of the most common errors developers encounter is NoMethodError. It occurs when code is executed according to a script not provided by the programmer.&lt;/p&gt;&#10;&lt;p&gt;Junior devs often try to solve this problem in a non optimal way. Let’s look at some examples of bad code:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#79c0ff"&gt;@user&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#79c0ff;font-weight:bold"&gt;User&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;find_by(&lt;span style="color:#a5d6ff"&gt;email&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;&amp;#34;deleted@user.com&amp;#34;&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#79c0ff"&gt;@user&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;first_name&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If the user is not in the database or is flagged as “deleted”.&#10;Then we will get an error:&lt;/p&gt;</description></item><item><title>How WIP Limits improves effectiveness?</title><link>https://jetthoughts.com/blog/how-wip-limits-improves-effectiveness-productivity-management/</link><pubDate>Thu, 15 Dec 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-wip-limits-improves-effectiveness-productivity-management/</guid><description>&lt;p&gt;A work-in-progress (WIP) limit is used in agile project management to improve team effectiveness. The idea behind WIP limits is to limit the number of tasks a team works on at any given time. By limiting the work in progress, teams can focus on completing tasks more efficiently and effectively.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-wip-limits-improves-effectiveness-productivity-management/file_0_hu_1fea88fbd2b5e0b8.webp" srcset="https://jetthoughts.com/blog/how-wip-limits-improves-effectiveness-productivity-management/file_0_hu_1fea88fbd2b5e0b8.webp 800w, https://jetthoughts.com/blog/how-wip-limits-improves-effectiveness-productivity-management/file_0_hu_ac3bf5213861894a.webp 1024w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="400" alt="Little’s Law" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Here are some ways in which WIP limits can help to improve team effectiveness:&lt;/p&gt;</description></item><item><title>When to use Microservices?</title><link>https://jetthoughts.com/blog/when-use-microservices-devops-distributedsystems/</link><pubDate>Sat, 03 Dec 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/when-use-microservices-devops-distributedsystems/</guid><description>&lt;p&gt;Microservices are a software architecture design pattern in which a large application is built as a collection of small, independent services that communicate with each other over well-defined interfaces, typically using APIs. This approach to software development has become increasingly popular in recent years because it offers several key benefits over traditional, monolithic architecture.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/when-use-microservices-devops-distributedsystems/file_0_hu_735f1a1f1335bd30.webp" srcset="https://jetthoughts.com/blog/when-use-microservices-devops-distributedsystems/file_0_hu_735f1a1f1335bd30.webp 800w, https://jetthoughts.com/blog/when-use-microservices-devops-distributedsystems/file_0_hu_c69356957c29757e.webp 1400w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="275" alt="Microservices vs Monolith" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="advantages"&gt;Advantages &lt;a class="hlink" href="#advantages" aria-label="Link to Advantages"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;One of the main advantages of microservices is that they are modular and highly scalable. Because each microservice is a separate and independent component, it can be developed, tested, and deployed independently of the other services. This allows for a high degree of flexibility and agility, making it easier to add new features, make changes, and deploy updates.&lt;/p&gt;</description></item><item><title>What is Ruby on Rails Middleware.</title><link>https://jetthoughts.com/blog/what-ruby-on-rails-middleware/</link><pubDate>Tue, 29 Nov 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/what-ruby-on-rails-middleware/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/what-ruby-on-rails-middleware/file_0_hu_6b222110a551f0b5.webp" srcset="https://jetthoughts.com/blog/what-ruby-on-rails-middleware/file_0_hu_6b222110a551f0b5.webp 800w, https://jetthoughts.com/blog/what-ruby-on-rails-middleware/file_0_hu_3b68a057cf108aa5.webp 1278w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="746" alt="Image description" loading="lazy"&gt;&#10;The middleware component sits between the client and the server, processing inbound requests and outbound responses. The middleware is used for tasks that are not related to business logic of your application.&lt;/p&gt;&#10;&lt;p&gt;A list of tasks that are commonly solved with the help of middleware:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Caching&lt;/li&gt;&#10;&lt;li&gt;Logging&lt;/li&gt;&#10;&lt;li&gt;Sessions&lt;/li&gt;&#10;&lt;li&gt;Performance &amp;amp; Usage Monitoring&lt;/li&gt;&#10;&lt;li&gt;Security&lt;/li&gt;&#10;&lt;li&gt;Serving static files (css, js, images, etc)&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="how-to-make-your-own-middleware"&gt;How to make your own middleware &lt;a class="hlink" href="#how-to-make-your-own-middleware" aria-label="Link to How to make your own middleware"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Every Rails application is based on Rack server. Rack allow us to create middleware layers. Middleware must have call method, this is the interface that requires the Rake app.&lt;/p&gt;</description></item><item><title>4 Ways to Create a Triangle in Tailwind CSS</title><link>https://jetthoughts.com/blog/how-create-triangles-in-tailwindcss-html-css/</link><pubDate>Tue, 18 Oct 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-create-triangles-in-tailwindcss-html-css/</guid><description>&lt;p&gt;Need a CSS triangle in a Tailwind project without dropping into custom CSS? Use a zero-size box and color one border. Four directions, four snippets - copy, paste, ship.&lt;/p&gt;&#10;&lt;h2 id="triangle-down"&gt;Triangle Down &lt;a class="hlink" href="#triangle-down" aria-label="Link to Triangle Down"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Set width and height to &lt;code&gt;0&lt;/code&gt;, then color one border solid and the two adjacent borders transparent. The browser draws the angled edges between them as a filled triangle.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;&lt;code&gt;w-0 h-0&lt;/code&gt; collapses the box.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;border-t-[75px] border-t-red-500&lt;/code&gt; paints the top border full height and color.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;border-l-[50px] border-l-transparent&lt;/code&gt; and &lt;code&gt;border-r-[50px] border-r-transparent&lt;/code&gt; set the side borders to half the width with the color transparent.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#7ee787"&gt;div&lt;/span&gt; class&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;w-0 h-0 &#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a5d6ff"&gt; border-l-[50px] border-l-transparent&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a5d6ff"&gt; border-t-[75px] border-t-red-500&#10;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a5d6ff"&gt; border-r-[50px] border-r-transparent&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#7ee787"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-create-triangles-in-tailwindcss-html-css/file_0_hu_a8dd1e12c2fae876.webp" srcset="https://jetthoughts.com/blog/how-create-triangles-in-tailwindcss-html-css/file_0_hu_a8dd1e12c2fae876.webp 259w, https://jetthoughts.com/blog/how-create-triangles-in-tailwindcss-html-css/file_0_hu_a8dd1e12c2fae876.webp 259w" sizes="(max-width: 760px) 100vw, 556px" width="259" height="206" alt="Image description" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Troubleshooting ruby build</title><link>https://jetthoughts.com/blog/troubleshooting-ruby-build-tutorial/</link><pubDate>Mon, 10 Oct 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/troubleshooting-ruby-build-tutorial/</guid><description>&lt;p&gt;Have you found problems building ruby on a local machine? How to configure your local environment once and for all?&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/troubleshooting-ruby-build-tutorial/file_0_hu_dad998728630d022.webp" srcset="https://jetthoughts.com/blog/troubleshooting-ruby-build-tutorial/file_0_hu_dad998728630d022.webp 800w, https://jetthoughts.com/blog/troubleshooting-ruby-build-tutorial/file_0_hu_c93c19400b0ca790.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="554" alt="Failed to build ruby" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Building ruby is dependent on several key elements: build tools, compilers, linkers, also shared libraries like openssl, libyaml, readline and etc. And we need to help ruby-build to find all those tools and libraries.&lt;/p&gt;&#10;&lt;p&gt;The shared solution is designed for &lt;em&gt;macOS&lt;/em&gt; with &lt;a href="https://brew.sh/"&gt;Homebrew&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Custom templates for Rails scaffolding</title><link>https://jetthoughts.com/blog/custom-templates-for-rails-scaffolding-ruby/</link><pubDate>Thu, 06 Oct 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/custom-templates-for-rails-scaffolding-ruby/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/custom-templates-for-rails-scaffolding-ruby/file_0_hu_b2f73e063c9c539c.webp" srcset="https://jetthoughts.com/blog/custom-templates-for-rails-scaffolding-ruby/file_0_hu_b2f73e063c9c539c.webp 800w, https://jetthoughts.com/blog/custom-templates-for-rails-scaffolding-ruby/file_0_hu_49bf00b06510ee1f.webp 1214w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="538" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Rails has a very handy tool for rapid development called scaffolding. Often programmers ignore it, because some things have to be written by hand anyway. I will tell you how you can minimize manual coding by using custom templates.&lt;/p&gt;&#10;&lt;p&gt;We need to override the templates provided by the Rails. You can find them in this way:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;╰─ $ bundle show railties&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;/Users/sampleuser/.rbenv/versions/3.1.1/lib/ruby/gems/3.1.0/gems/railties-7.0.2.3&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;It means that the files we are interested in are located in this path:&lt;/p&gt;</description></item><item><title>Team Structure for MVP</title><link>https://jetthoughts.com/blog/our-mvp-team-structure-startup-management/</link><pubDate>Wed, 28 Sep 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/our-mvp-team-structure-startup-management/</guid><description>&lt;p&gt;In structuring a team for MVP, we should consider the following: there is a massive number of uncertainties. We have to work with assumptions and bets.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/our-mvp-team-structure-startup-management/file_0_hu_85cb9a934c90096e.webp" srcset="https://jetthoughts.com/blog/our-mvp-team-structure-startup-management/file_0_hu_85cb9a934c90096e.webp 601w, https://jetthoughts.com/blog/our-mvp-team-structure-startup-management/file_0_hu_85cb9a934c90096e.webp 601w" sizes="(max-width: 760px) 100vw, 556px" width="601" height="330" alt="Strategyzer" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;The goal for the business is to find a good enough solution for a reasonable budget: &lt;em&gt;ROI&lt;/em&gt;. It&amp;rsquo;s vital to have the fastest feedback loop to prevent dramatic waste.&lt;/p&gt;&#10;&lt;h2 id="here-is-how-i-see-the-team-structure"&gt;Here is how I see the team structure &lt;a class="hlink" href="#here-is-how-i-see-the-team-structure" aria-label="Link to Here is how I see the team structure"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;a href="#pm"&gt;Project Manager / Owner&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#designer"&gt;Designer&lt;/a&gt;&lt;/li&gt;&#10;&lt;li&gt;&lt;a href="#developers"&gt;Developers: 2 Fullstack and 1 Frontend&lt;/a&gt;&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="product-manager--owner"&gt;Product Manager / Owner&lt;a name="pm"&gt;&lt;/a&gt; &lt;a class="hlink" href="#product-manager--owner" aria-label="Link to Product Manager / Owner"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;They define the product&amp;rsquo;s vision, so the rest of the team will follow.&lt;/p&gt;</description></item><item><title>TL;DR: Move CI/CD scripts into .automation</title><link>https://jetthoughts.com/blog/tldr-move-cicd-scripts-into-automation-devops-productivity/</link><pubDate>Wed, 28 Sep 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/tldr-move-cicd-scripts-into-automation-devops-productivity/</guid><description>&lt;p&gt;Today our &lt;code&gt;/bin&lt;/code&gt; folder has become overwhelmed with different development tools and scripts.&lt;/p&gt;&#10;&lt;p&gt;We put everything there: local automations, &lt;em&gt;CI/CD&lt;/em&gt; helpers, &lt;em&gt;PAAS&lt;/em&gt; release scripts, &lt;code&gt;Dockerfile&lt;/code&gt; helpers, etc.&lt;/p&gt;&#10;&lt;p&gt;It becomes too hard to find appropriate tools for your problem in that mess.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/tldr-move-cicd-scripts-into-automation-devops-productivity/file_0_hu_21d38979a50c4cf3.webp" srcset="https://jetthoughts.com/blog/tldr-move-cicd-scripts-into-automation-devops-productivity/file_0_hu_21d38979a50c4cf3.webp 800w, https://jetthoughts.com/blog/tldr-move-cicd-scripts-into-automation-devops-productivity/file_0_hu_1b801f588eae90c4.webp 1096w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="1105" alt="Messy bin folder" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;I had several revisions on decomposing the &lt;code&gt;/bin&lt;/code&gt; scripts and the whole directory, but I still have not found one solution.&lt;/p&gt;</description></item><item><title>Auto-install system dependencies for Ruby on Rails</title><link>https://jetthoughts.com/blog/auto-install-system-dependencies-for-ruby-on-rails-programming/</link><pubDate>Thu, 22 Sep 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/auto-install-system-dependencies-for-ruby-on-rails-programming/</guid><description>&lt;p&gt;Let&amp;rsquo;s integrate Homebrew into our Ruby on Rails Project local set up.&lt;/p&gt;&#10;&lt;p&gt;There is a convention for Ruby on Rails projects to use &lt;code&gt;bin/setup&lt;/code&gt; to set up and install/update required dependencies. But by default, it does not include system dependencies.&lt;/p&gt;&#10;&lt;p&gt;We are going to use &lt;a href="https://github.com/Homebrew/homebrew-bundle"&gt;the Homebrew Bundle tool&lt;/a&gt; for this.&lt;/p&gt;&#10;&lt;p&gt;First, we need to have a &lt;code&gt;Brewfile&lt;/code&gt; with:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Redis - For ActionCable support (and Sidekiq, caching, etc.)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;brew &lt;span style="color:#a5d6ff"&gt;&amp;#34;redis&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# PostgreSQL - brew install postgresql&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;brew &lt;span style="color:#a5d6ff"&gt;&amp;#34;postgresql&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Overmind (requires tmux)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;brew &lt;span style="color:#a5d6ff"&gt;&amp;#34;tmux&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;brew &lt;span style="color:#a5d6ff"&gt;&amp;#34;overmind&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Imagemagick or libvips - for processing images (avatars, file uploads, etc.)&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;brew &lt;span style="color:#a5d6ff"&gt;&amp;#34;vips&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#8b949e;font-style:italic"&gt;# Yarn - for installing Javascript dependencies&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;brew &lt;span style="color:#a5d6ff"&gt;&amp;#34;yarn&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Then, in &lt;code&gt;bin/setup,&lt;/code&gt; we are going to add:&lt;/p&gt;</description></item><item><title>How to avoid callbacks using services.</title><link>https://jetthoughts.com/blog/how-avoid-callbacks-using-services-rails-refactoring/</link><pubDate>Tue, 20 Sep 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-avoid-callbacks-using-services-rails-refactoring/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-avoid-callbacks-using-services-rails-refactoring/file_0_hu_9c9efad7270b7c8f.webp" srcset="https://jetthoughts.com/blog/how-avoid-callbacks-using-services-rails-refactoring/file_0_hu_9c9efad7270b7c8f.webp 800w, https://jetthoughts.com/blog/how-avoid-callbacks-using-services-rails-refactoring/file_0_hu_eb100df6de8dee84.webp 1218w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="503" alt="example code for using service" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Often, programmers abuse callbacks, not fully understanding that their code will ultimately be confusing and non-obvious. There are several ways to avoid using callbacks. Today, I will tell you how to do this using services.&lt;/p&gt;&#10;&lt;p&gt;Let&amp;rsquo;s see on a code:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;class&lt;/span&gt; &lt;span style="color:#f0883e;font-weight:bold"&gt;User&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#79c0ff;font-weight:bold"&gt;ApplicationController&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;def&lt;/span&gt; &lt;span style="color:#d2a8ff;font-weight:bold"&gt;create&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#79c0ff"&gt;@user&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt; &lt;span style="color:#79c0ff;font-weight:bold"&gt;User&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;new(user_params)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;if&lt;/span&gt; &lt;span style="color:#79c0ff"&gt;@user&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;save&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; redirect_to root_path, &lt;span style="color:#a5d6ff"&gt;notice&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;&amp;#34;User created!&amp;#34;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;else&lt;/span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; render &lt;span style="color:#a5d6ff"&gt;:new&lt;/span&gt;, &lt;span style="color:#a5d6ff"&gt;error&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;&amp;#39;Failed to create user!&amp;#39;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;class&lt;/span&gt; &lt;span style="color:#f0883e;font-weight:bold"&gt;User&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;&amp;lt;&lt;/span&gt; &lt;span style="color:#79c0ff;font-weight:bold"&gt;ApplicationRecord&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; before_create &lt;span style="color:#a5d6ff"&gt;:populate_serial_number&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#79c0ff"&gt;private&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;def&lt;/span&gt; &lt;span style="color:#d2a8ff;font-weight:bold"&gt;populate_serial_number&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; self&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;serial_number &lt;span style="color:#ff7b72;font-weight:bold"&gt;||=&lt;/span&gt; &lt;span style="color:#79c0ff;font-weight:bold"&gt;SecureRandom&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;uuid&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="what-is-the-problem-with-this-code"&gt;What is the problem with this code? &lt;a class="hlink" href="#what-is-the-problem-with-this-code" aria-label="Link to What is the problem with this code?"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;We get a non-obvious (magical) action. We do not pass any data about the serial number in the parameters or explicitly set this value anywhere. This happens automatically with a callback.&lt;/p&gt;</description></item><item><title>Incremental lint fixes by GitHub Actions</title><link>https://jetthoughts.com/blog/incremental-lint-fixes-by-github-actions-devops/</link><pubDate>Fri, 09 Sep 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/incremental-lint-fixes-by-github-actions-devops/</guid><description>&lt;p&gt;How do you apply new lint rules to the legacy project with active development? Have you added &lt;code&gt;standard&lt;/code&gt; gem recently, and now you are required to change a lot of files but could not apply them at once.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/incremental-lint-fixes-by-github-actions-devops/file_0_hu_9b5e45e26db58c4a.webp" srcset="https://jetthoughts.com/blog/incremental-lint-fixes-by-github-actions-devops/file_0_hu_9b5e45e26db58c4a.webp 800w, https://jetthoughts.com/blog/incremental-lint-fixes-by-github-actions-devops/file_0_hu_f5b5139e52057bb5.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="316" alt="Auto-corrected Rubocop rules" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;I got the same problem, and we could not add a massive amount of the small changes because it would require regular rebasing while this PR is on review, or even some safe changes could cause annoying problems.&lt;/p&gt;</description></item><item><title>How to make vertically scrollable in CSS</title><link>https://jetthoughts.com/blog/how-make-vertically-scrollable-in-css-html/</link><pubDate>Thu, 08 Sep 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-make-vertically-scrollable-in-css-html/</guid><description>&lt;p&gt;In order for the scroll to appear, you need to limit its &lt;code&gt;height&lt;/code&gt; by adding height or &lt;code&gt;max-height&lt;/code&gt; properties.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.&lt;span style="color:#f0883e;font-weight:bold"&gt;scroll-area&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;overflow-y&lt;/span&gt;: &lt;span style="color:#79c0ff"&gt;auto&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;max-height&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;400&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;px&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you do not add this, your block will stretch to the entire height.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-make-vertically-scrollable-in-css-html/file_0_hu_65fa29f21a611966.webp" srcset="https://jetthoughts.com/blog/how-make-vertically-scrollable-in-css-html/file_0_hu_65fa29f21a611966.webp 720w, https://jetthoughts.com/blog/how-make-vertically-scrollable-in-css-html/file_0_hu_65fa29f21a611966.webp 720w" sizes="(max-width: 760px) 100vw, 556px" width="720" height="292" alt="Image description" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Data migrations with Rails</title><link>https://jetthoughts.com/blog/data-migrations-with-rails-ruby/</link><pubDate>Fri, 02 Sep 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/data-migrations-with-rails-ruby/</guid><description>&lt;p&gt;Data migration is a common part of working with databases, and Ruby on Rails developers have many tools at their disposal. Still, it can be a challenge to get it right in every situation. Here are some tips for making sure your migrations go smoothly.&lt;/p&gt;&#10;&lt;p&gt;The easiest way is just to have data migrations alongside with schema migrations. But as your code base grows this might become a problem.&lt;/p&gt;&#10;&lt;h2 id="problems"&gt;Problems &lt;a class="hlink" href="#problems" aria-label="Link to Problems"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Code coupling&lt;/em&gt;&lt;/strong&gt;&#10;Data migrations depend on the existing code(models, service objects, etc.) over time code changes potentially breaking the migrations. Let&amp;rsquo;s say you have a &lt;code&gt;Order&lt;/code&gt; model and want to update a recently added attribute &lt;code&gt;fulfilled&lt;/code&gt; to &lt;code&gt;true&lt;/code&gt; for all orders created last year. You can do it with a simple migration:&lt;/p&gt;</description></item><item><title>How to use Ruby on Rails Concerns</title><link>https://jetthoughts.com/blog/how-use-ruby-on-rails-concerns-webdev/</link><pubDate>Thu, 18 Aug 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-use-ruby-on-rails-concerns-webdev/</guid><description>&lt;p&gt;A Rails concern is a module that extends the &lt;code&gt;ActiveSupport::Concern&lt;/code&gt; module.&lt;/p&gt;&#10;&lt;p&gt;You can use Сoncerns to store common code for several classes there, or for refactoring to separate semantically similar code in separate modules.&lt;/p&gt;&#10;&lt;p&gt;A concern provides two blocks:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;module&lt;/span&gt; &lt;span style="color:#ff7b72"&gt;SampleConcern&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#79c0ff"&gt;extend&lt;/span&gt; &lt;span style="color:#79c0ff;font-weight:bold"&gt;ActiveSupport&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;::&lt;/span&gt;&lt;span style="color:#79c0ff;font-weight:bold"&gt;Concern&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; included &lt;span style="color:#ff7b72"&gt;do&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;...&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; class_methods &lt;span style="color:#ff7b72"&gt;do&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;...&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="included"&gt;included &lt;a class="hlink" href="#included" aria-label="Link to included"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;The code inside the included block is evaluated in the context of the including class.&lt;/p&gt;</description></item><item><title>How to create circles in CSS</title><link>https://jetthoughts.com/blog/how-create-circles-in-css-html/</link><pubDate>Tue, 16 Aug 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-create-circles-in-css-html/</guid><description>&lt;p&gt;Let&amp;rsquo;s look at a few tricks in CSS able to create basic shapes like circles.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#7ee787"&gt;div&lt;/span&gt; class&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;circle&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#7ee787"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="border-radius"&gt;Border-Radius &lt;a class="hlink" href="#border-radius" aria-label="Link to Border-Radius"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;For this case need to use the border-radius property and set the value to 50%. Then combine the height and width properties with a matching value.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.&lt;span style="color:#f0883e;font-weight:bold"&gt;circle&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;width&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;100&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;px&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;height&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;100&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;px&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;border-radius&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;50&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;%&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;background&lt;/span&gt;: &lt;span style="color:#79c0ff"&gt;lightgreen&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-create-circles-in-css-html/file_0_hu_74353efb08a2cabe.webp" srcset="https://jetthoughts.com/blog/how-create-circles-in-css-html/file_0_hu_74353efb08a2cabe.webp 218w, https://jetthoughts.com/blog/how-create-circles-in-css-html/file_0_hu_74353efb08a2cabe.webp 218w" sizes="(max-width: 760px) 100vw, 556px" width="218" height="216" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="circle"&gt;Circle() &lt;a class="hlink" href="#circle" aria-label="Link to Circle()"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;In this, the circle is created using the shape-outside property. You must also apply a clip-path with the appropriate property to make the circle appear.&lt;/p&gt;</description></item><item><title>How to make truncate text in CSS</title><link>https://jetthoughts.com/blog/how-make-truncate-text-in-css-html/</link><pubDate>Mon, 01 Aug 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-make-truncate-text-in-css-html/</guid><description>&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#7ee787"&gt;p&lt;/span&gt;&amp;gt;Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.&amp;lt;/&lt;span style="color:#7ee787"&gt;p&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-make-truncate-text-in-css-html/file_0_hu_9658e6cc7999bff3.webp" srcset="https://jetthoughts.com/blog/how-make-truncate-text-in-css-html/file_0_hu_9658e6cc7999bff3.webp 800w, https://jetthoughts.com/blog/how-make-truncate-text-in-css-html/file_0_hu_e5b81d181342af45.webp 861w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="154" alt="Image description" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Create a Triangle in Pure CSS - No JavaScript</title><link>https://jetthoughts.com/blog/how-create-triangles-in-css-html/</link><pubDate>Fri, 22 Jul 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-create-triangles-in-css-html/</guid><description>&lt;p&gt;In this post, we are going to see a simple method to draw a triangle in CSS using borders.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#7ee787"&gt;div&lt;/span&gt; class&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;triangle-up&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#7ee787"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#7ee787"&gt;div&lt;/span&gt; class&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;triangle-down&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#7ee787"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#7ee787"&gt;div&lt;/span&gt; class&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;triangle-left&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#7ee787"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#7ee787"&gt;div&lt;/span&gt; class&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;triangle-right&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style="color:#7ee787"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="triangle-up"&gt;Triangle Up &lt;a class="hlink" href="#triangle-up" aria-label="Link to Triangle Up"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Triangle is one of the simplest shapes in geometry. It can be drawn with just three straight lines and a couple of angles.&lt;/p&gt;&#10;&lt;ol&gt;&#10;&lt;li&gt;Set a width and height of 0.&lt;/li&gt;&#10;&lt;li&gt;Set the border color to transparent.&lt;/li&gt;&#10;&lt;li&gt;Set the top border to 0.&lt;/li&gt;&#10;&lt;li&gt;Set the side borders to half the width.&lt;/li&gt;&#10;&lt;li&gt;Set the bottom border to have the full height.&lt;/li&gt;&#10;&lt;li&gt;Set a color for the bottom border.&lt;/li&gt;&#10;&lt;/ol&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.&lt;span style="color:#f0883e;font-weight:bold"&gt;triangle-up&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;width&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;0&lt;/span&gt;; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;height&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;0&lt;/span&gt;; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;border-left&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;15&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;px&lt;/span&gt; &lt;span style="color:#79c0ff"&gt;solid&lt;/span&gt; &lt;span style="color:#79c0ff"&gt;transparent&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;border-right&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;15&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;px&lt;/span&gt; &lt;span style="color:#79c0ff"&gt;solid&lt;/span&gt; &lt;span style="color:#79c0ff"&gt;transparent&lt;/span&gt;; &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;border-bottom&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;15&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;px&lt;/span&gt; &lt;span style="color:#79c0ff"&gt;solid&lt;/span&gt; &lt;span style="color:#79c0ff"&gt;red&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-create-triangles-in-css-html/file_0_hu_7365863ca9255ef.webp" srcset="https://jetthoughts.com/blog/how-create-triangles-in-css-html/file_0_hu_7365863ca9255ef.webp 293w, https://jetthoughts.com/blog/how-create-triangles-in-css-html/file_0_hu_7365863ca9255ef.webp 293w" sizes="(max-width: 760px) 100vw, 556px" width="293" height="166" alt="Image description" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>How To Setup Default Values For Attributes In Ruby On Rails</title><link>https://jetthoughts.com/blog/how-setup-default-values-for-attributes-in-ruby-on-rails-programming/</link><pubDate>Tue, 19 Jul 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-setup-default-values-for-attributes-in-ruby-on-rails-programming/</guid><description>&lt;p&gt;&lt;em&gt;Have you ever thought setting default values for attributes in Ruby on Rails could be problematic?&lt;/em&gt;&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-setup-default-values-for-attributes-in-ruby-on-rails-programming/file_0_hu_7d906ffd8bef2dd0.webp" srcset="https://jetthoughts.com/blog/how-setup-default-values-for-attributes-in-ruby-on-rails-programming/file_0_hu_7d906ffd8bef2dd0.webp 800w, https://jetthoughts.com/blog/how-setup-default-values-for-attributes-in-ruby-on-rails-programming/file_0_hu_e9ac03425c0c0430.webp 1000w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="336" alt="code example how to set default value for attribute" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Since attributes are uninitialized when a new model is created without any parameters, default values will be set according to the attribute type.&lt;/p&gt;&#10;&lt;p&gt;This idea is perfect if we don&amp;rsquo;t want to fill the database with unnecessary information.&lt;/p&gt;&#10;&lt;p&gt;Ruby on Rails provides many options for adding default values, but not all of them are good.&lt;/p&gt;</description></item><item><title>What is the difference between joins and includes in Rails ActiveRecord?</title><link>https://jetthoughts.com/blog/what-difference-between-joins-includes-in-rails-activerecord-ruby/</link><pubDate>Thu, 14 Jul 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/what-difference-between-joins-includes-in-rails-activerecord-ruby/</guid><description>&lt;p&gt;The main difference is that when using includes the eager loading is used. Eager loading allows you to optimize data retrieval by avoiding additional queries to the database.&lt;/p&gt;&#10;&lt;p&gt;Let’s see how it works with an example:&lt;/p&gt;&#10;&lt;p&gt;&lt;strong&gt;Joins:&lt;/strong&gt;&#10;&lt;img src="https://jetthoughts.com/blog/what-difference-between-joins-includes-in-rails-activerecord-ruby/file_0_hu_3aaa10cabf8c4e4d.webp" srcset="https://jetthoughts.com/blog/what-difference-between-joins-includes-in-rails-activerecord-ruby/file_0_hu_3aaa10cabf8c4e4d.webp 800w, https://jetthoughts.com/blog/what-difference-between-joins-includes-in-rails-activerecord-ruby/file_0_hu_5b73339aa9019388.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="418" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;We have joined tables, but we don’t get any data from the users table. Therefore, each time the user record is accessed, and there is an additional query to the database.&lt;/p&gt;</description></item><item><title>How to use Linear-Gradient in CSS</title><link>https://jetthoughts.com/blog/how-use-linear-gradient-in-css-html/</link><pubDate>Mon, 27 Jun 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-use-linear-gradient-in-css-html/</guid><description>&lt;p&gt;The CSS &lt;code&gt;linear-gradient&lt;/code&gt; function creates an image that consists of a progressive transition between two or more colors along a straight line. The result is a data type object &lt;code&gt;gradient&lt;/code&gt;, which is a special type &lt;code&gt;image&lt;/code&gt;.&lt;/p&gt;&#10;&lt;h2 id="top-to-bottom"&gt;Top to Bottom &lt;a class="hlink" href="#top-to-bottom" aria-label="Link to Top to Bottom"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;In this example shows a linear gradient that starts at the top. It starts blue, transitioning green:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7ee787"&gt;background-image&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;:&lt;/span&gt; &lt;span style="color:#7ee787"&gt;linear-gradient&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#7ee787"&gt;to&lt;/span&gt; &lt;span style="color:#7ee787"&gt;bottom&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;,&lt;/span&gt; &lt;span style="color:#7ee787"&gt;blue&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;,&lt;/span&gt; &lt;span style="color:#7ee787"&gt;green&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;);&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-use-linear-gradient-in-css-html/file_0_hu_5ba75763bb607b88.webp" srcset="https://jetthoughts.com/blog/how-use-linear-gradient-in-css-html/file_0_hu_5ba75763bb607b88.webp 800w, https://jetthoughts.com/blog/how-use-linear-gradient-in-css-html/file_0_hu_4e3017344bd35556.webp 1244w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="142" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="left-to-right"&gt;Left to Right &lt;a class="hlink" href="#left-to-right" aria-label="Link to Left to Right"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;In this example shows a linear gradient that begins on the left. It starts blue, transitioning yellow:&lt;/p&gt;</description></item><item><title>How to use background-size in CSS</title><link>https://jetthoughts.com/blog/how-use-background-size-in-css-html/</link><pubDate>Fri, 17 Jun 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-use-background-size-in-css-html/</guid><description>&lt;p&gt;The CSS background-size property sets the size of the background image of the element. Images can be left to full size, stretched or limited to fit the available space.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7ee787"&gt;background-image&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;:&lt;/span&gt; &lt;span style="color:#7ee787"&gt;url&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#39;some-example-image.jpg&amp;#39;&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;);&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="cover"&gt;Cover &lt;a class="hlink" href="#cover" aria-label="Link to Cover"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7ee787"&gt;background-size&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;:&lt;/span&gt; &lt;span style="color:#7ee787"&gt;cover&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-use-background-size-in-css-html/file_0_hu_245339776c36607d.webp" srcset="https://jetthoughts.com/blog/how-use-background-size-in-css-html/file_0_hu_245339776c36607d.webp 800w, https://jetthoughts.com/blog/how-use-background-size-in-css-html/file_0_hu_5b3cf90570275a50.webp 1215w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="278" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="size-in-pixels-or-percentage"&gt;Size in pixels or percentage &lt;a class="hlink" href="#size-in-pixels-or-percentage" aria-label="Link to Size in pixels or percentage"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7ee787"&gt;background-size&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;:&lt;/span&gt; &lt;span style="color:#7ee787"&gt;300px&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-use-background-size-in-css-html/file_1_hu_d2e95062fea6eb88.webp" srcset="https://jetthoughts.com/blog/how-use-background-size-in-css-html/file_1_hu_d2e95062fea6eb88.webp 800w, https://jetthoughts.com/blog/how-use-background-size-in-css-html/file_1_hu_c61f4ae7e3f7d0bb.webp 1220w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="276" alt="Image description" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7ee787"&gt;background-size&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;:&lt;/span&gt; &lt;span style="color:#7ee787"&gt;15&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;%;&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-use-background-size-in-css-html/file_2_hu_4b3266404fd08742.webp" srcset="https://jetthoughts.com/blog/how-use-background-size-in-css-html/file_2_hu_4b3266404fd08742.webp 800w, https://jetthoughts.com/blog/how-use-background-size-in-css-html/file_2_hu_485a2010d4d282b1.webp 1223w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="275" alt="Image description" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Pitfalls of using metaprogramming in Ruby on Rails application</title><link>https://jetthoughts.com/blog/pitfalls-of-using-metaprogramming-in-ruby-on-rails-application-programming/</link><pubDate>Wed, 15 Jun 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/pitfalls-of-using-metaprogramming-in-ruby-on-rails-application-programming/</guid><description>&lt;p&gt;Do you know that metaprogramming is easy to add but hard to support? Developers underestimated risks related to using metaprogramming in the code, which causes development slowdowns and business financial problems.&lt;/p&gt;&#10;&lt;blockquote&gt;&#10;&lt;p&gt;&lt;em&gt;TL;DR: Cryptic code and indirect dependencies make development unstable and slow&lt;/em&gt;&lt;/p&gt;&#10;&#10;&lt;/blockquote&gt;&#10;&lt;p&gt;Appearances can be deceptive. Metaprogramming and dynamically generated code look like neat solutions which dramatically compress code, but there is a shadow part to it.&lt;/p&gt;&#10;&lt;p&gt;I assembled the most common problems, which were missing from the consideration, and were reasons for the stressful weeks for the whole team.&lt;/p&gt;</description></item><item><title>How to use :nth-child in CSS</title><link>https://jetthoughts.com/blog/how-use-nth-child-in-css-html/</link><pubDate>Mon, 13 Jun 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-use-nth-child-in-css-html/</guid><description>&lt;p&gt;The &lt;code&gt;:nth-child&lt;/code&gt; pseudo-class allows to select one and more elements based on their source order.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#7ee787"&gt;ul&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#7ee787"&gt;li&lt;/span&gt;&amp;gt;One&amp;lt;/&lt;span style="color:#7ee787"&gt;li&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#7ee787"&gt;li&lt;/span&gt;&amp;gt;Two&amp;lt;/&lt;span style="color:#7ee787"&gt;li&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#7ee787"&gt;li&lt;/span&gt;&amp;gt;Three&amp;lt;/&lt;span style="color:#7ee787"&gt;li&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#7ee787"&gt;li&lt;/span&gt;&amp;gt;Four&amp;lt;/&lt;span style="color:#7ee787"&gt;li&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#7ee787"&gt;li&lt;/span&gt;&amp;gt;Five&amp;lt;/&lt;span style="color:#7ee787"&gt;li&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#7ee787"&gt;ul&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Let’s look at simple examples for how this can be do:&lt;/p&gt;&#10;&lt;h2 id="select-the-first-list-item"&gt;Select the first list item &lt;a class="hlink" href="#select-the-first-list-item" aria-label="Link to Select the first list item"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7ee787"&gt;li&lt;/span&gt;:&lt;span style="color:#d2a8ff;font-weight:bold"&gt;nth-child&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;(&lt;/span&gt;&lt;span style="color:#7ee787"&gt;1&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;)&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;color&lt;/span&gt;: &lt;span style="color:#79c0ff"&gt;red&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Also, you can use &lt;code&gt;first-child&lt;/code&gt; pseudo-class for this&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7ee787"&gt;li&lt;/span&gt;:&lt;span style="color:#d2a8ff;font-weight:bold"&gt;first-child&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;color&lt;/span&gt;: &lt;span style="color:#79c0ff"&gt;red&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-use-nth-child-in-css-html/file_0_hu_6ae92b5f1ae610d2.webp" srcset="https://jetthoughts.com/blog/how-use-nth-child-in-css-html/file_0_hu_6ae92b5f1ae610d2.webp 447w, https://jetthoughts.com/blog/how-use-nth-child-in-css-html/file_0_hu_6ae92b5f1ae610d2.webp 447w" sizes="(max-width: 760px) 100vw, 556px" width="447" height="98" alt="Image description" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>How to style a checkbox using CSS</title><link>https://jetthoughts.com/blog/how-style-checkbox-using-css-html/</link><pubDate>Thu, 09 Jun 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-style-checkbox-using-css-html/</guid><description>&lt;p&gt;In this post I’l show you exactly how to make awesome checkboxes with just CSS.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#7ee787"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#7ee787"&gt;input&lt;/span&gt; id&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;first_name&amp;#34;&lt;/span&gt; type&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;checkbox&amp;#34;&lt;/span&gt; checked&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;checked&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#7ee787"&gt;label&lt;/span&gt; for&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;first_name&amp;#34;&lt;/span&gt;&amp;gt;First Name&amp;lt;/&lt;span style="color:#7ee787"&gt;label&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#7ee787"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Let’s take a few simple steps:&lt;/p&gt;&#10;&lt;ul&gt;&#10;&lt;li&gt;Hide the browser’s default checkbox.&lt;/li&gt;&#10;&lt;li&gt;Create a custom checkbox. We will use a pseudo-element &lt;code&gt;:before&lt;/code&gt; for the substrate.&lt;/li&gt;&#10;&lt;li&gt;On mouse-over, add a darkly on 10% background color.&lt;/li&gt;&#10;&lt;li&gt;Style the checkmark/indicator, by pseudo-element &lt;code&gt;:after&lt;/code&gt;&lt;/li&gt;&#10;&lt;li&gt;Show or hide the checkmark when checked.&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;h2 id="hide-the-browsers-default-checkbox"&gt;Hide the browser’s default checkbox &lt;a class="hlink" href="#hide-the-browsers-default-checkbox" aria-label="Link to Hide the browser’s default checkbox"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7ee787"&gt;input&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;position&lt;/span&gt;: &lt;span style="color:#79c0ff"&gt;absolute&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;opacity&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;0&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;height&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;0&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;width&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;0&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="create-a-custom-checkbox"&gt;Create a custom checkbox &lt;a class="hlink" href="#create-a-custom-checkbox" aria-label="Link to Create a custom checkbox"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7ee787"&gt;label&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;position&lt;/span&gt;: &lt;span style="color:#79c0ff"&gt;relative&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;display&lt;/span&gt;: &lt;span style="color:#79c0ff"&gt;block&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;padding-left&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;30&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;px&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;cursor&lt;/span&gt;: &lt;span style="color:#79c0ff"&gt;pointer&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7ee787"&gt;label&lt;/span&gt;:&lt;span style="color:#d2a8ff;font-weight:bold"&gt;before&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;content&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;&amp;#39;&amp;#39;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;position&lt;/span&gt;: &lt;span style="color:#79c0ff"&gt;absolute&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;top&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;50&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;%&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;margin-top&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;-10&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;px&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;left&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;0&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;display&lt;/span&gt;: &lt;span style="color:#79c0ff"&gt;block&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;height&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;20&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;px&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;width&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;20&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;px&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;background-color&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;#50CDBE&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;border-radius&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;3&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;px&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="on-mouse-over-add-a-darkly-on-10-background-color"&gt;On mouse-over, add a darkly on 10% background color &lt;a class="hlink" href="#on-mouse-over-add-a-darkly-on-10-background-color" aria-label="Link to On mouse-over, add a darkly on 10% background color"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7ee787"&gt;label&lt;/span&gt;:&lt;span style="color:#d2a8ff;font-weight:bold"&gt;hover&lt;/span&gt;:&lt;span style="color:#d2a8ff;font-weight:bold"&gt;before&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;background-color&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;#1AE6E6&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="style-the-checkmarkindicator"&gt;Style the checkmark/indicator &lt;a class="hlink" href="#style-the-checkmarkindicator" aria-label="Link to Style the checkmark/indicator"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7ee787"&gt;label&lt;/span&gt;:&lt;span style="color:#d2a8ff;font-weight:bold"&gt;after&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;content&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;&amp;#39;&amp;#39;&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;position&lt;/span&gt;: &lt;span style="color:#79c0ff"&gt;absolute&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;left&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;7&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;px&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;top&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;1&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;px&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;width&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;5&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;px&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;height&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;10&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;px&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;border&lt;/span&gt;: &lt;span style="color:#79c0ff"&gt;solid&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;#333&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;border-width&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;0&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;3&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;px&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;3&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;px&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;0&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;transform&lt;/span&gt;: rotate(&lt;span style="color:#a5d6ff"&gt;45&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;deg&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;opacity&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;0&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="show-or-hide-the-checkmark-when-checked"&gt;Show or hide the checkmark when checked &lt;a class="hlink" href="#show-or-hide-the-checkmark-when-checked" aria-label="Link to Show or hide the checkmark when checked"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#7ee787"&gt;input&lt;/span&gt;:&lt;span style="color:#d2a8ff;font-weight:bold"&gt;checked&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;+&lt;/span&gt; &lt;span style="color:#7ee787"&gt;label&lt;/span&gt;:&lt;span style="color:#d2a8ff;font-weight:bold"&gt;after&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;opacity&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;1&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>Preview UI changes with Ruby on Rails variants</title><link>https://jetthoughts.com/blog/preview-ui-changes-with-ruby-on-rails-variants/</link><pubDate>Wed, 08 Jun 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/preview-ui-changes-with-ruby-on-rails-variants/</guid><description>&lt;p&gt;When implementing new design for a live application we usually don’t want our users to see an unfinished implementation, but we might want to give some users the ability to preview it on the live (production or staging) environment, for designers, product owners, our most loyal customers.&lt;/p&gt;&#10;&lt;p&gt;Here&amp;rsquo;s one of the simplest ways to do it without introducing complex feature switching mechanisms.&lt;/p&gt;&#10;&lt;h2 id="the-rails-way"&gt;The Rails way &lt;a class="hlink" href="#the-rails-way" aria-label="Link to The Rails way"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Fortunately Ruby on Rails got us covered on this one with the help of &lt;a href="https://guides.rubyonrails.org/layouts_and_rendering.html#the-variants-option"&gt;view variants&lt;/a&gt;. In short, it allows us to define several different view templates for the same controller action, and determine which one should be rendered on the controller level.&lt;/p&gt;</description></item><item><title>Generating random strings with Ruby</title><link>https://jetthoughts.com/blog/generating-random-strings-with-ruby-webdev/</link><pubDate>Fri, 03 Jun 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/generating-random-strings-with-ruby-webdev/</guid><description>&lt;p&gt;When you need to generate a random alphanumeric string of a specified length in ruby you have a couple of options.&lt;/p&gt;&#10;&lt;p&gt;If you are using Ruby version &amp;gt;= 2.5 you can simply go with:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#79c0ff;font-weight:bold"&gt;SecureRandom&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;alphanumeric(length)&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;For older versions you can utilize a little numeric convertion hack: &lt;code&gt;Integer#to_s&lt;/code&gt; method accepts an argument representing the base.&#10;For example:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a5d6ff"&gt;13&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;to_s(&lt;span style="color:#a5d6ff"&gt;2&lt;/span&gt;) &lt;span style="color:#8b949e;font-style:italic"&gt;# =&amp;gt; &amp;#34;1101&amp;#34; in binary&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#a5d6ff"&gt;13&lt;/span&gt;&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;to_s(&lt;span style="color:#a5d6ff"&gt;16&lt;/span&gt;) &lt;span style="color:#8b949e;font-style:italic"&gt;# =&amp;gt; &amp;#34;d&amp;#34; in hex&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;def&lt;/span&gt; &lt;span style="color:#d2a8ff;font-weight:bold"&gt;alphanumerical_code&lt;/span&gt;(length)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#8b949e;font-style:italic"&gt;# 36 is used here as base: we want 10 digits plus 26 letters&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#a5d6ff"&gt;36&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;**&lt;/span&gt; (length &lt;span style="color:#ff7b72;font-weight:bold"&gt;-&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;1&lt;/span&gt;) &lt;span style="color:#ff7b72;font-weight:bold"&gt;+&lt;/span&gt; rand(&lt;span style="color:#a5d6ff"&gt;36&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;**&lt;/span&gt; length &lt;span style="color:#ff7b72;font-weight:bold"&gt;-&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;36&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;**&lt;/span&gt; (length &lt;span style="color:#ff7b72;font-weight:bold"&gt;-&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;1&lt;/span&gt;)))&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;to_s(&lt;span style="color:#a5d6ff"&gt;36&lt;/span&gt;) &#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;def&lt;/span&gt; &lt;span style="color:#d2a8ff;font-weight:bold"&gt;digital_code&lt;/span&gt;(length)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; (&lt;span style="color:#a5d6ff"&gt;10&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;**&lt;/span&gt; (length &lt;span style="color:#ff7b72;font-weight:bold"&gt;-&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;1&lt;/span&gt;) &lt;span style="color:#ff7b72;font-weight:bold"&gt;+&lt;/span&gt; rand(&lt;span style="color:#a5d6ff"&gt;10&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;**&lt;/span&gt; length &lt;span style="color:#ff7b72;font-weight:bold"&gt;-&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;10&lt;/span&gt; &lt;span style="color:#ff7b72;font-weight:bold"&gt;**&lt;/span&gt; (length &lt;span style="color:#ff7b72;font-weight:bold"&gt;-&lt;/span&gt; &lt;span style="color:#a5d6ff"&gt;1&lt;/span&gt;)))&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;to_s(&lt;span style="color:#a5d6ff"&gt;10&lt;/span&gt;)&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&lt;span style="color:#ff7b72"&gt;end&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="more-custom-generator"&gt;More custom generator &lt;a class="hlink" href="#more-custom-generator" aria-label="Link to More custom generator"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;In case if you need to build something more specific and have more control, you can create your own generator.&#10;Let&amp;rsquo;s say we need a random alphanumeric string generator, which excludes some of the letters, so the strings are more easily distinguished by customer in printed media.&lt;/p&gt;</description></item><item><title>How to vertically center an element without Flex</title><link>https://jetthoughts.com/blog/how-vertically-center-an-element-without-flex-css-html/</link><pubDate>Fri, 03 Jun 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-vertically-center-an-element-without-flex-css-html/</guid><description>&lt;p&gt;How vertically center with Flex you can view &lt;a href="https://jetthoughts.com/blog/vertical-align-with-full-screen-across-tailwind-css-jetthoughts/"&gt;Vertical align with a full screen across Tailwind CSS&lt;/a&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#7ee787"&gt;div&lt;/span&gt; class&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;outer&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#7ee787"&gt;div&lt;/span&gt; class&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;inner&amp;#34;&lt;/span&gt;&amp;gt;Centered&amp;lt;/&lt;span style="color:#7ee787"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#7ee787"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="transform-translate"&gt;Transform Translate &lt;a class="hlink" href="#transform-translate" aria-label="Link to Transform Translate"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;It’s possible to center it by nudging it up half of it’s height after bumping it down halfway:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.&lt;span style="color:#f0883e;font-weight:bold"&gt;outer&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;position&lt;/span&gt;: &lt;span style="color:#79c0ff"&gt;relative&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;height&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;100&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;vh&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.&lt;span style="color:#f0883e;font-weight:bold"&gt;inner&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;position&lt;/span&gt;: &lt;span style="color:#79c0ff"&gt;absolute&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;top&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;50&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;%&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;transform&lt;/span&gt;: translateY(&lt;span style="color:#a5d6ff"&gt;-50&lt;/span&gt;&lt;span style="color:#ff7b72"&gt;%&lt;/span&gt;);&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="display-table-cell"&gt;Display: Table-Cell &lt;a class="hlink" href="#display-table-cell" aria-label="Link to Display: Table-Cell"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Outer element to be displayed as a &lt;code&gt;table&lt;/code&gt; and the inner element to be displayed as a &lt;code&gt;table-cell&lt;/code&gt; which can then be vertically centered.&lt;/p&gt;</description></item><item><title>How to horizontally center an element without Flex</title><link>https://jetthoughts.com/blog/how-horizontally-center-an-element-without-flex-css-html/</link><pubDate>Wed, 01 Jun 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-horizontally-center-an-element-without-flex-css-html/</guid><description>&lt;p&gt;Centered elements with Flex it is very easy to style, what about not use Flex?&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#7ee787"&gt;div&lt;/span&gt; class&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;wrapper&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#7ee787"&gt;div&lt;/span&gt; class&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;inner&amp;#34;&lt;/span&gt;&amp;gt;Centered&amp;lt;/&lt;span style="color:#7ee787"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#7ee787"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="table"&gt;Table &lt;a class="hlink" href="#table" aria-label="Link to Table"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;It will make the inner element center horizontally and it works without setting a specific width.&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;.&lt;span style="color:#f0883e;font-weight:bold"&gt;wrapper&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;display&lt;/span&gt;: &lt;span style="color:#79c0ff"&gt;table&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;margin&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;0&lt;/span&gt; &lt;span style="color:#79c0ff"&gt;auto&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="fixed-width"&gt;Fixed width &lt;a class="hlink" href="#fixed-width" aria-label="Link to Fixed width"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Need to apply this CSS to the inner. You should set any width less than the containing wrapper will work. The &lt;code&gt;margin: 0&lt;/code&gt; auto is what does the actual centering.&lt;/p&gt;</description></item><item><title>Change input's placeholder color with CSS</title><link>https://jetthoughts.com/blog/change-inputs-placeholder-color-with-css-html/</link><pubDate>Mon, 30 May 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/change-inputs-placeholder-color-with-css-html/</guid><description>&lt;p&gt;Most modern browsers support the simple pseudo-element:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;::&lt;span style="color:#d2a8ff;font-weight:bold"&gt;placeholder&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;color&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;#9400d3&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;but what if you need to apply color to a placeholder in older browsers?&lt;/p&gt;&#10;&lt;h2 id="webkit-blink-and-edge"&gt;WebKit, Blink, and Edge &lt;a class="hlink" href="#webkit-blink-and-edge" aria-label="Link to WebKit, Blink, and Edge"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;WebKit, Blink (Safari, Google Chrome, Opera 15+), and Microsoft Edge are using a pseudo-element &lt;code&gt;::-webkit-input-placeholder&lt;/code&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;::&lt;span style="color:#d2a8ff;font-weight:bold"&gt;-webkit-input-placeholder&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;color&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;#9400d3&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="mozilla-firefox-4-to-18"&gt;Mozilla Firefox 4 to 18 &lt;a class="hlink" href="#mozilla-firefox-4-to-18" aria-label="Link to Mozilla Firefox 4 to 18"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Using a pseudo-class: &lt;code&gt;:-moz-placeholder&lt;/code&gt;&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-css" data-lang="css"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;:&lt;span style="color:#d2a8ff;font-weight:bold"&gt;-moz-placeholder&lt;/span&gt; {&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;color&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;#9400d3&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &lt;span style="color:#ff7b72"&gt;opacity&lt;/span&gt;: &lt;span style="color:#a5d6ff"&gt;1&lt;/span&gt;;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;}&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;Firefox’s placeholder appears to be defaulting with reduced opacity, so needs to use &lt;code&gt;opacity: 1&lt;/code&gt; here.&lt;/p&gt;</description></item><item><title>Tailwind CSS Vertical Center - Full Screen Flexbox</title><link>https://jetthoughts.com/blog/vertical-align-with-full-screen-across-tailwind-css-jetthoughts/</link><pubDate>Mon, 23 May 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/vertical-align-with-full-screen-across-tailwind-css-jetthoughts/</guid><description>&lt;p&gt;How can vertically align an element with Tailwind CSS by Flex?&lt;/p&gt;&#10;&lt;h2 id="justify-center-and-items-center"&gt;Justify-Center and Items-Center &lt;a class="hlink" href="#justify-center-and-items-center" aria-label="Link to Justify-Center and Items-Center"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;ul&gt;&#10;&lt;li&gt;&lt;code&gt;flex&lt;/code&gt; : To use a flex-div as a container.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;h-screen&lt;/code&gt; : To size the container height to the viewport height.&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;justify-center&lt;/code&gt; : To justify center (horizontal center).&lt;/li&gt;&#10;&lt;li&gt;&lt;code&gt;items-center&lt;/code&gt; : To align the items to the center (vertical center).&lt;/li&gt;&#10;&lt;/ul&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-html" data-lang="html"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;&lt;span style="color:#7ee787"&gt;div&lt;/span&gt; class&lt;span style="color:#ff7b72;font-weight:bold"&gt;=&lt;/span&gt;&lt;span style="color:#a5d6ff"&gt;&amp;#34;flex h-screen items-center justify-center&amp;#34;&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt; &amp;lt;&lt;span style="color:#7ee787"&gt;h1&lt;/span&gt;&amp;gt;Title&amp;lt;/&lt;span style="color:#7ee787"&gt;h1&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;&amp;lt;/&lt;span style="color:#7ee787"&gt;div&lt;/span&gt;&amp;gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/vertical-align-with-full-screen-across-tailwind-css-jetthoughts/file_0_hu_9cf3d04191e95d12.webp" srcset="https://jetthoughts.com/blog/vertical-align-with-full-screen-across-tailwind-css-jetthoughts/file_0_hu_9cf3d04191e95d12.webp 552w, https://jetthoughts.com/blog/vertical-align-with-full-screen-across-tailwind-css-jetthoughts/file_0_hu_9cf3d04191e95d12.webp 552w" sizes="(max-width: 760px) 100vw, 556px" width="552" height="571" alt="Image description" loading="lazy"&gt;&lt;/p&gt;</description></item><item><title>Manage Bundler indirect dependencies versions</title><link>https://jetthoughts.com/blog/manage-bundler-indirect-dependencies-versions-ruby-beginners/</link><pubDate>Fri, 20 May 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/manage-bundler-indirect-dependencies-versions-ruby-beginners/</guid><description>&lt;p&gt;Have you seen that bundler stuck on finding how to upgrade your gems? What to do if there is a new breaking version of the indirect dependency, causing deployment fails?&#10;&lt;img src="https://jetthoughts.com/blog/manage-bundler-indirect-dependencies-versions-ruby-beginners/file_0_hu_4cb3bac2d18e98e1.webp" srcset="https://jetthoughts.com/blog/manage-bundler-indirect-dependencies-versions-ruby-beginners/file_0_hu_4cb3bac2d18e98e1.webp 800w, https://jetthoughts.com/blog/manage-bundler-indirect-dependencies-versions-ruby-beginners/file_0_hu_37535c26e688417d.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="147" alt="Bundler looks for options" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;Sometimes we got broken deploy, because of the not supported version of the gem, and it has been used automatically as an indirect dependency.&lt;/p&gt;&#10;&lt;p&gt;Or bundler could find any upgrade because of conflict of the indirect dependencies.&lt;/p&gt;</description></item><item><title>How to get &amp; build full URLs in Rails</title><link>https://jetthoughts.com/blog/how-get-build-full-urls-in-rails-ruby/</link><pubDate>Thu, 19 May 2022 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-get-build-full-urls-in-rails-ruby/</guid><description>&lt;p&gt;There are some cases when you want to get a current request absolute URL. Thankfully, Rails got you covered on this one and provides a simple way for that:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;request&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;original_url&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;This&amp;rsquo;ll return an absolute full URL including schema, host, port, path, and query string, but without anchor though.&lt;/p&gt;&#10;&lt;p&gt;So, for a request to &lt;code&gt;https://example.com/resource?q=first&lt;/code&gt;:&lt;/p&gt;&#10;&lt;div class="highlight"&gt;&lt;pre tabindex="0" style="color:#e6edf3;background-color:#0d1117;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;"&gt;&lt;code class="language-ruby" data-lang="ruby"&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;request&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;original_url &lt;span style="color:#8b949e;font-style:italic"&gt;# =&amp;gt; https://example.com/resource?q=first&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;request&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;fullpath &lt;span style="color:#8b949e;font-style:italic"&gt;# =&amp;gt; /resource?q=first&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;span style="display:flex;"&gt;&lt;span&gt;request&lt;span style="color:#ff7b72;font-weight:bold"&gt;.&lt;/span&gt;path &lt;span style="color:#8b949e;font-style:italic"&gt;# =&amp;gt; /resource&lt;/span&gt;&#10;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="building-full-url"&gt;Building full URL &lt;a class="hlink" href="#building-full-url" aria-label="Link to Building full URL"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;When you need to build a full URL in controller views you can simply use the URL helpers provided by Rails:&lt;/p&gt;</description></item><item><title>Why and how to use TDD. Main tips</title><link>https://jetthoughts.com/blog/why-how-use-tdd-main-tips-testing/</link><pubDate>Fri, 11 Dec 2020 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/why-how-use-tdd-main-tips-testing/</guid><description>&lt;p&gt;&lt;em&gt;How do I start developing the component from scratch? How do I know what architecture it should have? What parameters should the component accept? Could the TDD usage help find the answers?&lt;/em&gt;&lt;/p&gt;&#10;&lt;h3 id="what-is-tdd-and-what-are-its-basic-steps"&gt;What is TDD, and what are its basic steps? &lt;a class="hlink" href="#what-is-tdd-and-what-are-its-basic-steps" aria-label="Link to What is TDD, and what are its basic steps?"&gt;#&lt;/a&gt;&lt;/h3&gt;&lt;p&gt;TDD, or Test-Driven Development in full, is a way to be sure your code coverage is 100% and your system actually meets the requirements defined for it. In this approach to software development, designers create test cases to define and verify what the code will do. TDD is a cycle of several steps:&lt;/p&gt;</description></item><item><title>How to make small, valuable async standups</title><link>https://jetthoughts.com/blog/how-make-small-valuable-async-standups-productivity-development/</link><pubDate>Wed, 30 Sep 2020 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-make-small-valuable-async-standups-productivity-development/</guid><description>&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-make-small-valuable-async-standups-productivity-development/file_0_hu_95ddbcc7baad694e.webp" srcset="https://jetthoughts.com/blog/how-make-small-valuable-async-standups-productivity-development/file_0_hu_95ddbcc7baad694e.webp 800w, https://jetthoughts.com/blog/how-make-small-valuable-async-standups-productivity-development/file_0_hu_3d40489cb50827ca.webp 960w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="344" alt="Alt Text" loading="lazy"&gt;&#10;&lt;em&gt;How to share the current status of the development especially working remotely? How to make the message more understandable, valuable and short at the same time? There are some basic requirements for standups we defined from our experience.&lt;/em&gt;&lt;/p&gt;&#10;&lt;h2 id="why-standups-are-so-important"&gt;Why standups are so important &lt;a class="hlink" href="#why-standups-are-so-important" aria-label="Link to Why standups are so important"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Here are the main reasons why standup is helpful and should be well worked out:&lt;/p&gt;</description></item><item><title>Communication Agreement in a remote environment</title><link>https://jetthoughts.com/blog/communication-agreement-in-remote-environment-agile/</link><pubDate>Tue, 22 Sep 2020 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/communication-agreement-in-remote-environment-agile/</guid><description>&lt;h2 id="communication-agreement-in-a-remote-environment"&gt;Communication Agreement in a remote environment &lt;a class="hlink" href="#communication-agreement-in-a-remote-environment" aria-label="Link to Communication Agreement in a remote environment"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;How to manage tasks remotely? How to build your working day properly?&lt;/p&gt;&#10;&lt;p&gt;For less interruption during the working process, we created a Communication Agreement in &lt;a href="http://jetthoughts.com"&gt;JetThoughts&lt;/a&gt;.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/communication-agreement-in-remote-environment-agile/file_0_hu_7c598d56bd64df6b.webp" srcset="https://jetthoughts.com/blog/communication-agreement-in-remote-environment-agile/file_0_hu_7c598d56bd64df6b.webp 800w, https://jetthoughts.com/blog/communication-agreement-in-remote-environment-agile/file_0_hu_cebf1a00be0c0db0.webp 1600w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="785" alt="Photo by Charles 🇵🇭 on Unsplash" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;p&gt;We need to provide fast feedback to have better chances of closing the case we’re working on, dealing with new tasks and not forgetting about requests, etc.&lt;/p&gt;</description></item><item><title>What are the next steps when your project is failing?</title><link>https://jetthoughts.com/blog/what-are-next-steps-when-your-project-failing-management/</link><pubDate>Tue, 22 Sep 2020 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/what-are-next-steps-when-your-project-failing-management/</guid><description>&lt;p&gt;Projects fail for all kinds of reasons. Customers can change their objectives, key team members can leave for other companies, communication is pure, budgets can disappear, materials can be delayed, and priorities can go un-managed.&lt;/p&gt;&#10;&lt;p&gt;So what are you supposed to do?&lt;/p&gt;&#10;&lt;h2 id="step-1"&gt;&lt;strong&gt;Step 1&lt;/strong&gt; &lt;a class="hlink" href="#step-1" aria-label="Link to Step 1"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;Stop blaming! This is unlikely to be helpful, despite being very tempting. The truth is, project success depends on each and every team member. Every single person’s motivation and proficiency matter. All projects are like a Boat where a leader will show the direction, motivate the team members, and provide them with positive energy from time to time to make sure that all team members remain committed towards a single goal of achieving the project completion milestones.&lt;/p&gt;</description></item><item><title>Who is to blame when a project fails?</title><link>https://jetthoughts.com/blog/who-blame-when-project-fails-blamegame/</link><pubDate>Tue, 22 Sep 2020 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/who-blame-when-project-fails-blamegame/</guid><description>&lt;p&gt;Large projects continue to fail, often with disastrous results for the organizations involved. Do you know the reasons they fail and how to avoid them? Why does this kind of thing keep happening?&lt;/p&gt;&#10;&lt;p&gt;Let’s discover the ways to secure a stable and efficient development lifecycle of yours.&lt;/p&gt;&#10;&lt;h2 id="its-not-me-its-you"&gt;It’s not me, it’s you &lt;a class="hlink" href="#its-not-me-its-you" aria-label="Link to It’s not me, it’s you"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;How many business relationships have ended with those words? Blame and game — two words that should never be joined together.&lt;/p&gt;</description></item><item><title>How to use a Transaction Script(aka Service Objects) in Ruby on Rails. Simple example</title><link>https://jetthoughts.com/blog/how-use-transaction-script-aka-service-objects-in-ruby-on-rails-simple-example/</link><pubDate>Wed, 15 Jul 2020 00:00:00 +0000</pubDate><guid>https://jetthoughts.com/blog/how-use-transaction-script-aka-service-objects-in-ruby-on-rails-simple-example/</guid><description>&lt;p&gt;The logic of small applications can be present as a series of transactions. Using the Transaction Scripts pattern, we get an application that is easier to maintain, to cover with tests and to scale.&lt;/p&gt;&#10;&lt;p&gt;&lt;img src="https://jetthoughts.com/blog/how-use-transaction-script-aka-service-objects-in-ruby-on-rails-simple-example/file_0_hu_e450c55948795281.webp" srcset="https://jetthoughts.com/blog/how-use-transaction-script-aka-service-objects-in-ruby-on-rails-simple-example/file_0_hu_e450c55948795281.webp 800w, https://jetthoughts.com/blog/how-use-transaction-script-aka-service-objects-in-ruby-on-rails-simple-example/file_0_hu_1dd3be38fe3f5c5a.webp 1241w" sizes="(max-width: 760px) 100vw, 556px" width="800" height="193" alt="Alt Text" loading="lazy"&gt;&lt;/p&gt;&#10;&lt;h2 id="the-problem-setup"&gt;The Problem Setup &lt;a class="hlink" href="#the-problem-setup" aria-label="Link to The Problem Setup"&gt;#&lt;/a&gt;&lt;/h2&gt;&lt;p&gt;There is a Ruby on Rails API application that has Post, User, and Like models. Users should be able to like posts.&lt;/p&gt;</description></item></channel></rss>