<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>DEV Community: Shrestha Pandey</title>
    <description>The latest articles on DEV Community by Shrestha Pandey (@shresthapandey).</description>
    <link>https://dev.to/shresthapandey</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3775845%2Fa627b42c-6d80-4c14-ba70-55b0c2cbcc08.jpg</url>
      <title>DEV Community: Shrestha Pandey</title>
      <link>https://dev.to/shresthapandey</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/shresthapandey"/>
    <language>en</language>
    <item>
      <title>Why Is My Code Slow? Big-O Explained With Real Timings</title>
      <dc:creator>Shrestha Pandey</dc:creator>
      <pubDate>Sun, 11 Oct 2026 05:15:57 +0000</pubDate>
      <link>https://dev.to/shresthapandey/why-is-my-code-slow-big-o-explained-with-real-timings-ndd</link>
      <guid>https://dev.to/shresthapandey/why-is-my-code-slow-big-o-explained-with-real-timings-ndd</guid>
      <description>&lt;p&gt;Almost every developer knows Big-O. Many can even say what &lt;code&gt;O(n²)&lt;/code&gt; means. But very few have &lt;em&gt;watched&lt;/em&gt; the real difference happen on their own machine.&lt;/p&gt;

&lt;p&gt;So I ran a small experiment with one simple problem, three ways to solve it, and a stopwatch. The results were bigger than I expected, and I think they explain Big-O better than any textbook.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;You have a list of numbers. Is any number in the list repeated?&lt;/p&gt;

&lt;p&gt;This is a real problem which looks like:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;checking if two users signed up with the same email&lt;/li&gt;
&lt;li&gt;finding duplicate order IDs in a file&lt;/li&gt;
&lt;li&gt;making sure every ticket number in a batch is unique&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;To make the test fair, I used the &lt;strong&gt;hardest case&lt;/strong&gt;: a list with &lt;strong&gt;no duplicates at all&lt;/strong&gt;. That way, every method has to look at the whole list before it can say "no duplicates." &lt;/p&gt;

&lt;h2&gt;
  
  
  Three ways to solve it
&lt;/h2&gt;

&lt;p&gt;Think of a room full of people, and you want to know if two of them share the same name.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Method 1: Ask everyone about everyone (nested loops).&lt;/strong&gt;&lt;br&gt;
You take person 1 and compare them with everybody else. Then person 2 with everybody else. And so on. It is easy to understand, and it is how most of us would write it first.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;has_duplicates_nested&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;n&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;j&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;n&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
            &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;j&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
                &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Method 2: Sort first (sorting).&lt;/strong&gt;&lt;br&gt;
You line everyone up in alphabetical order. Now two people with the same name must be standing &lt;em&gt;next to each other&lt;/em&gt;. You only have to check neighbors.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;has_duplicates_sorted&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;s&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;sorted&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="nf"&gt;range&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;len&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt; &lt;span class="o"&gt;==&lt;/span&gt; &lt;span class="n"&gt;s&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="n"&gt;i&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="mi"&gt;1&lt;/span&gt;&lt;span class="p"&gt;]:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Method 3: Keep a notebook (set).&lt;/strong&gt;&lt;br&gt;
You walk through the list once. For each person, you check your notebook: "Have I seen this name?" If yes, duplicate found. If no, write it down.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;has_duplicates_set&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="n"&gt;seen&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;set&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
    &lt;span class="k"&gt;for&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;items&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;x&lt;/span&gt; &lt;span class="ow"&gt;in&lt;/span&gt; &lt;span class="n"&gt;seen&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
            &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;True&lt;/span&gt;
        &lt;span class="n"&gt;seen&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;add&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;x&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="bp"&gt;False&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What Big-O says
&lt;/h2&gt;

&lt;p&gt;Big-O tells you &lt;strong&gt;how the work grows when the list gets bigger&lt;/strong&gt;.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Method&lt;/th&gt;
&lt;th&gt;Big-O&lt;/th&gt;
&lt;th&gt;What it means&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Nested loops&lt;/td&gt;
&lt;td&gt;&lt;code&gt;O(n²)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Make the list 10× bigger, and the work becomes about &lt;strong&gt;100×&lt;/strong&gt; bigger&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sorting&lt;/td&gt;
&lt;td&gt;&lt;code&gt;O(n log n)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Make the list 10× bigger, and the work becomes a bit &lt;strong&gt;more than 10×&lt;/strong&gt; bigger&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Set (notebook)&lt;/td&gt;
&lt;td&gt;&lt;code&gt;O(n)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;Make the list 10× bigger, and the work becomes about &lt;strong&gt;10×&lt;/strong&gt; bigger&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;On paper, these look like small differences. Let's see what they look like on a real computer.&lt;/p&gt;

&lt;h2&gt;
  
  
  The results
&lt;/h2&gt;

&lt;p&gt;I ran this in Python 3.13 on a normal x86-64 machine. Each number is the best of 3 runs (the 20,000 and 40,000 nested runs are single runs, because they take so long).&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;List size&lt;/th&gt;
&lt;th&gt;Nested loops&lt;/th&gt;
&lt;th&gt;Sorting&lt;/th&gt;
&lt;th&gt;Set&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;td&gt;0.031 s&lt;/td&gt;
&lt;td&gt;0.00019 s&lt;/td&gt;
&lt;td&gt;0.00007 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10,000&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;2.02 s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;0.0019 s&lt;/td&gt;
&lt;td&gt;0.0008 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;100,000&lt;/td&gt;
&lt;td&gt;&lt;em&gt;skipped&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;0.024 s&lt;/td&gt;
&lt;td&gt;0.013 s&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1,000,000&lt;/td&gt;
&lt;td&gt;&lt;em&gt;skipped&lt;/em&gt;&lt;/td&gt;
&lt;td&gt;0.39 s&lt;/td&gt;
&lt;td&gt;0.29 s&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;I skipped nested loops at 100,000 and 1,000,000 on purpose. You'll see why in a moment.&lt;/p&gt;

&lt;p&gt;Here is the same data as a picture. Both axes use a log scale, so each step up is ten times bigger. The dashed line is my estimate for nested loops at sizes I didn't wait for.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyoj7nnq4jfamcvk8rxtf.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.us-east-2.amazonaws.com%2Fuploads%2Farticles%2Fyoj7nnq4jfamcvk8rxtf.png" alt="Line Chart: time to find duplicates against list size for nested loops, sorting and a set. Nested loops climbs steeply, reaching 36.6 seconds at 40,000 items and an estimated 6 hours at 1,000,000. Sorting and set stay close together at 0.39 and 0.29 seconds at 1,000,000." width="800" height="480"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Result 1: At just 10,000 items, nested loops is already about 2,500 times slower
&lt;/h3&gt;

&lt;p&gt;At 10,000 items, the set finished in under a millisecond. The nested loops took &lt;strong&gt;over 2 seconds&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That is roughly &lt;strong&gt;2,500 times slower&lt;/strong&gt;, for a list that is small by real-world standards. 10,000 rows is a tiny table.&lt;/p&gt;

&lt;h3&gt;
  
  
  Result 2: Doubling the list makes nested loops about 4 times slower
&lt;/h3&gt;

&lt;p&gt;This is the &lt;code&gt;O(n²)&lt;/code&gt; signature. I ran nested loops at a few more sizes to see the curve:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;List size&lt;/th&gt;
&lt;th&gt;Nested loops time&lt;/th&gt;
&lt;th&gt;Compared with previous row&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;10,000&lt;/td&gt;
&lt;td&gt;2.0 s&lt;/td&gt;
&lt;td&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;20,000&lt;/td&gt;
&lt;td&gt;7.9 s&lt;/td&gt;
&lt;td&gt;about 4× slower&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;40,000&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;36.6 s&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;about 4.6× slower&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Every time the list doubled, the time went up about four times. That is exactly what &lt;code&gt;n²&lt;/code&gt; predicts: double the input, and you get 2 × 2 = 4 times the work.&lt;/p&gt;

&lt;h3&gt;
  
  
  Result 3: What would 1,000,000 items cost?
&lt;/h3&gt;

&lt;p&gt;I didn't run it, because I didn't want to wait. But we can estimate using the curve above. At 40,000 items the nested loops needed 36.6 seconds. A list of 1,000,000 is 25 times longer, and &lt;code&gt;n²&lt;/code&gt; means 25 × 25 = 625 times the work:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;36.6 s × 625 ≈ &lt;strong&gt;22,800 seconds, or about 6 hours&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;&lt;em&gt;(This is my estimate from the measured curve)&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;The set version did the same job in &lt;strong&gt;0.29 seconds&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  What about sorting vs the set?
&lt;/h2&gt;

&lt;p&gt;Both are fast, and the gap between them is small: at 1,000,000 items, sorting took 0.39 s and the set took 0.29 s.&lt;/p&gt;

&lt;p&gt;On paper, the set is &lt;code&gt;O(n)&lt;/code&gt; and sorting is &lt;code&gt;O(n log n)&lt;/code&gt;, so the set should pull ahead as lists grow. It does, but slowly, because the &lt;code&gt;log n&lt;/code&gt; part grows very gently.&lt;/p&gt;

&lt;p&gt;This is a useful lesson: &lt;strong&gt;not every Big-O gap is a disaster.&lt;/strong&gt; The jump from &lt;code&gt;n²&lt;/code&gt; to &lt;code&gt;n log n&lt;/code&gt; is huge. The jump from &lt;code&gt;n log n&lt;/code&gt; to &lt;code&gt;n&lt;/code&gt; is small. Don't lose sleep over the second one until you have measured that it matters.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why was the nested version so slow?
&lt;/h2&gt;

&lt;p&gt;Count the comparisons. For a list of &lt;code&gt;n&lt;/code&gt; items, nested loops make about &lt;code&gt;n × (n − 1) / 2&lt;/code&gt; comparisons:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;List size&lt;/th&gt;
&lt;th&gt;Comparisons&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1,000&lt;/td&gt;
&lt;td&gt;about 500 thousand&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;10,000&lt;/td&gt;
&lt;td&gt;about 50 million&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;1,000,000&lt;/td&gt;
&lt;td&gt;about &lt;strong&gt;500 billion&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Each time the list got 10× bigger, the number of comparisons got about 100× bigger. At a million items, that is half a trillion comparisons to find out that nothing is repeated.&lt;/p&gt;

&lt;p&gt;The set avoids this by trading a little memory for speed. It remembers what it has seen, so each new item needs only one quick lookup instead of a trip through the whole list.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three lessons I took from this
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;1. Small test data hides bad code.&lt;/strong&gt;&lt;br&gt;
At 1,000 items, even the slow method finished in 0.03 seconds. It looked fine. If you only test on a small sample, &lt;code&gt;O(n²)&lt;/code&gt; code passes review and breaks in production, when the data grows 100 times.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;2. Look for a loop inside a loop.&lt;/strong&gt;&lt;br&gt;
The fastest way to spot trouble is a loop that contains another loop over the same data. Also watch for hidden loops: in Python, &lt;code&gt;x in some_list&lt;/code&gt; is itself a loop. Putting it inside a &lt;code&gt;for&lt;/code&gt; loop quietly gives you nested loops.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;3. A set (or dictionary) is often the cheapest upgrade.&lt;/strong&gt;&lt;br&gt;
"Have I seen this before?" is one of the most common questions in code. A set answers it in roughly one step, no matter how big it is. Many slow programs get fast just by swapping a list for a set.&lt;/p&gt;

&lt;h2&gt;
  
  
  Try it yourself
&lt;/h2&gt;

&lt;p&gt;The whole experiment is one small file. Save it as &lt;code&gt;bench.py&lt;/code&gt; and run &lt;code&gt;python3 bench.py&lt;/code&gt;. It only needs Python.&lt;/p&gt;

&lt;p&gt;Your numbers will be different, because every computer is different. But the &lt;strong&gt;shape&lt;/strong&gt; will be the same: nested loops climbing like a cliff, and the other two staying flat and low.&lt;/p&gt;

&lt;p&gt;Try changing the sizes. Try a list that &lt;em&gt;does&lt;/em&gt; have duplicates near the start and see how the nested version suddenly gets lucky. Experiments like this teach more than any chart.&lt;/p&gt;

&lt;h2&gt;
  
  
  Quick cheat sheet
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;If you see...&lt;/th&gt;
&lt;th&gt;It is probably...&lt;/th&gt;
&lt;th&gt;Be careful when...&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;One loop over the data&lt;/td&gt;
&lt;td&gt;&lt;code&gt;O(n)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;rarely a problem&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sorting the data&lt;/td&gt;
&lt;td&gt;&lt;code&gt;O(n log n)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;rarely a problem&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A loop inside a loop&lt;/td&gt;
&lt;td&gt;&lt;code&gt;O(n²)&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;data can reach tens of thousands of rows&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;code&gt;x in list&lt;/code&gt; inside a loop&lt;/td&gt;
&lt;td&gt;
&lt;code&gt;O(n²)&lt;/code&gt; in disguise&lt;/td&gt;
&lt;td&gt;you can swap the list for a set&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  What to remember
&lt;/h2&gt;

&lt;p&gt;Big-O is all about knowing, before the data grows, whether your code will still be fast when it does.&lt;/p&gt;

&lt;p&gt;At 1,000 items, all three methods looked the same. At 40,000, one of them took 36 seconds. At a million, it would take hours.&lt;/p&gt;

&lt;p&gt;That is why people care about Big-O.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;For more such developer content, &lt;a href="https://vickybytes.com" rel="noopener noreferrer"&gt;visit&lt;/a&gt;&lt;/em&gt;&lt;/p&gt;

</description>
      <category>algorithms</category>
      <category>timecomplexity</category>
      <category>performance</category>
      <category>vickybytes</category>
    </item>
    <item>
      <title>How to Undo Common Git Mistakes Without Panic</title>
      <dc:creator>Shrestha Pandey</dc:creator>
      <pubDate>Sat, 10 Oct 2026 05:04:04 +0000</pubDate>
      <link>https://dev.to/shresthapandey/how-to-undo-common-git-mistakes-without-panic-2ehj</link>
      <guid>https://dev.to/shresthapandey/how-to-undo-common-git-mistakes-without-panic-2ehj</guid>
      <description>&lt;p&gt;Everyone makes mistakes in Git. Like committing to the wrong branch, writing a bad message, or deleting something by accident. The good news is that Git keeps a lot of history, so most mistakes can be fixed.&lt;/p&gt;

&lt;p&gt;In this post, I will go through seven common mistakes and the commands that fix them. For each one, I will say whether the fix is safe or if it can delete work.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. You wrote a bad commit message
&lt;/h2&gt;

&lt;p&gt;If you have not pushed the commit yet, you can change the message of the last commit:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git commit &lt;span class="nt"&gt;--amend&lt;/span&gt; &lt;span class="nt"&gt;-m&lt;/span&gt; &lt;span class="s2"&gt;"Better message here"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This replaces the last commit with a new one. If you already pushed the commit, avoid this. Changing pushed history causes problems for other people on the team.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. You committed too early
&lt;/h2&gt;

&lt;p&gt;Suppose you made a commit, but you forgot a file, or you want to change the code a bit more. Undo the commit and keep your changes:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--soft&lt;/span&gt; HEAD~1
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This removes the last commit, but your changes stay staged, so you can edit and commit again.&lt;/p&gt;

&lt;p&gt;Here is how the three types of &lt;code&gt;reset&lt;/code&gt; differ:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;--soft&lt;/code&gt; removes the commit and keeps your changes staged.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--mixed&lt;/code&gt; (the default) removes the commit and keeps your changes, but unstaged.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;--hard&lt;/code&gt; removes the commit and deletes your changes. Be careful with this one.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  3. You staged a file by mistake
&lt;/h2&gt;

&lt;p&gt;You ran &lt;code&gt;git add&lt;/code&gt; on a file that should not be in the commit. Unstage it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git restore &lt;span class="nt"&gt;--staged&lt;/span&gt; filename.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The file stays changed on your disk. It is just no longer staged. This is safe.&lt;/p&gt;

&lt;p&gt;(In older versions of Git, you may see &lt;code&gt;git reset HEAD filename.js&lt;/code&gt; for the same task.)&lt;/p&gt;

&lt;h2&gt;
  
  
  4. You want to throw away changes in a file
&lt;/h2&gt;

&lt;p&gt;You edited a file, and now you want it back to the last committed version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git restore filename.js
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Warning:&lt;/strong&gt; This cannot be undone. Git has no copy of changes you never committed or staged. Check with &lt;code&gt;git diff&lt;/code&gt; first if you are not sure.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. You committed to the wrong branch
&lt;/h2&gt;

&lt;p&gt;This often happens when you forget to create a new branch. Say you made a commit on &lt;code&gt;main&lt;/code&gt;, but it should be on a new branch called &lt;code&gt;feature&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;First, create the new branch at your current commit. This keeps the commit safe:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch feature
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Next, move &lt;code&gt;main&lt;/code&gt; back to match the remote version:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reset &lt;span class="nt"&gt;--hard&lt;/span&gt; origin/main
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Last, switch to your new branch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git switch feature
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your commit is now on &lt;code&gt;feature&lt;/code&gt;, and &lt;code&gt;main&lt;/code&gt; is clean. Note that &lt;code&gt;git reset --hard&lt;/code&gt; deletes any uncommitted changes, so commit or stash them first.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. You pushed a bad commit
&lt;/h2&gt;

&lt;p&gt;When a commit is already pushed and shared, do not rewrite history. Use &lt;code&gt;revert&lt;/code&gt; instead:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git revert &amp;lt;commit-hash&amp;gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This creates a new commit that does the opposite of the bad one. The history stays honest, and nobody's work breaks. This is the safe way to undo shared work.&lt;/p&gt;

&lt;p&gt;You can find the commit hash with &lt;code&gt;git log --oneline&lt;/code&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. You lost commits or deleted a branch
&lt;/h2&gt;

&lt;p&gt;This is where &lt;code&gt;reflog&lt;/code&gt; helps. Git records every place &lt;code&gt;HEAD&lt;/code&gt; has been, even after a hard reset or a deleted branch:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git reflog
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You will see a list like this:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;a1b2c3d HEAD@{0}: reset: moving to HEAD~2
e4f5a6b HEAD@{1}: commit: Add login form
c7d8e9f HEAD@{2}: commit: Add user model
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Find the commit you want back, and create a branch from it:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;git branch recovered e4f5a6b
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Your work is back on a new branch called &lt;code&gt;recovered&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Reflog entries do not last forever. By default, Git keeps them for about 30 to 90 days, so recover lost work soon after it happens. Also, reflog only tracks commits. It cannot bring back changes that were never committed.&lt;/p&gt;

&lt;h2&gt;
  
  
  A few safety habits
&lt;/h2&gt;

&lt;p&gt;These small habits make mistakes less painful:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;
&lt;strong&gt;Commit often.&lt;/strong&gt; A commit is a safety point, because uncommitted work is the hardest to recover.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Check before you delete.&lt;/strong&gt; Run &lt;code&gt;git status&lt;/code&gt; and &lt;code&gt;git diff&lt;/code&gt; before commands like &lt;code&gt;reset --hard&lt;/code&gt; or &lt;code&gt;restore&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Make a backup branch.&lt;/strong&gt; Before a risky command, run &lt;code&gt;git branch backup&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Avoid force push on shared branches.&lt;/strong&gt; If you must, use &lt;code&gt;git push --force-with-lease&lt;/code&gt;. It refuses to overwrite work you have not seen.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Read the command first.&lt;/strong&gt; If you do not know what a command does, check the docs with &lt;code&gt;git help &amp;lt;command&amp;gt;&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Quick reference
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Problem&lt;/th&gt;
&lt;th&gt;Command&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Bad last commit message&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git commit --amend -m "..."&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Undo last commit, keep changes&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git reset --soft HEAD~1&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Unstage a file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git restore --staged &amp;lt;file&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Discard changes in a file&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git restore &amp;lt;file&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Undo a pushed commit&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git revert &amp;lt;hash&amp;gt;&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Find lost commits&lt;/td&gt;
&lt;td&gt;&lt;code&gt;git reflog&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;Git feels difficult at first, but it is built to protect your work. Most of the time, a commit you made is still there, even if it looks gone. When something goes wrong, stop, run &lt;code&gt;git status&lt;/code&gt; and &lt;code&gt;git reflog&lt;/code&gt;, and think before you run the next command.&lt;/p&gt;

&lt;p&gt;Which Git mistake have you made the most? Tell me in the comments.&lt;/p&gt;

</description>
      <category>git</category>
      <category>webdev</category>
      <category>productivity</category>
      <category>programming</category>
    </item>
    <item>
      <title>Hacktoberfest 2026: The Complete Guide (New Rules, Dates, Swag, and How to Join)</title>
      <dc:creator>Shrestha Pandey</dc:creator>
      <pubDate>Mon, 28 Sep 2026 13:37:24 +0000</pubDate>
      <link>https://dev.to/shresthapandey/hacktoberfest-2026-the-complete-guide-new-rules-dates-swag-and-how-to-join-480f</link>
      <guid>https://dev.to/shresthapandey/hacktoberfest-2026-the-complete-guide-new-rules-dates-swag-and-how-to-join-480f</guid>
      <description>&lt;p&gt;If you remember Hacktoberfest as "open four pull requests, get a T-shirt," that version is over. Hacktoberfest 2026 is a different event, and a lot of guides online are still out of date. This one covers what changed, what is confirmed, what is still unannounced, and how to get the most out of&lt;br&gt;
October.&lt;/p&gt;

&lt;p&gt;&lt;em&gt;Last updated: September 28, 2026. Details are still being published, so check the official links at the bottom.&lt;/em&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Table of contents
&lt;/h2&gt;

&lt;ol&gt;
&lt;li&gt;Quick facts&lt;/li&gt;
&lt;li&gt;What changed in 2026 (and why)&lt;/li&gt;
&lt;li&gt;Who can participate&lt;/li&gt;
&lt;li&gt;Ways to take part&lt;/li&gt;
&lt;li&gt;The online calendar&lt;/li&gt;
&lt;li&gt;Swag: what you can and can't get&lt;/li&gt;
&lt;li&gt;How to host a Fest&lt;/li&gt;
&lt;li&gt;Contributing to open source anyway&lt;/li&gt;
&lt;li&gt;A one-week starter plan&lt;/li&gt;
&lt;li&gt;FAQ&lt;/li&gt;
&lt;li&gt;Official sources&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  1. Quick facts
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Runs&lt;/td&gt;
&lt;td&gt;Throughout October 2026&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Organizers&lt;/td&gt;
&lt;td&gt;Major League Hacking (MLH) and DEV, in partnership with DigitalOcean&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Theme&lt;/td&gt;
&lt;td&gt;Open-source AI and open-weight models ("AI belongs to everyone")&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Format&lt;/td&gt;
&lt;td&gt;300+ in-person events ("Fests") plus online events&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PR counting&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;No&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Age&lt;/td&gt;
&lt;td&gt;13 and older, subject to U.S. export controls and embargo restrictions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost&lt;/td&gt;
&lt;td&gt;Global Hack Week: free to register. Check each Fest and challenge page for its own terms.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  2. What changed in 2026 (and why)
&lt;/h2&gt;

&lt;p&gt;Hacktoberfest started in 2014 at DigitalOcean with a simple challenge: open four pull requests in October and earn a T-shirt. It introduced a lot of people to open source.&lt;/p&gt;

&lt;p&gt;Over time the format created a problem. Maintainers were flooded with low-effort, box-checking pull requests, and AI tools made it trivial to generate more. The organizers say the event meant to help maintainers had started to burden them.&lt;/p&gt;

&lt;p&gt;So for 2026:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;PRs are not counted&lt;/strong&gt; toward participation or rewards.&lt;/li&gt;
&lt;li&gt;The focus is on &lt;strong&gt;learning and building with open-source AI&lt;/strong&gt;. The organizers give examples like writing your first open-source &lt;code&gt;skills.md&lt;/code&gt;, building an open-source agent, or fine-tuning an open-weight model.&lt;/li&gt;
&lt;li&gt;The main format is &lt;strong&gt;community events&lt;/strong&gt;, plus an online program.&lt;/li&gt;
&lt;li&gt;MLH and DEV are now full partners with DigitalOcean in running it.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Important:&lt;/strong&gt; contributing to open source is still encouraged. It just isn't what earns Hacktoberfest swag anymore.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Who can participate
&lt;/h2&gt;

&lt;p&gt;Anyone 13 or older, worldwide, subject to U.S. export controls and embargo restrictions. Swag shipments and Fests also exclude locations embargoed or sanctioned by the U.S.&lt;/p&gt;

&lt;p&gt;For the online Global Hack Week (below), registration asks you to confirm you're over 18 or have a parent's permission.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Ways to take part
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Attend an in-person Fest
&lt;/h3&gt;

&lt;p&gt;A Fest is an official in-person event of up to 12 hours. Use the &lt;a href="https://hacktoberfest.com/fests/" rel="noopener noreferrer"&gt;Find a Fest page&lt;/a&gt; to search by name, city, or country.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Hack Day&lt;/th&gt;
&lt;th&gt;Meet Up&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Style&lt;/td&gt;
&lt;td&gt;Structured mini hackathon building open-source AI projects&lt;/td&gt;
&lt;td&gt;Talks, workshops, panels, social discussion&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Swag&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes (stickers, T-shirts, postcards)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Prize categories&lt;/td&gt;
&lt;td&gt;Yes, plus DEV Badges&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Organizer food/drink reimbursement&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Join the online program
&lt;/h3&gt;

&lt;p&gt;For people who can't reach a Fest, there is an online event running throughout October (see the calendar below).&lt;/p&gt;

&lt;h3&gt;
  
  
  Host your own Fest
&lt;/h3&gt;

&lt;p&gt;Covered in section 7.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. The online calendar
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Confirmed on official pages:&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Event&lt;/th&gt;
&lt;th&gt;Dates&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://dev.to/challenges/hacktoberfest-weekend-2026-10-01"&gt;Weekend Challenge&lt;/a&gt; (DEV)&lt;/td&gt;
&lt;td&gt;Starts October 2&lt;/td&gt;
&lt;td&gt;Short-form kickoff challenge, cash prizes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/challenges/hacktoberfest-week1-2026-10-05"&gt;Open-Source AI Challenge: Week 1&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Starts October 5&lt;/td&gt;
&lt;td&gt;Cash prizes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/challenges/hacktoberfest-week2-2026-10-12"&gt;Week 2&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Starts October 12&lt;/td&gt;
&lt;td&gt;Cash prizes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/challenges/hacktoberfest-week3-2026-10-19"&gt;Week 3&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Starts October 19&lt;/td&gt;
&lt;td&gt;Cash prizes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="https://dev.to/challenges/hacktoberfest-week4-2026-10-26"&gt;Week 4&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;Starts October 26&lt;/td&gt;
&lt;td&gt;Cash prizes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;
&lt;a href="https://events.mlh.com/events/14553-global-hack-week-hacktoberfest" rel="noopener noreferrer"&gt;Global Hack Week: Hacktoberfest&lt;/a&gt; (MLH)&lt;/td&gt;
&lt;td&gt;October 9, 12:00 PM EDT to October 15, 1:00 PM EDT&lt;/td&gt;
&lt;td&gt;Online, free registration&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;What Global Hack Week includes&lt;/strong&gt;, per its event page: daily live-streamed workshops on Twitch, mini-events in the MLH Community Discord, and challenges (social, technical, and design) where you earn points, including a point each time you check in to a live session. Registration asks for a GitHub username (or "N/A").&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Not yet announced:&lt;/strong&gt; the prompts for each DEV challenge, prize amounts, number of winners, and judging criteria. Each challenge page publishes its&lt;br&gt;
own terms when it goes live. Read those before building anything for a prize.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Time zones:&lt;/strong&gt; convert times yourself. For example, Global Hack Week starts at 16:00 UTC on October 9, which is 9:30 PM in India (IST).&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Swag: what you can and can't get
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Item&lt;/th&gt;
&lt;th&gt;Who gets it&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;T-shirts&lt;/td&gt;
&lt;td&gt;In-person Fests only, sent to organizers who distribute them at their discretion. &lt;strong&gt;Not guaranteed&lt;/strong&gt;, and online participants are &lt;strong&gt;not eligible&lt;/strong&gt;.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Stickers (MLH, DigitalOcean)&lt;/td&gt;
&lt;td&gt;Sent to every in-person Fest&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Swag Envelope&lt;/td&gt;
&lt;td&gt;Online participants who complete participation milestones. Contains custom stickers and other envelope-friendly items. &lt;strong&gt;Milestones not yet published.&lt;/strong&gt;
&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Postcards&lt;/td&gt;
&lt;td&gt;Listed in the FAQ for Meet Ups. Fest packs otherwise list MLH and DigitalOcean stickers and T-shirts.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Swag Envelopes ship after Hacktoberfest ends and should reach most destinations within 30 to 60 days.&lt;/p&gt;

&lt;p&gt;To be eligible for physical swag from Global Hack Week, the registration form says you must fill out &lt;a href="https://hackp.ac/address" rel="noopener noreferrer"&gt;MLH's shipping address form&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. How to host a Fest
&lt;/h2&gt;

&lt;p&gt;You don't need a big team. The organizers say a meetup group, university club, or a few coworkers with a conference room is enough.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What organizers get:&lt;/strong&gt; stickers and T-shirts for participants, programming support, and a listing in the searchable gallery on &lt;a href="https://hacktoberfest.com" rel="noopener noreferrer"&gt;hacktoberfest.com&lt;/a&gt;, promoted through MLH and DEV channels.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Requirements:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A safe, accessible in-person venue for 3 to 12 hours, with reliable Wi-Fi, power outlets, seating, and AV equipment&lt;/li&gt;
&lt;li&gt;MLH's &lt;strong&gt;OrganizerHQ&lt;/strong&gt; for registration and check-in (Hack Days also use it for project submissions and judging)&lt;/li&gt;
&lt;li&gt;After the event: high-resolution photos, verified check-in data, winner records, and food/beverage receipts (Hack Days)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Funding:&lt;/strong&gt; Hack Days can get reimbursement for approved food and drink, up to a cap. Meet Ups and corporate partner hosts aren't eligible.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Timing:&lt;/strong&gt; apply through the &lt;a href="https://organize.mlh.com/host/hacktoberfest-2026" rel="noopener noreferrer"&gt;host portal&lt;/a&gt;. Applications are reviewed on a rolling basis, typically confirmed in under a week. The &lt;a href="https://mlh.gitbook.io/mlh-hacktoberfest-organizer-guide" rel="noopener noreferrer"&gt;organizer guide&lt;/a&gt; explains the process. September is "Preptember," the planning period before hacking begins in October.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Contributing to open source anyway
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;This section is general open-source advice, not official Hacktoberfest guidance.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;The official FAQ says open source runs all year and you can start any time. If you want to contribute this month, do it in a way maintainers appreciate:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Pick the right project&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recent commits and responsive maintainers&lt;/li&gt;
&lt;li&gt;A &lt;code&gt;CONTRIBUTING.md&lt;/code&gt; you can actually follow&lt;/li&gt;
&lt;li&gt;A license file&lt;/li&gt;
&lt;li&gt;Labels like &lt;code&gt;good first issue&lt;/code&gt; or &lt;code&gt;help wanted&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Pick the right issue&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Still open, and not assigned to someone else&lt;/li&gt;
&lt;li&gt;No competing pull request already linked&lt;/li&gt;
&lt;li&gt;Small enough to finish and test&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Before writing code&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Read &lt;code&gt;CONTRIBUTING.md&lt;/code&gt;, the code of conduct, and the PR template.&lt;/li&gt;
&lt;li&gt;Reproduce the problem yourself.&lt;/li&gt;
&lt;li&gt;Comment on the issue to say you'd like to work on it and how you plan to
approach it. Some projects require assignment first.&lt;/li&gt;
&lt;li&gt;Search closed issues and PRs to avoid duplicating work.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;In your pull request&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Keep it focused on one problem.&lt;/li&gt;
&lt;li&gt;Add or update a test that fails before your change and passes after it.&lt;/li&gt;
&lt;li&gt;Explain what you changed and how you verified it.&lt;/li&gt;
&lt;li&gt;Follow the project's AI-use policy if it has one. Don't submit code you can't explain.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Low-noise ways to help:&lt;/strong&gt; improving documentation, fixing broken links, adding tests, triaging or reproducing bug reports, and translating docs.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. A one-week starter plan
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;This section is general open-source advice, not official Hacktoberfest guidance.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Day&lt;/th&gt;
&lt;th&gt;Goal&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;Create a DEV account, register for Global Hack Week, join the MLH Discord, submit your shipping address&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;2&lt;/td&gt;
&lt;td&gt;Follow each DEV challenge page and note the dates&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;3&lt;/td&gt;
&lt;td&gt;Pick a lane: agent, skill, model fine-tuning, evaluation, or docs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;4&lt;/td&gt;
&lt;td&gt;Set up a public repo with a license and README&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;5&lt;/td&gt;
&lt;td&gt;Build the smallest working version&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;6&lt;/td&gt;
&lt;td&gt;Add tests and setup instructions&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;7&lt;/td&gt;
&lt;td&gt;Write it up and share it (a DEV post works well)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Don't build a "prize entry" before the prompt is published. Build a reusable project skeleton instead.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. FAQ
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Does Hacktoberfest 2026 count pull requests?&lt;/strong&gt;&lt;br&gt;
No. The official FAQ says the event has moved away from counting them.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is Hacktoberfest 2026 free?&lt;/strong&gt;&lt;br&gt;
Global Hack Week registration is free. Fests and DEV challenges have their own terms, so check each event page.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I get a T-shirt if I join online?&lt;/strong&gt;&lt;br&gt;
No. Online participants aren't eligible for T-shirts.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How do I get swag online?&lt;/strong&gt;&lt;br&gt;
Online participants can earn an official Swag Envelope by completing participation milestones, which haven't been announced yet. Global Hack Week registration also asks you to submit a shipping address for stickers and swag. Check the &lt;a href="https://ghw.mlh.io/" rel="noopener noreferrer"&gt;Global Hack Week page&lt;/a&gt; for what's offered.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Can I join without attending a Fest?&lt;/strong&gt;&lt;br&gt;
Yes, via the online program.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Is there an official list of participating repositories?&lt;/strong&gt;&lt;br&gt;
None has been announced. Since PRs aren't the reward mechanism this year, don't expect one.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Do I need a GPU?&lt;/strong&gt;&lt;br&gt;
Not for everything. Docs, tests, evaluation tools, and small fine-tuning experiments can run on a normal laptop, but large model work may need more hardware.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Are the cash prizes confirmed?&lt;/strong&gt;&lt;br&gt;
The DEV hub labels all five challenges as having cash prizes. Amounts haven't been announced.&lt;/p&gt;

&lt;h2&gt;
  
  
  11. Official sources
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://hacktoberfest.com/" rel="noopener noreferrer"&gt;Hacktoberfest 2026&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hacktoberfest.com/questions/" rel="noopener noreferrer"&gt;Official FAQ&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hacktoberfest.com/fests/" rel="noopener noreferrer"&gt;Find a Fest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://hacktoberfest.com/host/" rel="noopener noreferrer"&gt;Host a Fest&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.mlh.com/hacktoberfest-2026-ai-belongs-to-everyone-3jl8" rel="noopener noreferrer"&gt;MLH announcement: "AI belongs to everyone"&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://dev.to/challenges/hacktoberfest"&gt;DEV Hacktoberfest challenges&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://events.mlh.com/events/14553-global-hack-week-hacktoberfest" rel="noopener noreferrer"&gt;Global Hack Week: Hacktoberfest&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more such informational developer content, &lt;a href="https://vickybytes.com" rel="noopener noreferrer"&gt;visit&lt;/a&gt;&lt;/p&gt;

</description>
      <category>hacktoberfest</category>
      <category>opensource</category>
      <category>ai</category>
      <category>vickybytes</category>
    </item>
    <item>
      <title>GitHub Just Killed SHA-1 Over HTTPS</title>
      <dc:creator>Shrestha Pandey</dc:creator>
      <pubDate>Sun, 27 Sep 2026 19:05:52 +0000</pubDate>
      <link>https://dev.to/shresthapandey/github-just-killed-sha-1-over-https-4nj5</link>
      <guid>https://dev.to/shresthapandey/github-just-killed-sha-1-over-https-4nj5</guid>
      <description>&lt;p&gt;On September 15, 2026, GitHub turned off SHA-1 for HTTPS and TLS on github.com and its CDNs. They had been warning about it since April. If your client can't do a TLS handshake without SHA-1, you now get a connection error.&lt;/p&gt;

&lt;p&gt;I'll skip the history lesson on SHA-1. What I want to cover is why this took until 2026 to finally happen, and how to check your own setup first.&lt;/p&gt;

&lt;h4&gt;
  
  
  Why was SHA-1 still around
&lt;/h4&gt;

&lt;p&gt;TLS handshake is the part where your client and github.com agree on how to verify the certificate. It has nothing to do with Git's own object hashing, which is a separate, much slower migration to SHA-256 that most repos haven't touched yet.&lt;/p&gt;

&lt;p&gt;Old clients kept SHA-1 alive in that handshake. GitHub kept SHA-1 working in TLS for years so those clients wouldn't just stop connecting.&lt;/p&gt;

&lt;p&gt;The rollout went like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;April 20, 2026:&lt;/strong&gt; GitHub announced the change and warned about a brownout coming&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;July 14, 2026:&lt;/strong&gt; an 18-hour brownout, 00:00 to 18:00 UTC, where SHA-1 was turned off just long enough for people to notice&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;September 15, 2026:&lt;/strong&gt; SHA-1 turned off for good&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  A ten-second test you can run right now
&lt;/h4&gt;

&lt;p&gt;GitHub had already disabled SHA-1 on &lt;code&gt;github.dev&lt;/code&gt; early, so you can use it as a canary:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;curl &lt;span class="nt"&gt;-v&lt;/span&gt; https://github.dev 2&amp;gt;&amp;amp;1 | &lt;span class="nb"&gt;grep&lt;/span&gt; &lt;span class="nt"&gt;-i&lt;/span&gt; &lt;span class="s2"&gt;"SSL connect&lt;/span&gt;&lt;span class="se"&gt;\|&lt;/span&gt;&lt;span class="s2"&gt;handshake"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A clean connection means your TLS stack is fine. A handshake error means you were already going to break on the real deadline, and now you know early.&lt;/p&gt;

&lt;p&gt;Run this everywhere that talks to GitHub, especially:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;CI runners, especially self-hosted ones with old base images&lt;/li&gt;
&lt;li&gt;servers that pull from GitHub unattended, deploy scripts, cron jobs&lt;/li&gt;
&lt;li&gt;internal tools hitting the GitHub API directly instead of through an SDK&lt;/li&gt;
&lt;/ul&gt;

&lt;h4&gt;
  
  
  What actually broke
&lt;/h4&gt;

&lt;p&gt;Affected: github.com, GitHub Enterprise Cloud, GitHub Enterprise Cloud with Data Residency, and partner CDNs. Not affected: GitHub Enterprise Server, the self-hosted version. If your org runs GHES, none of this touches you.&lt;/p&gt;

&lt;p&gt;Inside that affected scope, the failures came from outdated crypto libraries: old &lt;code&gt;curl&lt;/code&gt;/&lt;code&gt;libcurl&lt;/code&gt;, unpatched .NET Framework builds, stale Python &lt;code&gt;ssl&lt;/code&gt; modules, Alpine Docker images whose &lt;code&gt;openssl&lt;/code&gt; never got bumped. Browsers have supported modern certs for almost a decade, so regular users on anything recent never noticed.&lt;/p&gt;

&lt;p&gt;Most of the people who got hit were running infrastructure they'd forgotten about. &lt;/p&gt;

&lt;h4&gt;
  
  
  If it broke for you
&lt;/h4&gt;

&lt;p&gt;The fix is dull, in a good way:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Update your TLS library, &lt;code&gt;openssl&lt;/code&gt;, &lt;code&gt;libcurl&lt;/code&gt;, whatever your runtime uses&lt;/li&gt;
&lt;li&gt;Rebuild the CI base image rather than patching it. If it's old enough to hit this, other things on it are stale too&lt;/li&gt;
&lt;li&gt;Run the &lt;code&gt;github.dev&lt;/code&gt; check again to confirm&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;If you're stuck on something you truly can't update, some locked-down embedded box, there's no workaround here. GitHub isn't turning SHA-1 back on. The real fix is getting off that system.&lt;/p&gt;

&lt;h4&gt;
  
  
  The pattern worth remembering
&lt;/h4&gt;

&lt;p&gt;Announce early. Run a scoped brownout as a fire drill. Give people a canary URL so they can check themselves. Then cut it for real. Most companies skip straight to a changelog post and hope nobody's affected. That's probably why so few people noticed this happening in real time. The brownout did its job.&lt;/p&gt;

&lt;p&gt;Go run that &lt;code&gt;curl&lt;/code&gt; command against &lt;code&gt;github.dev&lt;/code&gt; on whatever CI box you haven't looked at lately. It's probably fine. But "probably" is exactly why you should check.&lt;/p&gt;

&lt;p&gt;For more such articles, &lt;a href="https://vickybytes.com" rel="noopener noreferrer"&gt;click&lt;/a&gt;&lt;/p&gt;

</description>
      <category>git</category>
      <category>tls</category>
      <category>cybersecurity</category>
      <category>vickybytes</category>
    </item>
    <item>
      <title>Jev vs. LLMs: What Happens When You Strip Text Generation Out of a Language Model</title>
      <dc:creator>Shrestha Pandey</dc:creator>
      <pubDate>Wed, 23 Sep 2026 18:48:05 +0000</pubDate>
      <link>https://dev.to/shresthapandey/jev-vs-llms-what-happens-when-you-strip-text-generation-out-of-a-language-model-2lce</link>
      <guid>https://dev.to/shresthapandey/jev-vs-llms-what-happens-when-you-strip-text-generation-out-of-a-language-model-2lce</guid>
      <description>&lt;p&gt;If you spent any time on AI, Twitter/X or Hacker News around September 15, 2026, you probably saw the word "Jev" on your feeds without much context. It's the first public model from a new startup called &lt;strong&gt;TypeSafe AI&lt;/strong&gt;, and it's built around a genuinely different premise, i.e, what if a model never generated a single word of text?&lt;/p&gt;

&lt;p&gt;I went and read the primary sources like TypeSafe's own &lt;a href="https://typesafe.ai/blog/introducing-system-one-models-and-jev" rel="noopener noreferrer"&gt;announcement post&lt;/a&gt;, the &lt;a href="https://www.langchain.com/blog/building-a-harness-with-jev" rel="noopener noreferrer"&gt;LangChain integration writeup&lt;/a&gt;, and the surrounding community discussion, so you don't have to reconstruct the story from screenshots. Here's what Jev is, how it differs architecturally from the LLMs we all use daily, and where it does (and doesn't) make sense to reach for it.&lt;/p&gt;

&lt;h2&gt;
  
  
  The one-sentence pitch
&lt;/h2&gt;

&lt;p&gt;TypeSafe's founder, Diogo Almeida, a former OpenAI researcher who worked on the RLHF methods behind ChatGPT, frames Jev as "a frontier-intelligence function call: unstructured state in, typed probabilistic decisions out." You give it a &lt;strong&gt;state&lt;/strong&gt; (context) and a set of typed &lt;strong&gt;questions&lt;/strong&gt;, and it returns calibrated probabilities in a single forward pass.&lt;/p&gt;

&lt;p&gt;TypeSafe calls this category of model a &lt;strong&gt;"System 1" model&lt;/strong&gt;, borrowing Daniel Kahneman's fast/slow-thinking framing: LLMs do deliberate, sequential "System 2" reasoning; Jev does fast, intuitive "System 1" pattern-matching, packaged as software-callable structured output.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's different architecturally
&lt;/h2&gt;

&lt;p&gt;The core distinction is the output mechanism.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Autoregressive LLMs&lt;/strong&gt; generate one token at a time, each conditioned on everything before it. That's why a long response takes longer than a short one, why streaming exists, and why a single "yes/no" answer still costs you a forward pass per token even when the model could've committed to an answer after the first few.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Jev doesn't do that.&lt;/strong&gt; According to TypeSafe, it uses a non-autoregressive architecture with a parallel sampler — it produces every requested output simultaneously in one pass, regardless of how many questions you ask about the same state. Response times land in the 70–500ms range, versus the 3–329 seconds TypeSafe cites for frontier LLMs on comparable tasks (their own benchmark reference is &lt;a href="https://llm-benchmarks.diegoromero.es/" rel="noopener noreferrer"&gt;here&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;Independent speculation about the underlying architecture (notably a post from someone who ran the question through a paper-search tool) suggested Jev looks like a large schema-conditioned bidirectional encoder with parallel label-query heads, scaled well past typical classifier sizes, rather than anything exotic. TypeSafe hasn't published weights or a paper, so that's an educated guess from public behavior, not confirmed architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  The API surface: state + questions
&lt;/h2&gt;

&lt;p&gt;Instead of a chat completions endpoint, Jev's API takes a &lt;code&gt;state&lt;/code&gt; and a dictionary of &lt;code&gt;questions&lt;/code&gt;, each typed as one of three kinds:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;noul&lt;/code&gt;&lt;/strong&gt; — yes/no, returns a probability the statement is true&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;choice&lt;/code&gt;&lt;/strong&gt; — pick from a fixed set of options, returns per-option probabilities plus overall confidence&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;&lt;code&gt;score&lt;/code&gt;&lt;/strong&gt; — rate against ordered levels (low/medium/high), returns a continuous score and confidence
A minimal request looks like this:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"model"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"jev-latest"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"state"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"Hi, I've been trying to connect my Stripe account for 3 days and it keeps failing. I'm losing sales. Please help ASAP."&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"questions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"is_urgent"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"noul"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
      &lt;/span&gt;&lt;span class="nl"&gt;"instructions"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"The message conveys urgency or time-sensitivity"&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;And the response is exactly what you'd want to branch on in application code:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight json"&gt;&lt;code&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="nl"&gt;"is_urgent"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="p"&gt;{&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"type"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="s2"&gt;"noul"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="w"&gt;
    &lt;/span&gt;&lt;span class="nl"&gt;"noul"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;&lt;span class="w"&gt; &lt;/span&gt;&lt;span class="mf"&gt;0.999&lt;/span&gt;&lt;span class="w"&gt;
  &lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="w"&gt;
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Crucially, you can pack multiple questions into one request against the same state, and because sampling is parallel, adding more questions barely moves latency. That's a meaningfully different cost model than an LLM, where every additional thing you ask for costs proportional generation time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Training: RLCD instead of RLHF/RLVR
&lt;/h2&gt;

&lt;p&gt;LLMs today are typically post-trained with RLHF (optimizing for what human raters prefer) or RLVR (optimizing for programmatically verifiable rewards — math, code execution, etc.). TypeSafe describes Jev's training method as &lt;strong&gt;Reinforcement Learning for Calibrated Decisions (RLCD)&lt;/strong&gt; — optimizing specifically for epistemically honest probability estimates on classification-shaped tasks, rather than for text a human would rate highly.&lt;/p&gt;

&lt;p&gt;This is important because LLMs are notoriously bad at expressing calibrated uncertainty even when explicitly prompted to. A model that's actually right 95% of the time but doesn't reliably signal when it's in the wrong 5% is dangerous to automate around. TypeSafe's pitch is that Jev's probabilities are meaningfully calibrated which is a stronger and more falsifiable claim than "the model said 87% so trust it."&lt;/p&gt;

&lt;h2&gt;
  
  
  The "no hallucination" claim, and why it's true by construction
&lt;/h2&gt;

&lt;p&gt;TypeSafe claims Jev can't hallucinate and never produces a type error. This might sound like marketing, but it follows directly from the design. Since the space of valid outputs is defined in advance by your question schema, there's no way for the model to emit something outside that schema, similar to how a well-typed function literally cannot return a value outside its declared return type. This is a categorically different guarantee, because there's no generation step where an off-schema token could ever get sampled.&lt;/p&gt;

&lt;p&gt;TypeSafe's own hallucination comparison numbers for LLMs come from OpenRouter aggregate data, and they're upfront that this likely introduces bias (harder queries probably get routed to stronger models). Their own number(liternal zero) isn't empirical in the same sense; it follows from the architecture.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where the benchmark claims deserve skepticism
&lt;/h2&gt;

&lt;p&gt;TypeSafe's headline numbers — up to 193.6x faster, 444.6x cheaper — come from a custom "workflow eval" methodology they designed themselves, where LLM baselines were wrapped in TypeSafe's own &lt;a href="https://github.com/typesafe-ai/system-one-adapter-python" rel="noopener noreferrer"&gt;System One LLM adapter&lt;/a&gt; to force structured output, and the "ground truth" is the average of two other frontier LLMs' outputs rather than any external label. That's a reasonable way to measure agreement-with-strong-models-at-a-fraction-of-the-cost, but it's not an independent, third-party benchmark, and TypeSafe says so directly in their own published nuance notes. Worth reading their &lt;a href="https://evals.typesafe.ai/" rel="noopener noreferrer"&gt;workflow evals site&lt;/a&gt; yourself rather than taking the multiplier at face value — and worth remembering this is a two-week-old closed-API product from a company that just raised a $40M seed round, not a peer-reviewed result.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it actually fits in an agent stack
&lt;/h2&gt;

&lt;p&gt;The easiest way I've seen it framed (LangChain's writeup is good on this) is, Jev isn't a chatbot replacement, it's a much cheaper, much faster &lt;strong&gt;decision layer inside an agent loop that's currently burning full LLM calls on things that don't need generation at all.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Concretely:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Model routing&lt;/strong&gt; — classify incoming requests as "needs a cheap fast model" vs. "needs a frontier model," without spending a frontier-model call to make that call.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Tool-risk gating&lt;/strong&gt; — before an agent executes a &lt;code&gt;bash&lt;/code&gt; or &lt;code&gt;rm&lt;/code&gt;-shaped tool call, run it through a fast classifier to flag risky actions, the same pattern coding agents like Claude Code and Cursor have had baked into their closed-source harnesses for a while, now doable as an explicit middleware layer.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Triage and extraction at scale&lt;/strong&gt; — support ticket routing, urgency scoring, map-reduce over large unstructured datasets where you need a label or a score per record, not prose.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Real-time loops&lt;/strong&gt; — TypeSafe's own demo ran Jev at 10Hz to play Doom from structured game state, at roughly $7/hour.
Here's what that looks like with LangChain's &lt;code&gt;langchain-typesafe&lt;/code&gt; integration:
&lt;/li&gt;
&lt;/ul&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;langchain_typesafe&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;Noul&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;TypeSafeClassifier&lt;/span&gt;

&lt;span class="n"&gt;classifier&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nc"&gt;TypeSafeClassifier&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;

&lt;span class="n"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;classifier&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;invoke&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;state&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;(&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;The deploy failed twice and customers are seeing 500s. &lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Can someone look now?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;questions&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;urgent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nc"&gt;Noul&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;instructions&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;Does this need attention right now?&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;),&lt;/span&gt;
    &lt;span class="p"&gt;},&lt;/span&gt;
&lt;span class="p"&gt;})&lt;/span&gt;

&lt;span class="n"&gt;urgency&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;response&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;nouls&lt;/span&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;urgent&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="n"&gt;noul&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  What Jev is &lt;em&gt;not&lt;/em&gt;
&lt;/h2&gt;

&lt;p&gt;It's worth being blunt about the boundaries, because "System 1 model" is a category name TypeSafe invented for their own product, not an established term of art (yet):&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It doesn't write code, prose, or chat responses. There's no generation step at all.&lt;/li&gt;
&lt;li&gt;It's closed-source and API-only — no open weights, no published paper as of this writing.&lt;/li&gt;
&lt;li&gt;Its "intelligence" is scoped to classification/routing/scoring-shaped tasks; it has nothing to say about open-ended reasoning, multi-step planning, or anything that genuinely benefits from token-by-token deliberation.&lt;/li&gt;
&lt;li&gt;The benchmark story is entirely self-reported, from a two-week-old company, using an eval methodology they designed.
## The actual takeaway&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Jev vs. LLM is a bit of a category error if you read it as a competition — it's closer to asking "regex vs. a full parser." They're solving different-shaped problems, and the interesting engineering move isn't picking one, it's noticing how much of what currently runs through a full LLM call in a production agent loop is actually a classification, routing, or gating decision that never needed free-form generation in the first place. If that fraction is as large as TypeSafe (and early adopters like Browserbase and others building on it) seem to think, "System 1" models — whether Jev specifically holds up long-term or gets displaced by a competitor doing the same thing — are a plausible new layer in the agent stack, sitting next to the LLM rather than replacing it.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>llm</category>
      <category>jev</category>
      <category>vickybytes</category>
    </item>
    <item>
      <title>An AI Coding Assistant Session Became a Supply-Chain Attack</title>
      <dc:creator>Shrestha Pandey</dc:creator>
      <pubDate>Wed, 16 Sep 2026 19:06:56 +0000</pubDate>
      <link>https://dev.to/shresthapandey/an-ai-coding-assistant-session-became-a-supply-chain-attack-236g</link>
      <guid>https://dev.to/shresthapandey/an-ai-coding-assistant-session-became-a-supply-chain-attack-236g</guid>
      <description>&lt;p&gt;Developers are used to checking a package before installing it. The process usually takes only a few seconds: read the recommendation, run the install command, and continue working.&lt;/p&gt;

&lt;p&gt;But this can become a serious security problem when the recommendation comes from a compromised AI coding assistant.&lt;/p&gt;

&lt;p&gt;A recent Mandiant case study described an attack in which a threat actor hijacked an active AI coding-assistant session at an unnamed software company. After hijacking the active session, the attacker caused the coding assistant to recommend a poisoned package, which the developer accepted, which led to an infostealer, stolen GitHub OAuth tokens, and the spread of the Shai-Hulud worm across approximately 100 internal code repositories.&lt;/p&gt;

&lt;p&gt;In that incident, the attack began with a trusted development tool making a recommendation.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the attack unfolded
&lt;/h2&gt;

&lt;p&gt;The public case study does not explain how the attacker initially took over the AI assistant session, that remains undisclosed.&lt;/p&gt;

&lt;p&gt;After gaining access to the active session, the attacker used the assistant to recommend external software. The recommended package had been poisoned before the developer installed it.&lt;/p&gt;

&lt;p&gt;According to the report, a malicious package hosted on PyPI, the Python Package Index, was installed in the development environment. It deployed an infostealer that collected GitHub OAuth tokens from the development environment.&lt;/p&gt;

&lt;p&gt;Those tokens gave the attacker authenticated access to the company’s repositories. The attacker then deployed the Shai-Hulud worm across around 100 internal repositories, stealing repository secrets and source code related to the company’s products.&lt;/p&gt;

&lt;p&gt;The attacker also poisoned a package under the company’s official namespace. When another employee downloaded the compromised package, the infection spread to another development environment.&lt;/p&gt;

&lt;p&gt;That detail makes the incident especially concerning. The attack used the organization’s own package namespace as a second distribution channel.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why AI assistants change the risk
&lt;/h2&gt;

&lt;p&gt;Supply-chain attacks are not new. Attackers have targeted package registries, maintainers, build servers, and developer credentials for years. AI coding assistants introduce another layer of trust.&lt;/p&gt;

&lt;p&gt;A coding assistant may be able to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Recommend packages.&lt;/li&gt;
&lt;li&gt;Generate installation commands.&lt;/li&gt;
&lt;li&gt;Modify dependency files.&lt;/li&gt;
&lt;li&gt;Run commands in a terminal.&lt;/li&gt;
&lt;li&gt;Read project files.&lt;/li&gt;
&lt;li&gt;Inspect configuration.&lt;/li&gt;
&lt;li&gt;Access repositories.&lt;/li&gt;
&lt;li&gt;Work with external tools.&lt;/li&gt;
&lt;li&gt;Use credentials available to the development environment.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This creates a powerful combination. The assistant can influence what a developer installs while operating close to the credentials and repositories attackers want to reach.&lt;/p&gt;

&lt;p&gt;A developer may question an unfamiliar command typed by a stranger. The same command can feel more trustworthy when it appears as part of an assistant’s response inside an editor. And attackers can exploit that trust.&lt;/p&gt;

&lt;h2&gt;
  
  
  The package was only the first step
&lt;/h2&gt;

&lt;p&gt;The most important lesson is that the poisoned package was not the final objective. The package created an entry point. The stolen tokens and repository access created the larger impact.&lt;/p&gt;

&lt;p&gt;Once the attacker gained access to authenticated developer resources, they could move through the software supply chain:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Compromise the coding-assistant session.&lt;/li&gt;
&lt;li&gt;Influence a package recommendation.&lt;/li&gt;
&lt;li&gt;Get the developer to install the package.&lt;/li&gt;
&lt;li&gt;Steal available credentials.&lt;/li&gt;
&lt;li&gt;Use those credentials to access repositories.&lt;/li&gt;
&lt;li&gt;Spread malicious code or packages.&lt;/li&gt;
&lt;li&gt;Collect secrets and source code.&lt;/li&gt;
&lt;li&gt;Reach additional developers through trusted internal packages.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is why supply-chain security cannot focus only on the package registry. The complete workflow includes the developer’s machine, editor extensions, AI tools, credentials, CI/CD systems, and internal package repositories.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why package names are not enough
&lt;/h2&gt;

&lt;p&gt;Developers often look at a package name and repository link before installing it, which is useful, but it does not provide complete protection.&lt;/p&gt;

&lt;p&gt;A malicious package may:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Use a name similar to a popular package.&lt;/li&gt;
&lt;li&gt;Have a convincing README.&lt;/li&gt;
&lt;li&gt;Imitate the behavior of a legitimate library.&lt;/li&gt;
&lt;li&gt;Include an install script.&lt;/li&gt;
&lt;li&gt;Depend on another malicious package.&lt;/li&gt;
&lt;li&gt;Remain inactive until it detects a valuable environment.&lt;/li&gt;
&lt;li&gt;Appear inside a trusted organization namespace.&lt;/li&gt;
&lt;li&gt;Be recommended by an AI assistant with no explanation of its origin.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A package can appear to work normally while running additional code during installation or execution.&lt;/p&gt;

&lt;p&gt;Developers should verify more than the name. They should check the package’s publisher, history, source repository, release activity, dependency tree, install scripts, and security advisories. An AI recommendation should be treated as a lead, but not as proof that a dependency is safe.&lt;/p&gt;

&lt;h2&gt;
  
  
  The role of prompt injection
&lt;/h2&gt;

&lt;p&gt;Prompt injection is another part of this problem. AI coding assistants read more than the instructions typed directly by a developer. Depending on the tool and configuration, they may also process repository files, documentation, issue descriptions, pull requests, comments, configuration files, and external content.&lt;/p&gt;

&lt;p&gt;If one of those sources contains malicious instructions, the assistant may treat them as part of the task.&lt;/p&gt;

&lt;p&gt;A repository file could tell an agent to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Install a specific package.&lt;/li&gt;
&lt;li&gt;Run a command.&lt;/li&gt;
&lt;li&gt;Read a local configuration file.&lt;/li&gt;
&lt;li&gt;Add an MCP server.&lt;/li&gt;
&lt;li&gt;Change a security setting.&lt;/li&gt;
&lt;li&gt;Upload output to an external endpoint.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The assistant may not understand that the instruction is untrusted content rather than an authorized request. It means developers should understand what information their coding tools read and which sources are allowed to influence actions.&lt;/p&gt;

&lt;h2&gt;
  
  
  The danger of available credentials
&lt;/h2&gt;

&lt;p&gt;A compromised assistant session becomes much more serious when credentials are available on the same machine.&lt;/p&gt;

&lt;p&gt;Developers often have access to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;GitHub tokens.&lt;/li&gt;
&lt;li&gt;npm or PyPI tokens.&lt;/li&gt;
&lt;li&gt;Cloud credentials.&lt;/li&gt;
&lt;li&gt;SSH keys.&lt;/li&gt;
&lt;li&gt;Database connection strings.&lt;/li&gt;
&lt;li&gt;CI/CD secrets.&lt;/li&gt;
&lt;li&gt;Environment variables.&lt;/li&gt;
&lt;li&gt;Private package registries.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;An assistant does not need permanent access to all of these credentials to create damage. One exposed token may be enough to modify a repository, publish a package, or access another service.&lt;/p&gt;

&lt;p&gt;This is why credentials should not be treated as harmless just because they are stored locally.&lt;/p&gt;

&lt;p&gt;Long-lived tokens increase the possible impact of a compromised session. A token with broad permissions can turn a local development incident into an organization-wide problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  What developers can do
&lt;/h2&gt;

&lt;p&gt;Mandiant recommended several controls for AI-assisted development, including verifying AI-recommended dependencies against cryptographic checksums and approved allowlists, keeping raw API keys and long-lived OAuth tokens away from extensions, and routing dependency traffic through controlled internal repositories. Developers can also take practical steps in their daily workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Verify every new dependency
&lt;/h2&gt;

&lt;p&gt;Before installing a package suggested by an AI assistant, check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The exact package name.&lt;/li&gt;
&lt;li&gt;The official documentation.&lt;/li&gt;
&lt;li&gt;The publisher or maintainer.&lt;/li&gt;
&lt;li&gt;The source repository.&lt;/li&gt;
&lt;li&gt;The release history.&lt;/li&gt;
&lt;li&gt;The dependency tree.&lt;/li&gt;
&lt;li&gt;Installation scripts.&lt;/li&gt;
&lt;li&gt;Known security advisories.&lt;/li&gt;
&lt;li&gt;Whether the package is actually necessary.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Limit credential access
&lt;/h2&gt;

&lt;p&gt;Use credentials with the smallest permissions possible. Prefer short-lived tokens where the platform supports them. Separate personal and work credentials. Keep production credentials away from local development environments. Avoid giving editor extensions access to secrets they do not need.&lt;/p&gt;

&lt;p&gt;A coding assistant should not automatically receive access to every credential available on a developer’s machine.&lt;/p&gt;

&lt;h2&gt;
  
  
  Protect package installation
&lt;/h2&gt;

&lt;p&gt;Organizations can route package downloads through approved internal registries or proxies. This makes it possible to inspect, cache, block, and monitor dependencies before they reach developer machines.&lt;/p&gt;

&lt;p&gt;Allowlisting trusted packages may feel restrictive, but it can prevent a single recommendation from reaching every project in a company.&lt;/p&gt;

&lt;h2&gt;
  
  
  Review dependency changes
&lt;/h2&gt;

&lt;p&gt;Pay close attention to changes in:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;package.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;package-lock.json&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pnpm-lock.yaml&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;yarn.lock&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;requirements.txt&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;pyproject.toml&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;CI/CD workflow files.&lt;/li&gt;
&lt;li&gt;Git hooks.&lt;/li&gt;
&lt;li&gt;AI assistant configuration.&lt;/li&gt;
&lt;li&gt;MCP server configuration.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A dependency update deserves review even when the code change appears unrelated.&lt;/p&gt;

&lt;h2&gt;
  
  
  Separate agent permissions
&lt;/h2&gt;

&lt;p&gt;An AI assistant that explains code does not need the same permissions as an agent that edits files and runs terminal commands.&lt;/p&gt;

&lt;p&gt;Use approval requirements for sensitive actions. Restrict network access where possible. Run untrusted work in isolated environments. Keep repository access, package publishing, and deployment permissions separate.&lt;/p&gt;

&lt;p&gt;More capability can make an agent more useful, but it also increases the consequences of a compromised session.&lt;/p&gt;

&lt;h2&gt;
  
  
  What if a compromise is suspected?
&lt;/h2&gt;

&lt;p&gt;If a developer suspects that a malicious package or assistant session was involved, reinstalling dependencies is not enough.&lt;/p&gt;

&lt;p&gt;The organization should consider:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Removing the suspicious package.&lt;/li&gt;
&lt;li&gt;Isolating the affected environment.&lt;/li&gt;
&lt;li&gt;Rotating GitHub, npm, PyPI, cloud, and SSH credentials.&lt;/li&gt;
&lt;li&gt;Reviewing repository activity.&lt;/li&gt;
&lt;li&gt;Checking for unexpected commits and releases.&lt;/li&gt;
&lt;li&gt;Auditing Git hooks.&lt;/li&gt;
&lt;li&gt;Inspecting AI assistant configuration files.&lt;/li&gt;
&lt;li&gt;Looking for unfamiliar MCP servers or extensions.&lt;/li&gt;
&lt;li&gt;Checking CI/CD logs.&lt;/li&gt;
&lt;li&gt;Comparing packages against known-good versions.&lt;/li&gt;
&lt;li&gt;Notifying the security team.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Deleting &lt;code&gt;node_modules&lt;/code&gt; or a virtual environment may remove local files, but it does not invalidate stolen credentials or undo changes already pushed to a repository.&lt;/p&gt;

&lt;p&gt;Credentials must be rotated, and the organization must investigate what those credentials were used to access.&lt;/p&gt;

&lt;h2&gt;
  
  
  The larger Shai-Hulud pattern
&lt;/h2&gt;

&lt;p&gt;The reported Mandiant incident is part of a wider set of attacks involving developer tools and credentials. Separate research has described Shai-Hulud variants targeting packages, CI/CD systems, and AI-tool configuration files.&lt;/p&gt;

&lt;p&gt;These are separate campaigns, and the available evidence does not establish that every reported incident came from the same intrusion. The common pattern is the important part: attackers are targeting the systems developers already trust to build and distribute software.&lt;/p&gt;

&lt;p&gt;AI coding tools are attractive targets because they sit close to source code, terminals, package managers, credentials, and repositories. This gives them more influence than a traditional autocomplete feature.&lt;/p&gt;

&lt;h2&gt;
  
  
  The lesson
&lt;/h2&gt;

&lt;p&gt;AI coding assistants are now becoming active participants in development workflows.&lt;/p&gt;

&lt;p&gt;They suggest dependencies, edit project files, run commands, inspect repositories, and connect to external services. That makes them useful, but it also places them inside the software supply chain.&lt;/p&gt;

&lt;p&gt;The safest response is to stop treating their output as trusted input. Every package still needs verification. Every command needs context. Every token needs limits. Every repository instruction needs scrutiny. Every assistant session should operate with only the access it actually requires.&lt;/p&gt;

&lt;p&gt;The Shai-Hulud incident shows that a developer may be one accepted recommendation away from introducing a much larger compromise.&lt;/p&gt;

&lt;p&gt;The tool may look like a helpful coding partner. From a security perspective, it should be treated as another component in the trust boundary.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>supplychain</category>
      <category>security</category>
      <category>development</category>
    </item>
    <item>
      <title>10 Browser DevTools Tricks Every Beginner Developer Should Know</title>
      <dc:creator>Shrestha Pandey</dc:creator>
      <pubDate>Wed, 16 Sep 2026 14:32:51 +0000</pubDate>
      <link>https://dev.to/shresthapandey/10-browser-devtools-tricks-every-beginner-developer-should-know-4148</link>
      <guid>https://dev.to/shresthapandey/10-browser-devtools-tricks-every-beginner-developer-should-know-4148</guid>
      <description>&lt;p&gt;Developers usually open their browser to search for documentation, read GitHub issues, or look for solutions to a problem, but that’s only a small part of what the browser can do.&lt;/p&gt;

&lt;p&gt;Modern browsers include tools for inspecting pages, testing JavaScript, checking network requests, measuring performance, and experimenting with CSS. Many developers use these features regularly, but several useful capabilities remain hidden behind.&lt;/p&gt;

&lt;p&gt;You do not need to install a new extension for every small experiment, your browser already includes a compact developer toolkit.&lt;/p&gt;

&lt;h2&gt;
  
  
  1. Edit any webpage temporarily
&lt;/h2&gt;

&lt;p&gt;Open a webpage, right-click an element, and select &lt;strong&gt;Inspect&lt;/strong&gt;. In the Elements panel, you can change the text, styles, attributes, and structure of the page.&lt;/p&gt;

&lt;p&gt;You can also select the &lt;code&gt;&amp;lt;body&amp;gt;&lt;/code&gt; element and run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;body&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;contentEditable&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="kc"&gt;true&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The page becomes editable. You can click on text and change it directly.&lt;/p&gt;

&lt;p&gt;This does not modify the actual website. Refreshing the page removes the changes, which makes this useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Testing a new layout.&lt;/li&gt;
&lt;li&gt;Checking how different copy looks.&lt;/li&gt;
&lt;li&gt;Previewing heading changes.&lt;/li&gt;
&lt;li&gt;Demonstrating DOM manipulation.&lt;/li&gt;
&lt;li&gt;Understanding how page elements are structured.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It is also a quick reminder that the page displayed in your browser is not the same thing as the source code stored on the server.&lt;/p&gt;

&lt;h2&gt;
  
  
  2. Use the Console as a calculator
&lt;/h2&gt;

&lt;p&gt;The browser Console is not only for reading errors. It can perform real calculations, transform data, and run small JavaScript experiments.&lt;/p&gt;

&lt;p&gt;Try:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="mi"&gt;18&lt;/span&gt;&lt;span class="o"&gt;*&lt;/span&gt;&lt;span class="mi"&gt;42&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;/&lt;/span&gt;&lt;span class="mi"&gt;7&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also work with arrays:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;TypeScript&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;JavaScript&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Python&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;language&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt;  &lt;span class="nx"&gt;language&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;toUpperCase&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Or calculate the total of a list:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;[&lt;/span&gt;&lt;span class="mi"&gt;120&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;80&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;250&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;50&lt;/span&gt;&lt;span class="p"&gt;].&lt;/span&gt;&lt;span class="nf"&gt;reduce&lt;/span&gt;&lt;span class="p"&gt;((&lt;/span&gt;&lt;span class="nx"&gt;total&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;&lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;total&lt;/span&gt;&lt;span class="o"&gt;+&lt;/span&gt; &lt;span class="nx"&gt;value&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;&lt;span class="mi"&gt;0&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is useful when you need a quick answer and do not want to create a new file or open another tool. The Console is especially helpful when you want to check a small idea before adding it to a project.&lt;/p&gt;

&lt;h2&gt;
  
  
  3. Find the API behind a webpage
&lt;/h2&gt;

&lt;p&gt;When a webpage displays dynamic content, the browser usually requests that content from an API.&lt;/p&gt;

&lt;p&gt;Open DevTools, go to the &lt;strong&gt;Network&lt;/strong&gt; tab, and reload the page. Filter the requests by &lt;code&gt;Fetch/XHR&lt;/code&gt;. You may find requests returning JSON data, search results, user information, product details, or other content rendered by the application.&lt;/p&gt;

&lt;p&gt;Selecting a request lets you inspect:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The request URL.&lt;/li&gt;
&lt;li&gt;Query parameters.&lt;/li&gt;
&lt;li&gt;Request method.&lt;/li&gt;
&lt;li&gt;Response data.&lt;/li&gt;
&lt;li&gt;Status code.&lt;/li&gt;
&lt;li&gt;Response headers.&lt;/li&gt;
&lt;li&gt;Timing information.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;This is one of the fastest ways to understand how a frontend communicates with a backend.&lt;/p&gt;

&lt;p&gt;Always respect the website’s terms, authentication requirements, and rate limits. Inspecting a request for learning is very different from repeatedly scraping or abusing a service.&lt;/p&gt;

&lt;h2&gt;
  
  
  4. Test CSS without touching your files
&lt;/h2&gt;

&lt;p&gt;The Styles panel allows you to edit CSS rules live.&lt;/p&gt;

&lt;p&gt;You can change:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight css"&gt;&lt;code&gt;&lt;span class="nt"&gt;display&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="nt"&gt;grid&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="nt"&gt;gap&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;24&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;&lt;span class="nt"&gt;border-radius&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="err"&gt;16&lt;/span&gt;&lt;span class="nt"&gt;px&lt;/span&gt;&lt;span class="o"&gt;;&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can also add completely new declarations and see the result immediately.&lt;/p&gt;

&lt;p&gt;This workflow is useful when you are unsure about:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Spacing&lt;/li&gt;
&lt;li&gt;Colors&lt;/li&gt;
&lt;li&gt;Font sizes&lt;/li&gt;
&lt;li&gt;Flexbox alignment&lt;/li&gt;
&lt;li&gt;Grid columns&lt;/li&gt;
&lt;li&gt;Responsive behavior&lt;/li&gt;
&lt;li&gt;Hover and focus states&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Once the result looks right, copy the final values into your stylesheet.&lt;/p&gt;

&lt;p&gt;The browser becomes a visual playground where you can try ideas without repeatedly saving files and refreshing the page.&lt;/p&gt;

&lt;h2&gt;
  
  
  5. Check mobile layouts quickly
&lt;/h2&gt;

&lt;p&gt;DevTools includes a device toolbar that lets you preview a page at different viewport sizes.&lt;/p&gt;

&lt;p&gt;You can select common device dimensions or enter a custom width and height. This helps reveal problems such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Text overflowing its container&lt;/li&gt;
&lt;li&gt;Buttons becoming difficult to tap&lt;/li&gt;
&lt;li&gt;Navigation items wrapping unexpectedly&lt;/li&gt;
&lt;li&gt;Images extending beyond the viewport&lt;/li&gt;
&lt;li&gt;Cards becoming too narrow&lt;/li&gt;
&lt;li&gt;Tables requiring horizontal scrolling&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A page that looks perfect at a desktop width may feel completely different on a smaller screen.&lt;/p&gt;

&lt;p&gt;Responsive testing cannot replace testing on real devices, but it is an efficient first check during development.&lt;/p&gt;

&lt;h2&gt;
  
  
  6. Simulate a slow network
&lt;/h2&gt;

&lt;p&gt;A fast internet connection can hide problems in an application.&lt;/p&gt;

&lt;p&gt;In the Network panel, you can throttle the connection to simulate slower conditions. This helps you see whether the interface provides useful feedback while content is loading.&lt;/p&gt;

&lt;p&gt;You can check:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Whether a loading indicator appears&lt;/li&gt;
&lt;li&gt;Whether the layout jumps when data arrives&lt;/li&gt;
&lt;li&gt;Whether images load efficiently&lt;/li&gt;
&lt;li&gt;Whether errors are understandable&lt;/li&gt;
&lt;li&gt;Whether the page remains usable before every asset loads&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A slow connection is also a good way to discover interfaces that depend too heavily on JavaScript before displaying basic content.&lt;/p&gt;

&lt;h2&gt;
  
  
  7. Inspect performance
&lt;/h2&gt;

&lt;p&gt;The Performance panel records what happens while a page loads or responds to an interaction.&lt;/p&gt;

&lt;p&gt;You can use it to investigate:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Long JavaScript tasks&lt;/li&gt;
&lt;li&gt;Slow rendering&lt;/li&gt;
&lt;li&gt;Layout shifts&lt;/li&gt;
&lt;li&gt;Excessive event handlers&lt;/li&gt;
&lt;li&gt;Expensive animations&lt;/li&gt;
&lt;li&gt;Delayed input responses&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The result may look complicated at first, but you do not need to understand every graph immediately. Begin with a simple question:&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;What was the browser doing when the page felt slow?&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;This can lead you to a specific script, image, layout operation, or third-party resource that needs attention.&lt;/p&gt;

&lt;p&gt;Performance problems become much easier to fix when you can connect the feeling of slowness to a specific browser activity.&lt;/p&gt;

&lt;h2&gt;
  
  
  8. Check browser support with Baseline
&lt;/h2&gt;

&lt;p&gt;Web developers often ask whether a browser feature is safe to use. Browser compatibility tables can answer that question, but the information is sometimes scattered across documentation and support charts.&lt;/p&gt;

&lt;p&gt;Baseline provides a shared way to understand the browser support status of modern web features. A “newly available”  feature works across the latest stable versions of the core browsers. A “widely available” feature has had consistent support for a longer period.&lt;/p&gt;

&lt;p&gt;For example, modern JavaScript includes features such as:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fromAsync&lt;/span&gt;&lt;span class="p"&gt;()&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This method helps convert an async iterable into an array:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;values&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nb"&gt;Array&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;fromAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nf"&gt;asyncGenerator&lt;/span&gt;&lt;span class="p"&gt;());&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Checking compatibility before using a feature can save you from discovering browser issues after deployment.&lt;/p&gt;

&lt;h2&gt;
  
  
  9. Measure elements and capture screenshots
&lt;/h2&gt;

&lt;p&gt;DevTools includes tools for inspecting dimensions and taking screenshots of page elements.&lt;/p&gt;

&lt;p&gt;You can measure:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;The width and height of an element&lt;/li&gt;
&lt;li&gt;Padding and margins&lt;/li&gt;
&lt;li&gt;The distance between components&lt;/li&gt;
&lt;li&gt;The visible viewport&lt;/li&gt;
&lt;li&gt;The rendered size of an image&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;You can also capture a screenshot of a selected element or the full page in browsers that support the feature.&lt;/p&gt;

&lt;p&gt;This is useful for:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Reporting UI bugs&lt;/li&gt;
&lt;li&gt;Sharing a layout issue with a teammate&lt;/li&gt;
&lt;li&gt;Comparing a design with the implementation&lt;/li&gt;
&lt;li&gt;Creating documentation&lt;/li&gt;
&lt;li&gt;Recording before-and-after changes&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;A screenshot with the selected element and computed dimensions often communicates a frontend bug more clearly than a long explanation.&lt;/p&gt;

&lt;h2&gt;
  
  
  10. Turn the browser into a small data tool
&lt;/h2&gt;

&lt;p&gt;The Console can process data copied from a page. For example, if you want to extract a list of links, run:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelectorAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;a&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;link&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;link&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
    &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;link&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;href&lt;/span&gt;
  &lt;span class="p"&gt;}))&lt;/span&gt;
  &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;filter&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;link&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="nx"&gt;link&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;text&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;To copy the result, use:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="nf"&gt;copy&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;
  &lt;span class="p"&gt;[...&lt;/span&gt;&lt;span class="nb"&gt;document&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;querySelectorAll&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;a&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;)]&lt;/span&gt;
    &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;map&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;link&lt;/span&gt; &lt;span class="o"&gt;=&amp;gt;&lt;/span&gt; &lt;span class="p"&gt;({&lt;/span&gt;
      &lt;span class="na"&gt;text&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;link&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;textContent&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;trim&lt;/span&gt;&lt;span class="p"&gt;(),&lt;/span&gt;
      &lt;span class="na"&gt;url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;link&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;href&lt;/span&gt;
    &lt;span class="p"&gt;}))&lt;/span&gt;
&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The output is copied to your clipboard as a JavaScript value.&lt;/p&gt;

&lt;p&gt;This can help with small personal tasks such as:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Extracting links from documentation&lt;/li&gt;
&lt;li&gt;Listing headings in an article&lt;/li&gt;
&lt;li&gt;Finding image URLs on a page&lt;/li&gt;
&lt;li&gt;Counting elements&lt;/li&gt;
&lt;li&gt;Checking duplicate IDs&lt;/li&gt;
&lt;li&gt;Collecting text for a quick review&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;But use this responsibly. Avoid collecting private information or processing data from websites where you do not have permission.&lt;/p&gt;

&lt;h2&gt;
  
  
  A useful browser habit
&lt;/h2&gt;

&lt;p&gt;The next time a webpage behaves strangely, pause before searching for a new extension or external tool.&lt;/p&gt;

&lt;p&gt;Open DevTools and ask:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;What is the page rendering?&lt;/li&gt;
&lt;li&gt;Which request provides the data?&lt;/li&gt;
&lt;li&gt;Which style controls this element?&lt;/li&gt;
&lt;li&gt;What happens at a smaller width?&lt;/li&gt;
&lt;li&gt;What does the Console report?&lt;/li&gt;
&lt;li&gt;Which script is taking the most time?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These questions turn the browser from a passive viewing window into an interactive debugging environment.&lt;/p&gt;

&lt;p&gt;The same habit is useful when learning frontend development. Rather than only reading about the DOM, CSS, network requests, or performance, you can inspect how real websites work and experiment with them directly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Final thoughts
&lt;/h2&gt;

&lt;p&gt;The browser is one of the most powerful tools already installed on a developer’s computer.&lt;/p&gt;

&lt;p&gt;It can inspect the DOM, modify CSS, execute JavaScript, monitor network requests, simulate devices, throttle connections, record performance, and process small datasets. You do not need a full project to benefit from these features.&lt;/p&gt;

&lt;p&gt;The most useful developer tools are not always the newest AI assistant or framework. Sometimes, they are hidden behind the browser menu you have opened hundreds of times.&lt;/p&gt;

&lt;p&gt;Try one small experiment today:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open a webpage&lt;/li&gt;
&lt;li&gt;Inspect an element&lt;/li&gt;
&lt;li&gt;Change its styles&lt;/li&gt;
&lt;li&gt;Check its network requests&lt;/li&gt;
&lt;li&gt;Run a JavaScript expression in the Console&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;You may discover that your browser has been a development environment all along.&lt;/p&gt;

</description>
      <category>devtools</category>
      <category>browsertricks</category>
      <category>beginners</category>
      <category>webdev</category>
    </item>
    <item>
      <title>OpenAI’s ChatGPT for Financial Services</title>
      <dc:creator>Shrestha Pandey</dc:creator>
      <pubDate>Mon, 14 Sep 2026 20:26:11 +0000</pubDate>
      <link>https://dev.to/shresthapandey/openais-chatgpt-for-financial-services-27k5</link>
      <guid>https://dev.to/shresthapandey/openais-chatgpt-for-financial-services-27k5</guid>
      <description>&lt;p&gt;OpenAI launched ChatGPT for Financial Services on September 10, 2026. I saw the headlines calling it "ChatGPT for banks" and my reaction to this industry-specific launche was like, is this an actual new model, or just a repackaged product with a new landing page and a press release full of logos.&lt;/p&gt;

&lt;p&gt;So I spent a few hours looking through the launch details, the model documentation, and the coverage to figure out what's genuinely new here. &lt;/p&gt;

&lt;h2&gt;
  
  
  The model behind it
&lt;/h2&gt;

&lt;p&gt;The model doing the work is GPT-6 Astra, OpenAI's current flagship. There's no finance-tuned variant hiding underneath this product. OpenAI actually built a layer around Astra: built-in financial data, firm-specific templates, and a governance setup that a compliance team can sign off on. The model is the same one you'd get calling the API directly.&lt;/p&gt;

&lt;p&gt;You're not looking at some specialized reasoning engine trained on years of SEC filings. You're looking at a general-purpose frontier model wired into a very specific data and access-control stack.&lt;/p&gt;

&lt;p&gt;A few things about Astra itself matter for understanding what this product can actually do:&lt;/p&gt;

&lt;p&gt;It supports close to a million tokens of context and it's important when you're throwing a 10-K, three years of transcripts, and a set of comps into one session and asking it to reason across all of it.&lt;/p&gt;

&lt;p&gt;The API also exposes a reasoning effort setting, with levels going from low up to max. If you're building your own pipeline on top of this rather than using the chat interface, that knob lets you decide how much thinking time (and cost) you want per call, which is genuinely useful when some requests are "summarize this memo" and others are "build me a full comp table with sourcing."&lt;/p&gt;

&lt;p&gt;On the OfficeQA Pro benchmark, which OpenAI uses as a rough proxy for office and financial document work, Astra jumped about ten points over the previous model. And on agentic, terminal-style benchmarks, which feel closer to what "build me a model" actually requires under the hood, Astra beat both its predecessor and Anthropic's comparable model at the time, at a lower cost per task.&lt;/p&gt;

&lt;p&gt;One thing I noticed while reading the model's system card, worth flagging even though it's not directly a finance concern: this is the first OpenAI model to cross into what they call the Critical tier of cybersecurity capability under their own internal framework. That tells we're dealing with a genuinely different capability class than what most teams have been building agents on top of over the last couple of years, and OpenAI is gating some of that access accordingly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why Wall Street shaped the product
&lt;/h2&gt;

&lt;p&gt;Morgan Stanley and Evercore worked with OpenAI as design partners before this launched, and according to OpenAI, that relationship steered the product toward investment banking and equity research as the starting point. The reasoning given was that reliable data access and producing high-quality output were the two biggest pain points those teams ran into.&lt;/p&gt;

&lt;p&gt;Astra can reason through a DCF just fine on its own. The main problem is that a general chat model with no persistent access to properly entitled data, and no awareness of a firm's house style, produces something that feels right but falls apart the second a compliance reviewer looks at it. OpenAI mainly had to solve mostly a data and governance problem which looks like a model problem.&lt;/p&gt;

&lt;p&gt;Nick Turley, OpenAI's VP of product, put it as teaching ChatGPT to research like an analyst and back up its conclusions the way an analyst would. I find that second half more interesting from a build perspective. Backing up conclusions means the product needs traceable citations baked in, not just fluent-sounding prose that are right most of the time.&lt;/p&gt;

&lt;h2&gt;
  
  
  The data layer
&lt;/h2&gt;

&lt;p&gt;If I had to point at where the real engineering effort went, it's here. The product bundles GPT-6 Astra with premium financial data, templates a firm controls, and an enterprise governance layer sitting on top of all of it.&lt;/p&gt;

&lt;p&gt;At launch, the built-in data comes from Daloopa, PitchBook, LSEG News, and Crunchbase, with Quartr also included according to reporting around the release. OpenAI indexes and hosts this data on its own infrastructure rather than calling out to each provider live every time, and the company says that choice improves retrieval speed, latency, and how reliably it can trace a generated claim back to its source. The product surfaces granular citations so a user can actually check a number against where it came from while they're working.&lt;/p&gt;

&lt;p&gt;That decision to host and index the data themselves is a real architectural call, and I don't think it gets enough attention in the coverage. It trades a bit of data freshness for speed and citation accuracy. Building that means OpenAI had to stand up ingestion pipelines, work out freshness terms with each data provider, and build a citation layer that maps every claim the model makes back to a specific span in the source material. &lt;/p&gt;

&lt;p&gt;For data a firm already pays for separately, the approach is different. Shared sign-in integrations with providers like S&amp;amp;P Capital IQ, LSEG, MSCI, Dow Jones Factiva, and Moody's recognize a user through their existing ChatGPT login and hand them access to whatever their firm already licenses. In practice that's federated identity plus entitlement pass-through. ChatGPT handles who the person is, and the data provider decides what they're allowed to see, so OpenAI doesn't have to rebuild every provider's access rules from scratch.&lt;/p&gt;

&lt;h2&gt;
  
  
  MCP connectors
&lt;/h2&gt;

&lt;p&gt;For anything not built-in, the product depends on the Model Context Protocol, the open standard for connecting LLM applications up to external tools and data sources. OpenAI has specifically tuned MCP connectors for financial services reliability, and there are more than fifty available at launch, including Datasite, Box, Preqin, FactSet, and Intapp.&lt;/p&gt;

&lt;p&gt;This matters if you're building your own tools rather than relying on what OpenAI ships out of the box, because the same MCP pattern is available directly through the API. Here's roughly what wiring an MCP-based data source into a Responses API call looks like:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight javascript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;response&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nf"&gt;fetch&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://api.openai.com/v1/responses&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
  &lt;span class="na"&gt;method&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;POST&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="na"&gt;headers&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Authorization&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;`Bearer &lt;/span&gt;&lt;span class="p"&gt;${&lt;/span&gt;&lt;span class="nx"&gt;OPENAI_API_KEY&lt;/span&gt;&lt;span class="p"&gt;}&lt;/span&gt;&lt;span class="s2"&gt;`&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Content-Type&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;application/json&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
  &lt;span class="p"&gt;},&lt;/span&gt;
  &lt;span class="na"&gt;body&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nx"&gt;JSON&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;stringify&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt;
    &lt;span class="na"&gt;model&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;gpt-6-astra&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
    &lt;span class="na"&gt;reasoning&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="na"&gt;effort&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;high&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="na"&gt;input&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;role&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;user&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;content&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;Pull the latest 10-Q filing data for this company and &lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt; &lt;span class="o"&gt;+&lt;/span&gt;
                  &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;summarize the change in operating margin quarter over quarter.&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
    &lt;span class="na"&gt;tools&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="p"&gt;[&lt;/span&gt;
      &lt;span class="p"&gt;{&lt;/span&gt;
        &lt;span class="na"&gt;type&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;mcp&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;server_label&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;financial-data-connector&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;server_url&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;https://your-mcp-server.example.com/mcp&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
        &lt;span class="na"&gt;require_approval&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="s2"&gt;never&lt;/span&gt;&lt;span class="dl"&gt;"&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt;
      &lt;span class="p"&gt;},&lt;/span&gt;
    &lt;span class="p"&gt;],&lt;/span&gt;
  &lt;span class="p"&gt;}),&lt;/span&gt;
&lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Something I find genuinely interesting here is that OpenAI didn't hand-build fifty bespoke integrations for this one vertical. They standardized on MCP as the connector protocol and put their engineering effort into reliability tuning for the tool-calling patterns that actually show up in financial work: retrying calls that flake out, handling large tabular payloads cleanly, normalizing citations across providers whose data formats don't match. As a developer, that's reassuring, because the same protocol you'd use to hook up your own internal data source is the one the flagship product itself runs on. There's no closed integration format you're locked out of.&lt;/p&gt;

&lt;h2&gt;
  
  
  The governance layer
&lt;/h2&gt;

&lt;p&gt;None of the security or compliance tooling here is finance-specific. It's the same enterprise stack OpenAI has been building for ChatGPT Enterprise for a while now, and financial firms just happen to be one of the more demanding customers for it. ChatGPT for Financial Services runs on top of ChatGPT Enterprise's existing SAML SSO, SCIM provisioning, and role-based access controls.&lt;/p&gt;

&lt;p&gt;Pulling the full list together from what's been reported:&lt;/p&gt;

&lt;p&gt;SAML SSO, SCIM provisioning, role-based access, configurable data retention, compliance-log exports, and separate workspaces for information barriers. Business data is encrypted at rest and in transit, and isn't used to train OpenAI's models by default. Firms can control which skills and connected apps are allowed to read or write data based on a user's role. Audit-log exports are available too, which matters a lot for anyone dealing with SEC or FINRA recordkeeping requirements.&lt;/p&gt;

&lt;p&gt;Information barriers deserve a quick explanation if you don't work in this industry. It's the compliance concept of keeping, say, an M&amp;amp;A advisory team's data completely walled off from a public equity research team inside the same firm, so information can't leak in a way that becomes an insider-trading problem. Getting that right inside a shared AI product, where the same underlying model might be serving both teams at once, is a genuinely hard access-control problem. It's closer to multi-tenant role-based access with dynamic data segmentation than the kind of permissions system most SaaS products ship with.&lt;/p&gt;

&lt;p&gt;Worth being honest about too: firms still have to configure their own access rules around what their users can see. OpenAI provides the scaffolding, the SSO, the RBAC, the audit logs, but the actual entitlement logic is on the customer to set up correctly. That's a fairly normal shared-responsibility model, but it's the kind of detail that gets left out of launch coverage and matters a lot once you're actually running this in production.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's still unclear
&lt;/h2&gt;

&lt;p&gt;I'd rather be upfront about the gaps than pretend I have the full picture:&lt;/p&gt;

&lt;p&gt;Pricing hasn't been disclosed publicly, and neither has any minimum seat count, geographic restrictions, or the criteria OpenAI uses to decide which institutions get access. Right now this goes through OpenAI's sales team.&lt;/p&gt;

&lt;p&gt;The product is also only available to select institutions so far, and it's focused specifically on investment banking and equity research rather than financial services as a whole. OpenAI has said the work with Morgan Stanley and Evercore will inform where it goes next, which reads to me like retail banking, insurance, and asset servicing use cases are still down the road, not part of this initial release.&lt;/p&gt;

&lt;p&gt;And there's no independent audit yet on hallucination rates or citation accuracy specific to this product. The citation feature is a smart design choice, but it puts the responsibility on the human reviewer to actually check each one rather than trust the output outright. For financial work that's the right default to have, but it's worth saying clearly rather than assuming citations alone solve the accuracy problem.&lt;/p&gt;

&lt;h2&gt;
  
  
  The competitive picture
&lt;/h2&gt;

&lt;p&gt;Anthropic already had its own version of this aimed at Wall Street, Claude for Financial Services, out before this launched. And OpenAI's CFO told investors back in August that their enterprise business now brings in more revenue than the consumer side does. I bring this up not to pick a winner, but because it tells you something about where this whole category is heading. It's going to come down to whoever builds the most reliable data and governance layer on top of a frontier model. At the very top end, the models themselves are close to interchangeable, trading wins on different benchmarks depending on the week. The actual differentiator is the less exciting stuff like entitlements, audit logs, citation integrity, and how well the output matches a firm's own templates.&lt;/p&gt;

&lt;h2&gt;
  
  
  Takeaways for developers
&lt;/h2&gt;

&lt;p&gt;A few patterns from this launch are worth stealing for your own projects, regardless of whether you ever touch OpenAI's product:&lt;/p&gt;

&lt;p&gt;If latency and citation accuracy matter to you, host and index third-party data yourself rather than making live calls out to external APIs every time. It's more work upfront, but it's the only way I've seen anyone get citations that actually hold up.&lt;/p&gt;

&lt;p&gt;Standardize your tool-calling layer on MCP rather than writing a custom integration for every data source you need. It's what let this product scale to fifty-plus connectors without turning into an unmaintainable mess, and it keeps your architecture from getting locked to one vendor.&lt;/p&gt;

&lt;p&gt;Treat entitlements as a core part of your design, not something you bolt on later. Figuring out which user can see which piece of data needs to happen at the data layer itself, especially once you've got multiple teams inside one organization that legally can't share information with each other.&lt;/p&gt;

&lt;p&gt;And remember citations aren't free. If you want users to actually trust your output enough to act on it, you need a retrieval system that can trace every number back to a specific source span. A model that just sounds confident isn't the same thing.&lt;/p&gt;

&lt;p&gt;I think it's a good reminder of what "enterprise AI product" really means once you cut past the announcement. It's a frontier model, a properly indexed data layer, a standard connector protocol, and a genuinely hard access-control problem, all wrapped around something a compliance officer is actually willing to approve. That combination is the real hard part.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Sources&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.cnbc.com/2026/09/10/openai-chatgpt-for-financial-services-targets-work-of-junior-bankers.html" rel="noopener noreferrer"&gt;OpenAI targets work of Wall Street junior bankers with new ChatGPT for Financial Services&lt;/a&gt; — CNBC&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://venturebeat.com/data/openai-launches-chatgpt-for-financial-services-with-integrated-data-sources-it-pulls-research-cites-it-and-builds-decks-in-minutes" rel="noopener noreferrer"&gt;OpenAI launches ChatGPT for Financial Services with integrated data sources&lt;/a&gt; — VentureBeat&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://openai.com/index/gpt-6-astra/" rel="noopener noreferrer"&gt;GPT-6 Astra: A new generation of intelligence&lt;/a&gt; — OpenAI&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://deploymentsafety.openai.com/gpt-6-astra" rel="noopener noreferrer"&gt;GPT-6 Astra System Card&lt;/a&gt; — OpenAI Deployment Safety Hub&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;For more such developer content, &lt;a href="https://vickybytes.com" rel="noopener noreferrer"&gt;Click Here&lt;/a&gt;!&lt;/p&gt;

</description>
      <category>openai</category>
      <category>ai</category>
      <category>fintech</category>
      <category>gptastra</category>
    </item>
    <item>
      <title>The Truth Behind OpenAI's 10,000-Agent Math Claim</title>
      <dc:creator>Shrestha Pandey</dc:creator>
      <pubDate>Wed, 09 Sep 2026 19:55:10 +0000</pubDate>
      <link>https://dev.to/shresthapandey/the-truth-behind-openais-10000-agent-math-claim-df9</link>
      <guid>https://dev.to/shresthapandey/the-truth-behind-openais-10000-agent-math-claim-df9</guid>
      <description>&lt;p&gt;On September 8, 2026, OpenAI published a paper claiming that an internal, unreleased AI system had made progress on one of the seven Millennium Prize Problems: the Navier–Stokes existence and smoothness problem. The announcement got a lot of attention fast, partly because of the result itself, and partly because of how it was produced — a coordinated swarm of roughly 10,000 AI agents working in parallel.&lt;/p&gt;

&lt;p&gt;As developers, we've all seen "AI solves impossible problem" headlines before, and most of them fall apart under scrutiny. This one is more interesting than most, but it also comes with real caveats that are worth understanding before you repeat the claim anywhere. Here's a breakdown of what was actually done, how the multi-agent workflow worked, and why the story isn't as clean as the headline suggests.&lt;/p&gt;

&lt;h2&gt;
  
  
  The problem
&lt;/h2&gt;

&lt;p&gt;The Navier–Stokes equations describe how fluids move — they're used in weather forecasting, aircraft design, and blood flow modeling, among other things. They work great in practice. What's never been settled mathematically is whether, under the right conditions, a smooth three-dimensional fluid flow could spontaneously "blow up" — meaning some property like velocity shoots to infinity in a finite amount of time, breaking the model.&lt;/p&gt;

&lt;p&gt;Proving whether that kind of breakdown, called a singularity, can or can't happen has been an open question since the 1930s. In 2000, the Clay Mathematics Institute put a $1 million prize on it, and it's remained one of the hardest open problems in math ever since.&lt;/p&gt;

&lt;p&gt;OpenAI says its system produced a proof that a singularity can, in fact, form in finite time from a smooth, physically reasonable starting state — and that this proof has been formalized and checked in Lean, a proof-verification language that mathematicians use to catch logical errors that are easy to miss by eye.&lt;/p&gt;

&lt;h2&gt;
  
  
  How the multi-agent workflow worked
&lt;/h2&gt;

&lt;p&gt;This is the part that's genuinely new, at least in scale. According to OpenAI's own writeup, the process looked roughly like this:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Starting in late August 2026, OpenAI trained a new internal model that outperformed its already-released flagship model on math benchmarks.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;After hearing rumors that a rival lab might be close to solving a different Millennium problem, OpenAI decided to point this model at all of the unsolved Millennium Prize problems at once, plus a handful of other hard open problems.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Rather than running one long conversation with one model, they spun up large groups of coordinating agents. Each agent group could talk to other agents within its group, and different groups were given different framings of the same problem — some aimed at proving a statement true, others aimed at disproving it.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The group that eventually cracked the Navier–Stokes case grew to around 10,000 agents running at the same time.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Every so often, researchers used a coding-focused model to pull out the most promising partial results from different groups and feed them back in as new prompts, essentially cross-pollinating ideas between otherwise separate lines of reasoning.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Along the way, a smaller group of under 100 agents also worked out a related, slightly easier problem (a version of the same blow-up question for the Euler equations, which is what you get when you remove viscosity from Navier–Stokes). That intermediate result apparently helped point the larger effort in the right direction.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;The full effort took about 88 hours of agent work, followed by another 17 hours to formalize and verify the proof in Lean.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Across the whole project, the agents exchanged close to 5 million messages and generated somewhere in the neighborhood of 300 billion output tokens.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;So the "workflow" is closer to a massive, structured search process: many parallel attempts, deliberate diversity in approach, periodic synthesis of the best ideas, and a hard formal-verification step at the end to catch mistakes.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why you shouldn't treat this as a settled result yet
&lt;/h2&gt;

&lt;p&gt;A few things are worth flagging clearly:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;It hasn't been independently certified.&lt;/strong&gt; This is OpenAI's own internal evaluation, checked by their own Lean formalization. The Clay Mathematics Institute has not verified it, and OpenAI itself has said it isn't claiming the prize for this result. Outside mathematicians need time to review it properly, and that process is still ongoing.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;There's an unresolved priority dispute.&lt;/strong&gt; Around the same time, a mathematician at NYU and a researcher at a rival AI lab had been working for roughly a year on a closely related problem, using a mix of AI tools from both labs, and had reportedly made a breakthrough of their own just days before OpenAI's announcement. &lt;/p&gt;

&lt;p&gt;OpenAI acknowledges it only started this specific push after hearing rumors about that other team's progress. The two results turned out to address related but not identical versions of the underlying question. Public statements from the NYU mathematician have raised pointed concerns about how OpenAI handled credit and communication during this period; OpenAI has disputed parts of that account. That dispute is still playing out publicly and isn't fully resolved.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Respected mathematicians are uneasy about the pattern.&lt;/strong&gt; Some senior figures in the field have pointed out a broader worry: if AI labs increasingly treat famous open problems as marketing opportunities, and only publish final answers without the failed attempts and reasoning that usually teach the field something, it could quietly damage how mathematical progress actually happens — even when the individual results are correct.&lt;/p&gt;

&lt;h2&gt;
  
  
  What this means for practitioners
&lt;/h2&gt;

&lt;p&gt;Setting aside the drama, the workflow pattern here is genuinely relevant to anyone building agentic systems:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Diversity over depth, at least initially.&lt;/strong&gt; Running many independently-framed attempts in parallel found a promising lead that a single deep attempt might have missed.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cross-pollination beats isolation.&lt;/strong&gt; The step where useful partial results were pulled out of one group and fed into others was described as a turning point, not an afterthought.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Formal verification matters when correctness is non-negotiable.&lt;/strong&gt; The Lean formalization step is doing real work here — it's the difference between "a model that sounds convincing" and "a proof that's been mechanically checked line by line."&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Scale isn't free, and it isn't magic.&lt;/strong&gt; Getting to this result reportedly took vastly more compute than OpenAI has used for past math results — and it still produced a result that overlaps with, rather than clearly surpasses, work already underway by human mathematicians assisted by AI tools.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  The takeaway
&lt;/h2&gt;

&lt;p&gt;OpenAI's claim is real in the sense that a formally-verified proof exists and has been published. It is not yet an independently confirmed, prize-worthy resolution of the Millennium Prize problem, and the story behind how it was produced is currently tangled up in a genuine dispute over credit and conduct with another research team. If you're citing this anywhere, the accurate framing is: "OpenAI published an unverified but Lean-checked proof, produced by a large coordinated multi-agent system, addressing a specific formulation of the Navier–Stokes singularity question".&lt;/p&gt;

&lt;p&gt;Worth watching over the next few months as outside mathematicians actually dig into the proof.&lt;/p&gt;

&lt;p&gt;For more such developer content, &lt;a href="https://vickybytes.com" rel="noopener noreferrer"&gt;click here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>machinelearning</category>
      <category>openai</category>
      <category>vickybytes</category>
    </item>
    <item>
      <title>GPT-6 Astra: A Developer's First Look at OpenAI's Most Capable Model Yet</title>
      <dc:creator>Shrestha Pandey</dc:creator>
      <pubDate>Tue, 08 Sep 2026 07:17:00 +0000</pubDate>
      <link>https://dev.to/shresthapandey/gpt-6-astra-a-developers-first-look-at-openais-most-capable-model-yet-2l5d</link>
      <guid>https://dev.to/shresthapandey/gpt-6-astra-a-developers-first-look-at-openais-most-capable-model-yet-2l5d</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; — GPT-6 Astra is OpenAI's newest frontier model, released September 3, 2026. It excels at end-to-end computer automation, professional document generation, and long-context coding sessions. API pricing: $10/$50 per million tokens. Best for agentic workflows, not bulk text tasks.&lt;/p&gt;
&lt;/blockquote&gt;




&lt;p&gt;OpenAI just dropped &lt;strong&gt;GPT-6 Astra&lt;/strong&gt;, and if you've been building with AI models over the past year, this is something different.&lt;/p&gt;

&lt;p&gt;This model goes beyond chat. It's built to actually &lt;em&gt;do&lt;/em&gt; work on your computer like fill forms, debug code, review security patches, even build and test small web apps—without you micromanaging every click.&lt;/p&gt;

&lt;p&gt;I spent the last few days going through the launch docs, benchmark tables, and early developer reports to separate the marketing from what's actually useful for building real stuff. Here's what I found.&lt;/p&gt;

&lt;h2&gt;
  
  
  What Is GPT-6 Astra?
&lt;/h2&gt;

&lt;p&gt;GPT-6 Astra is OpenAI's newest frontier model, released on &lt;strong&gt;September 3, 2026&lt;/strong&gt;. It's positioned as the successor to GPT-5.6 Sol and is being called the company's "most intelligent and aligned model" to date.&lt;/p&gt;

&lt;p&gt;Earlier models mostly generated text or code snippets. Astra is trained to operate a computer end-to-end. Like navigating websites, interacting with desktop apps, running tests, installing packages, and producing finished documents or slides that match your company templates.&lt;/p&gt;

&lt;h2&gt;
  
  
  The Capabilities That Matter for Developers
&lt;/h2&gt;

&lt;h3&gt;
  
  
  1. Computer Use That Doesn't Feel Like a Demo
&lt;/h3&gt;

&lt;p&gt;Astra's biggest leap comes from &lt;strong&gt;"computer use"&lt;/strong&gt;—the ability to take a high-level instruction and carry out the clicks, keystrokes, and navigation needed to complete it.&lt;/p&gt;

&lt;p&gt;Examples from the launch materials:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Filling out batches of online forms (expense reports, CRM updates)&lt;/li&gt;
&lt;li&gt;Installing and testing software while monitoring the screen for errors&lt;/li&gt;
&lt;li&gt;Running frontend QA checks on a site you just built&lt;/li&gt;
&lt;li&gt;Organizing calendars and drafting summaries directly in your email or docs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;On &lt;strong&gt;OSWorld 2.0&lt;/strong&gt; (a real desktop task benchmark), Astra scored &lt;strong&gt;72.6%&lt;/strong&gt; at roughly &lt;strong&gt;40 minutes per task&lt;/strong&gt;, compared to GPT-5.6 Sol's 65.7% at ~75 minutes. That's &lt;strong&gt;47% less time per task&lt;/strong&gt;, which directly cuts agent cost.&lt;/p&gt;

&lt;h3&gt;
  
  
  2. Professional Artifacts That Don't Need Reformatting
&lt;/h3&gt;

&lt;p&gt;If you've ever wasted an hour reformatting an LLM's markdown dump into a corporate slide template, this part will resonate.&lt;/p&gt;

&lt;p&gt;Astra is trained to:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Follow existing templates for slides, docs, and spreadsheets&lt;/li&gt;
&lt;li&gt;Match your writing and visual style&lt;/li&gt;
&lt;li&gt;Pull only the context that matters instead of padding outputs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In OpenAI's demo, Astra built a slide deck about a fictional model using just a few template slides, keeping tone and layout consistent. For teams that produce client-facing materials regularly, that template adherence is a genuine time-saver.&lt;/p&gt;

&lt;h3&gt;
  
  
  3. Coding Sessions That Remember Context
&lt;/h3&gt;

&lt;p&gt;Long debugging sessions or large refactors often hit the context window limit, forcing models to compress everything into a summary and lose details.&lt;/p&gt;

&lt;p&gt;Astra introduces a new &lt;strong&gt;Codex feature: searchable notes across context windows&lt;/strong&gt;. Instead of repeatedly summarizing, Codex keeps notes and leaves earlier windows searchable, so Astra can find a requirement or test result from an earlier message even if the note didn't capture it.&lt;/p&gt;

&lt;p&gt;You can enable this experimental feature in your &lt;code&gt;config.toml&lt;/code&gt;, and OpenAI says it'll become the default for Astra soon.&lt;/p&gt;

&lt;h3&gt;
  
  
  4. Cybersecurity Power (With Guardrails)
&lt;/h3&gt;

&lt;p&gt;This is the most sensitive capability. Astra is the first OpenAI model to reach the &lt;strong&gt;Critical&lt;/strong&gt; threshold in cybersecurity under the company's Preparedness Framework.&lt;/p&gt;

&lt;p&gt;In internal tests without production safeguards:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;100%&lt;/strong&gt; on ExploitBench (turning known vulnerabilities into working exploits)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;42.4%&lt;/strong&gt; on ExploitGym (vs 30.3% for GPT-5.6 Sol)&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;88.0%&lt;/strong&gt; on SRE-Bench (reverse-engineering binaries without source code)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Because of this, exploit-creation capabilities are &lt;strong&gt;gated at launch&lt;/strong&gt;. Astra will help with secure code review and patching, but refuses to create proof-of-concept exploits until access expands via OpenAI's Daybreak program.&lt;/p&gt;

&lt;p&gt;Expect occasional pauses where you're asked to review an action before continuing—especially on security-related tasks.&lt;/p&gt;

&lt;h2&gt;
  
  
  Benchmarks: The Good, the Nuanced, and the "Read the Footnotes"
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Where Astra Clearly Leads
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Benchmark&lt;/th&gt;
&lt;th&gt;Astra&lt;/th&gt;
&lt;th&gt;GPT-5.6 Sol&lt;/th&gt;
&lt;th&gt;Claude Opus 5&lt;/th&gt;
&lt;th&gt;Notes&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;OSWorld 2.0&lt;/td&gt;
&lt;td&gt;72.6%&lt;/td&gt;
&lt;td&gt;65.7%&lt;/td&gt;
&lt;td&gt;70.2%&lt;/td&gt;
&lt;td&gt;Real desktop tasks, 47% less time per task than Sol&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;FrontierMath Tier 4&lt;/td&gt;
&lt;td&gt;97.6%&lt;/td&gt;
&lt;td&gt;83.0%&lt;/td&gt;
&lt;td&gt;73.2%&lt;/td&gt;
&lt;td&gt;Research-grade math&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ExploitBench&lt;/td&gt;
&lt;td&gt;100%&lt;/td&gt;
&lt;td&gt;78.5%&lt;/td&gt;
&lt;td&gt;70%&lt;/td&gt;
&lt;td&gt;Gated capability&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Terminal-Bench 4.0&lt;/td&gt;
&lt;td&gt;57.9%&lt;/td&gt;
&lt;td&gt;37.3%&lt;/td&gt;
&lt;td&gt;52.6%&lt;/td&gt;
&lt;td&gt;Software engineering + system tasks&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h3&gt;
  
  
  Where It's Not a Clean Sweep
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Humanity's Last Exam (with tools):&lt;/strong&gt; Astra scores &lt;strong&gt;57.2%&lt;/strong&gt;, behind Claude Fable 5.1's 65.0% and Opus 5's 63.6%.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;ARC-AGI-3:&lt;/strong&gt; The headline &lt;strong&gt;99.9%&lt;/strong&gt; was achieved using OpenAI's responses API harness, which changes two settings to better match real-world performance. The changes do not specifically target ARC-AGI-3.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Alignment and Safety
&lt;/h3&gt;

&lt;p&gt;On OpenAI's internal computer-use safety benchmark (lower is better), Astra posts &lt;strong&gt;2.4%&lt;/strong&gt; vs 22.0% for GPT-5.6 Sol.&lt;/p&gt;

&lt;p&gt;OpenAI's evaluations found Astra's written reasoning harder to monitor than GPT-5.6 Sol's, based on tests that explicitly asked it to evade monitoring. OpenAI attributes this to Astra's greater control over written reasoning on simpler tasks and ability to solve problems with fewer written steps. Improving monitorability remains a research priority.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pricing and Access
&lt;/h2&gt;

&lt;p&gt;Astra is rolling out in phases:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Initially to a limited set of organizations&lt;/li&gt;
&lt;li&gt;Then to all ChatGPT Plus, Pro, Business, and Enterprise users over the coming days&lt;/li&gt;
&lt;li&gt;Available via OpenAI API as &lt;code&gt;gpt-6-astra&lt;/code&gt;, Microsoft Azure, and AWS Bedrock&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  API Pricing (Standard)
&lt;/h3&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Mode&lt;/th&gt;
&lt;th&gt;Input&lt;/th&gt;
&lt;th&gt;Output&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Standard&lt;/td&gt;
&lt;td&gt;$10 / 1M tokens&lt;/td&gt;
&lt;td&gt;$50 / 1M tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fast mode&lt;/td&gt;
&lt;td&gt;~$20 / 1M tokens&lt;/td&gt;
&lt;td&gt;~$100 / 1M tokens&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Fast mode delivers up to &lt;strong&gt;2x speed at 2x price&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;That's well above GPT-5.6 Terra's $2/$12 and Claude Opus 5's $5/$25, so Astra is priced as a frontier reasoning and automation model.&lt;/p&gt;

&lt;p&gt;Enterprise admins can enable Astra per workspace; it's off by default at launch. Pro, Business, and Enterprise plans also get access to &lt;strong&gt;GPT-6 Astra Pro&lt;/strong&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  Early Real-World Examples (From the Community)
&lt;/h2&gt;

&lt;p&gt;While I haven't had hands-on time yet, several developers have shared demos &lt;strong&gt;from the community&lt;/strong&gt;:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;3D design in Blender:&lt;/strong&gt; Recreating a house from an image with full geometry, furniture, and appliances—renderable locally at 60fps.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Game design:&lt;/strong&gt; One-shotting playable games with graphics and motion that go far beyond rudimentary prototypes.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Video to code:&lt;/strong&gt; Taking a screen recording and recreating the interaction with accurate, runnable code.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These examples show Astra handling multi-step, visual, and interactive tasks that earlier models would've struggled to even plan.&lt;/p&gt;

&lt;h2&gt;
  
  
  What This Means for Your Stack
&lt;/h2&gt;

&lt;p&gt;If you're building agentic workflows, here's how I'd think about Astra:&lt;/p&gt;

&lt;h3&gt;
  
  
  Use it for:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;End-to-end computer tasks&lt;/li&gt;
&lt;li&gt;Professional document/slide generation&lt;/li&gt;
&lt;li&gt;Long coding sessions in Codex&lt;/li&gt;
&lt;li&gt;Defensive cybersecurity (code review, patching)&lt;/li&gt;
&lt;li&gt;Document-heavy pipelines (1M-token retrieval at 96.3% on MRCR v2)&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Skip it for:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Routine bulk-text tasks where cheaper models suffice. At $10/$50 per million tokens, it's overkill for simple summarization or chat.&lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Watch out for:
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Security-related pauses. If your workflow touches cybersecurity, budget for interruptions and read the system card before committing.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Final Take
&lt;/h2&gt;

&lt;p&gt;GPT-6 Astra isn't trying to win every benchmark. It's making a clear bet: the next competitive frontier is &lt;strong&gt;agentic execution&lt;/strong&gt;—models that can reliably use a computer, produce polished artifacts, and stay within authorized boundaries.&lt;/p&gt;

&lt;p&gt;The saturated math and abstract-reasoning scores are impressive, but the number I'd act on is &lt;strong&gt;OSWorld 2.0 at 72.6% in 40 minutes&lt;/strong&gt;. An agent that finishes real desktop work faster and more accurately than its predecessor is the practical difference for most teams.&lt;/p&gt;

&lt;p&gt;Temper the "AGI" hype with two caveats:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;The marquee ARC-AGI-3 figure was achieved using OpenAI's responses API harness, which changes two settings to better match real-world performance. Results may differ with standard evaluation setups.&lt;/li&gt;
&lt;li&gt;On Humanity's Last Exam with tools, Astra actually trails Claude Fable 5.1 and Opus 5.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;This is a strong, specialized model—not a clean sweep across every metric. But for devs building automation, professional tooling, or defensive security workflows, it's the most capable option OpenAI has shipped to date.&lt;/p&gt;

&lt;h2&gt;
  
  
  References
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://openai.com/index/gpt-6-astra/" rel="noopener noreferrer"&gt;OpenAI — GPT-6 Astra: A new generation of intelligence&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://platform.openai.com/docs/models" rel="noopener noreferrer"&gt;OpenAI API — Models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://openai.com/api/pricing/" rel="noopener noreferrer"&gt;OpenAI — Pricing&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.anthropic.com/pricing" rel="noopener noreferrer"&gt;Anthropic — Pricing&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;




&lt;p&gt;For more such developer content, &lt;a href="https://vickybytes.com" rel="noopener noreferrer"&gt;click here&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>gpt6</category>
      <category>gptastra</category>
      <category>vickybytes</category>
    </item>
    <item>
      <title>AI Coding Agents Need Sandboxes Before They Need Better Models</title>
      <dc:creator>Shrestha Pandey</dc:creator>
      <pubDate>Sat, 05 Sep 2026 16:17:14 +0000</pubDate>
      <link>https://dev.to/shresthapandey/ai-coding-agents-need-sandboxes-before-they-need-better-models-3m17</link>
      <guid>https://dev.to/shresthapandey/ai-coding-agents-need-sandboxes-before-they-need-better-models-3m17</guid>
      <description>&lt;p&gt;Last month I gave an agent full shell access on a side project, stepped away, and came back to find it had run &lt;code&gt;npm install&lt;/code&gt; on a package I didn't recognize — something pulled from a typo-squatted namespace with a name close enough to fool it. Nothing bad happened, as far as I could tell. But I lost twenty minutes auditing my own machine instead of shipping anything, which is the opposite of what the tool was supposed to give me.&lt;/p&gt;

&lt;p&gt;Claude and GPT-5-class models are genuinely solid at working through multi-step coding tasks now. The problem was that nothing sat between "the model decided to run a command" and that command actually executing, on my laptop, with my permissions.&lt;/p&gt;

&lt;p&gt;Everyone wants to talk about which model reasons best. Almost nobody asks what happens the day the best-reasoning model is confidently wrong.&lt;/p&gt;

&lt;h2&gt;
  
  
  Two failure modes
&lt;/h2&gt;

&lt;p&gt;Agents fail in ways that tend to get lumped together but really aren't the same thing.&lt;/p&gt;

&lt;p&gt;One is a capability failure — bad logic, a misread requirement, a function that just doesn't do the job. Annoying, sure, but you read the diff, reject it, move on. Nothing's lost but time.&lt;/p&gt;

&lt;p&gt;The other is an execution failure: the agent deletes something it shouldn't have, overwrites a &lt;code&gt;.env&lt;/code&gt; file, pushes straight to main, pulls in a compromised dependency, or fires off a command whose effects land somewhere outside the project folder entirely. You often don't get a chance to catch this one before it happens, because the whole appeal of an "autonomous" agent is that it acts first and reports back after.&lt;/p&gt;

&lt;p&gt;Better models shrink the first category. They barely touch the second. A more capable model can still hallucinate a destructive command with total confidence — arguably it does this more smoothly now, which if anything makes the mistake easier to trust and harder to notice.&lt;/p&gt;

&lt;h2&gt;
  
  
  What people are running
&lt;/h2&gt;

&lt;p&gt;Cut through the marketing and most agentic coding setups fall into one of three buckets.&lt;/p&gt;

&lt;p&gt;Straight in your shell, under your own user account. Quick to set up. Also means the agent inherits everything you have access to — SSH keys, cloud credentials sitting in &lt;code&gt;~/.aws&lt;/code&gt;, active browser sessions if it can reach them, write access across your whole filesystem.&lt;/p&gt;

&lt;p&gt;Inside Docker, but usually with the project directory bind-mounted and no real limits on outbound traffic. An improvement, technically. Still not much of a wall if the container can talk to the internet freely and something manages to trick the agent into reaching out.&lt;/p&gt;

&lt;p&gt;A proper ephemeral VM, the CI-style approach. Safest of the three, and also the one almost nobody bothers with day to day, because it's slower to wire up and adds friction to every iteration.&lt;/p&gt;

&lt;p&gt;Most people land on the first option, because it's the one that works with zero extra setup. It's also the one offering the least protection.&lt;/p&gt;

&lt;p&gt;Here's the part that doesn't get enough attention: the agent doesn't need bad intentions to cause damage. It just needs to read something bad. A poisoned README, a scraped answer from some forum, a dependency with a shady postinstall script — any of these can push an agent toward a command that looks perfectly reasonable to the model and completely wrong to you. Prompt injection through untrusted content isn't some far-off hypothetical for these tools. It's just what tends to happen once you hand a language model shell access and let it browse.&lt;/p&gt;

&lt;h2&gt;
  
  
  Smarter models don't fix this, they shift it
&lt;/h2&gt;

&lt;p&gt;This is the counterintuitive bit. You'd expect better reasoning to lower risk across the board. Instead it just moves the risk somewhere else.&lt;/p&gt;

&lt;p&gt;As models get better, teams reasonably let them run longer stretches without checking in. Early copilots suggested one line and paused. Current agents plan out a task, run through five or ten steps, and only surface once they think they're done — that's the entire selling point, less babysitting required.&lt;/p&gt;

&lt;p&gt;But less babysitting means more real actions happen in the gap between human checkpoints. If step three out of ten goes wrong and nobody looks until step ten, you've now got nine additional automated actions building on top of a bad call before anyone catches it. A weaker model that got reviewed after every step would, in practice, have been the safer choice — even with worse reasoning.&lt;/p&gt;

&lt;p&gt;So the pattern holds: model quality climbs, autonomy climbs with it, and the blast radius of any single mistake climbs too, unless something else is putting a ceiling on it.&lt;/p&gt;

&lt;h2&gt;
  
  
  What needs to be in place
&lt;/h2&gt;

&lt;p&gt;A sandbox is more than tossing the process into Docker and moving on. Real containment needs several pieces working together.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Filesystem isolation that holds up.&lt;/strong&gt; The agent should see only the project it's working on — not your home directory, not neighboring repos, not your dotfiles. Writes ideally land on an overlay or snapshot you can discard entirely if a session goes wrong.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Network access denied by default.&lt;/strong&gt; This single change eliminates most exfiltration risk from prompt injection on its own. If the agent can't reach arbitrary hosts, it barely matters if something tries to trick it into trying.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Actual resource limits.&lt;/strong&gt; CPU, memory, wall-clock time capped. A runaway loop shouldn't be able to fork-bomb a host or quietly run up a serious cloud bill while no one's watching.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Credentials that are scoped and short-lived.&lt;/strong&gt; Not a master API key sitting in an environment variable for the whole session — a narrow token, issued right before it's needed, expiring soon after.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Logs kept somewhere the agent can't touch.&lt;/strong&gt; Every command run, every file opened, recorded outside the sandbox itself, so if something goes wrong you can reconstruct it instead of guessing.&lt;/p&gt;

&lt;p&gt;Firecracker microVMs, gVisor, and OCI containers locked down with tight seccomp profiles each handle part of this. What's missing is any of it being the default in the tools developers actually use. Right now it's an advanced setting most people skip, because skipping it saves one command and the risk feels abstract until it isn't.&lt;/p&gt;

&lt;h2&gt;
  
  
  This is a workflow decision
&lt;/h2&gt;

&lt;p&gt;None of this argues against agentic coding tools, and it doesn't replace reviewing what they produce. It changes what that review is actually protecting. If an agent goes off track inside an isolated, network-restricted, disposable environment, the worst outcome is: task failed, discard the sandbox, try again. If it goes off track on your real machine, the worst outcome is something you're explaining to your team on Monday.&lt;/p&gt;

&lt;p&gt;A setup worth aiming for, if you're adopting this seriously:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;One disposable sandbox per task rather than per session, so nothing outlives its purpose&lt;/li&gt;
&lt;li&gt;Every diff reviewed before merging, no "it's probably fine" exceptions&lt;/li&gt;
&lt;li&gt;Network access off by default, opened per dependency only when there's a specific reason&lt;/li&gt;
&lt;li&gt;Credentials issued just-in-time, scoped as tightly as the task allows&lt;/li&gt;
&lt;li&gt;Command and file-access logs kept outside the sandbox regardless of outcome&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;That's more work up front than pulling an agent CLI and pointing it at a repo. It's also the gap between occasionally getting a bad diff and occasionally getting a security incident.&lt;/p&gt;

&lt;h2&gt;
  
  
  Which one matters more
&lt;/h2&gt;

&lt;p&gt;Model providers will keep shipping better reasoning and longer context windows, and that's a good thing — this isn't an argument against it. But none of it touches the risk most teams are already carrying: agents with real execution power and nothing meaningful containing them.&lt;/p&gt;

&lt;p&gt;Sandboxing doesn't show up on a leaderboard, so it gets a fraction of the attention model releases do. But it's the piece that decides whether handing an AI the ability to run commands turns into a genuine productivity gain or a liability sitting one bad prompt injection away from becoming your problem. Before picking which model to wire into an agent, it's worth working out what your setup actually does on the day that model is confidently wrong.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>agents</category>
      <category>programming</category>
      <category>sandbox</category>
    </item>
    <item>
      <title>Kubeflow Just Graduated From CNCF — Here's What Changes</title>
      <dc:creator>Shrestha Pandey</dc:creator>
      <pubDate>Fri, 28 Aug 2026 11:22:58 +0000</pubDate>
      <link>https://dev.to/shresthapandey/kubeflow-just-graduated-from-cncf-heres-what-changes-5gli</link>
      <guid>https://dev.to/shresthapandey/kubeflow-just-graduated-from-cncf-heres-what-changes-5gli</guid>
      <description>&lt;p&gt;On August 17, 2026, the Cloud Native Computing Foundation announced that Kubeflow had reached Graduated status, its top tier of project maturity, shared with names like Kubernetes, Prometheus, and Envoy. If you've been running Kubeflow in production for a while, this might read as a formality. If you've been on the fence about adopting it, it's worth understanding why this milestone actually matters and where it leaves the project relative to the rest of the MLOps landscape.&lt;/p&gt;

&lt;h2&gt;
  
  
  What "graduated" means
&lt;/h2&gt;

&lt;p&gt;CNCF projects move through three stages: Sandbox, Incubating, and Graduated. Getting to Graduated isn't just a matter of time in the ecosystem or GitHub star count, though Kubeflow has plenty of both, over 6,600 contributors across more than 1,000 organizations and north of 33,000 stars at the time of graduation. The bar includes things that are much harder to fake:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A completed third-party security audit&lt;/li&gt;
&lt;li&gt;A documented, transparent governance model with a formal steering committee&lt;/li&gt;
&lt;li&gt;Adoption of the CNCF Code of Conduct&lt;/li&gt;
&lt;li&gt;A Core Infrastructure Initiative Best Practices badge, which checks for things like reproducible builds, vulnerability disclosure processes, and test coverage&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In other words, graduation is CNCF's way of telling enterprise buyers: this project isn't going anywhere, and it's been vetted well enough that your security and compliance teams don't need to treat it as a science experiment.&lt;/p&gt;

&lt;p&gt;That distinction matters more for Kubeflow than for a lot of graduated projects, because Kubeflow sits in a category — AI/ML infrastructure — that CNCF has historically been light on. It's one of the first AI-native projects to reach this tier, which says less about Kubeflow specifically and more about how young "cloud native AI" is as a formal category within CNCF's portfolio.&lt;/p&gt;

&lt;h2&gt;
  
  
  Why this is happening now
&lt;/h2&gt;

&lt;p&gt;Kubeflow started in 2017 as an internal Google project — famously demoed with a hot-dog/not-hot-dog classifier by co-founder David Aronchick and colleagues — built to answer a fairly narrow question: how do you run TensorFlow training jobs on Kubernetes without reinventing scheduling, storage, and orchestration every time. Nine years later, the problem it addresses has expanded well past training jobs.&lt;/p&gt;

&lt;p&gt;Model training used to be the whole story. Now teams need to move seamlessly between data preprocessing, experimentation notebooks, distributed training, fine-tuning, batch inference, and long-running model serving — often across multiple clouds or on-prem clusters for regulatory reasons. Doing all of that with a patchwork of point solutions creates real friction: different auth models, different observability stacks, different ways of expressing "give me 8 GPUs for 6 hours."&lt;/p&gt;

&lt;p&gt;Kubeflow's pitch has always been that Kubernetes primitives — pods, custom resources, controllers — are a reasonable common substrate for all of that, if someone builds the right abstractions on top. Graduation is CNCF validating that the project has actually delivered on that pitch at a scale enterprises can trust.&lt;/p&gt;

&lt;h2&gt;
  
  
  What's actually in the box
&lt;/h2&gt;

&lt;p&gt;If you haven't looked at Kubeflow recently, it's no longer a single monolithic install. The project is a collection of components that you can adopt individually or together, which is a big part of why it's found its way into so many different kinds of teams.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Training operators&lt;/strong&gt; handle distributed training jobs across PyTorch, TensorFlow, XGBoost, and MPI. Instead of hand-rolling a StatefulSet and wiring up rank/world-size environment variables yourself, you define a &lt;code&gt;PyTorchJob&lt;/code&gt; custom resource with a worker count and a container image, and the operator handles pod placement, restart-on-failure semantics, and networking between workers. It's the part of Kubeflow most teams touch first, because it replaces the most tedious boilerplate.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Katib&lt;/strong&gt; does hyperparameter tuning and neural architecture search. You define a search space (learning rate, batch size, layer count, whatever you're sweeping) and an objective metric, and Katib runs a configurable number of trials in parallel using strategies like Bayesian optimization, Hyperband, or a straightforward grid search — then reports back which trial actually won. It's most useful once you've got a training pipeline stable enough to iterate on, rather than during initial model development.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Kubeflow Pipelines&lt;/strong&gt; is the orchestration layer — it lets you define a multi-step workflow (pull data, validate it, train, evaluate, conditionally deploy) as a DAG in Python using the KFP SDK, and it compiles down to Argo Workflows under the hood. This is the component that turns "a notebook someone ran manually" into something that runs on a schedule, retries on failure, and produces an audit trail of exactly which data and code produced which model.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Notebooks&lt;/strong&gt; gives you managed Jupyter environments with GPU access, persistent storage, and RBAC baked in, so a data scientist can spin up an environment with a specific CUDA version and a shared PVC without filing a platform ticket.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;KServe&lt;/strong&gt;, which graduated as its own separate CNCF project, handles model serving — including scale-to-zero for inference endpoints that see intermittent traffic, canary rollouts between model versions, and standardized inference protocols (V2/Open Inference Protocol) so your client code doesn't need to know whether the backend is a scikit-learn model or a large PyTorch service.&lt;/p&gt;

&lt;p&gt;It also plays deliberately well with other CNCF projects rather than trying to replace them: Prometheus for monitoring, Istio for service-to-service traffic and mTLS, Kueue for job queuing and quota management across teams. That composability is part of the reason CNCF membership makes sense for Kubeflow in the first place — it was designed from the start to be one piece of a larger cloud native stack, not a walled garden.&lt;/p&gt;

&lt;h2&gt;
  
  
  Trying it locally
&lt;/h2&gt;

&lt;p&gt;You don't need a GPU cluster to get a feel for the core workflow. A local &lt;code&gt;kind&lt;/code&gt; cluster is enough to install Kubeflow Pipelines standalone and run a toy pipeline end to end:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;&lt;span class="c"&gt;# spin up a local cluster&lt;/span&gt;
kind create cluster &lt;span class="nt"&gt;--name&lt;/span&gt; kubeflow-demo

&lt;span class="c"&gt;# install the Pipelines standalone deployment (not the full platform)&lt;/span&gt;
&lt;span class="nb"&gt;export &lt;/span&gt;&lt;span class="nv"&gt;PIPELINE_VERSION&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;2.3.0
kubectl apply &lt;span class="nt"&gt;-k&lt;/span&gt; &lt;span class="s2"&gt;"github.com/kubeflow/pipelines/manifests/kustomize/cluster-scoped-resources?ref=&lt;/span&gt;&lt;span class="nv"&gt;$PIPELINE_VERSION&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;
kubectl &lt;span class="nb"&gt;wait&lt;/span&gt; &lt;span class="nt"&gt;--for&lt;/span&gt; &lt;span class="nv"&gt;condition&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;established &lt;span class="nt"&gt;--timeout&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;60s crd/applications.app.k8s.io
kubectl apply &lt;span class="nt"&gt;-k&lt;/span&gt; &lt;span class="s2"&gt;"github.com/kubeflow/pipelines/manifests/kustomize/env/platform-agnostic-pns?ref=&lt;/span&gt;&lt;span class="nv"&gt;$PIPELINE_VERSION&lt;/span&gt;&lt;span class="s2"&gt;"&lt;/span&gt;

&lt;span class="c"&gt;# wait for everything to come up, then port-forward the UI&lt;/span&gt;
kubectl port-forward &lt;span class="nt"&gt;-n&lt;/span&gt; kubeflow svc/ml-pipeline-ui 8080:80
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;From there, &lt;code&gt;pip install kfp&lt;/code&gt; gets you the SDK to define a pipeline as plain Python:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight python"&gt;&lt;code&gt;&lt;span class="kn"&gt;from&lt;/span&gt; &lt;span class="n"&gt;kfp&lt;/span&gt; &lt;span class="kn"&gt;import&lt;/span&gt; &lt;span class="n"&gt;dsl&lt;/span&gt;

&lt;span class="nd"&gt;@dsl.component&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;say_hello&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;-&amp;gt;&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sa"&gt;f&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;hello, &lt;/span&gt;&lt;span class="si"&gt;{&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="si"&gt;}&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;

&lt;span class="nd"&gt;@dsl.pipeline&lt;/span&gt;
&lt;span class="k"&gt;def&lt;/span&gt; &lt;span class="nf"&gt;hello_pipeline&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="nb"&gt;str&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;world&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="p"&gt;):&lt;/span&gt;
    &lt;span class="nf"&gt;say_hello&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="o"&gt;=&lt;/span&gt;&lt;span class="n"&gt;name&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Compile it with &lt;code&gt;kfp.compiler.Compiler().compile(hello_pipeline, "pipeline.yaml")&lt;/code&gt; and upload the resulting YAML through the UI at &lt;code&gt;localhost:8080&lt;/code&gt;, and you'll see the DAG, the run logs, and the artifact lineage for even this trivial example. It's a five-minute way to understand what the pipelines layer is actually doing before you commit to installing the full platform, which is a much heavier lift involving Istio, Dex for auth, and a fair amount of resource overhead.&lt;/p&gt;

&lt;h2&gt;
  
  
  What graduation changes in practice
&lt;/h2&gt;

&lt;p&gt;For teams already running Kubeflow, not much changes overnight from a technical standpoint. The code doesn't suddenly get better on graduation day. What does change:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Procurement gets easier.&lt;/strong&gt; A lot of platform teams have internal policies that gate adoption of open source infrastructure based on CNCF maturity level. Graduated status can unblock deployments that were previously stuck behind a security review or a "let's wait and see" decision from leadership.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Vendor commitment becomes more credible.&lt;/strong&gt; Companies like Red Hat, Bloomberg, NVIDIA, LinkedIn, and Spotify have already built internal ML platforms on top of Kubeflow. Graduation signals to other vendors that investing engineering time in Kubeflow integrations — rather than building a proprietary equivalent — is a safer long-term bet.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;The neutral-governance argument gets stronger.&lt;/strong&gt; One of the recurring objections to any Google-originated project is the fear that a single vendor controls the roadmap. A formal steering committee with defined governance, verified by CNCF's audit process, is a direct answer to that concern.&lt;/p&gt;

&lt;h2&gt;
  
  
  Where it fits against alternatives
&lt;/h2&gt;

&lt;p&gt;Kubeflow isn't the only option for running ML on Kubernetes, and it's worth being honest about that. Ray and Ray Serve are strong if your workloads lean heavily toward distributed Python and you don't need the full pipeline-orchestration layer. MLflow remains popular for experiment tracking without the operational overhead of running a full Kubernetes-native platform. Managed offerings from the big three clouds solve a lot of the same problems if you're comfortable trading portability for convenience.&lt;/p&gt;

&lt;p&gt;Here's roughly how they compare on the dimensions that tend to actually drive the decision:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;&lt;/th&gt;
&lt;th&gt;Kubeflow&lt;/th&gt;
&lt;th&gt;Ray / Ray Serve&lt;/th&gt;
&lt;th&gt;MLflow&lt;/th&gt;
&lt;th&gt;Managed cloud (SageMaker, Vertex, Azure ML)&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Scope&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Full lifecycle: data prep → training → serving&lt;/td&gt;
&lt;td&gt;Distributed compute + serving&lt;/td&gt;
&lt;td&gt;Experiment tracking + model registry&lt;/td&gt;
&lt;td&gt;Full lifecycle&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Multi-cloud / on-prem portability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High — Kubernetes-native&lt;/td&gt;
&lt;td&gt;Medium — needs a Kubernetes or VM backend&lt;/td&gt;
&lt;td&gt;High — mostly backend-agnostic&lt;/td&gt;
&lt;td&gt;Low — locked to one cloud&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Operational overhead&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;High (Istio, Dex, multiple CRDs)&lt;/td&gt;
&lt;td&gt;Medium&lt;/td&gt;
&lt;td&gt;Low&lt;/td&gt;
&lt;td&gt;Low (managed by vendor)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Best fit&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Regulated, multi-environment enterprises&lt;/td&gt;
&lt;td&gt;Python-heavy distributed workloads, RL, LLM serving&lt;/td&gt;
&lt;td&gt;Teams that just need tracking, not orchestration&lt;/td&gt;
&lt;td&gt;Teams fully committed to one cloud&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Governance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;CNCF-graduated, vendor-neutral&lt;/td&gt;
&lt;td&gt;Backed by Anyscale&lt;/td&gt;
&lt;td&gt;Backed by Databricks&lt;/td&gt;
&lt;td&gt;Single-vendor&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;None of these rows are meant to declare an outright winner, they mostly just make explicit the tradeoff that's already implicit in each tool's design. Ray optimizes for developer velocity on distributed Python; Kubeflow optimizes for portability and governance at the cost of operational complexity; managed services optimize for "someone else runs this," which is a perfectly reasonable thing to want until portability becomes a hard requirement.&lt;/p&gt;

&lt;p&gt;Kubeflow's differentiator is really about scope and portability: if you need one platform that spans data processing through serving, that has to run identically across AWS, GCP, on-prem, and air-gapped environments for regulatory reasons, the calculus tilts toward Kubeflow specifically because it's Kubernetes-native rather than cloud-native-to-one-cloud. That's a narrower use case than "everyone doing ML," but it's exactly the use case a lot of regulated enterprises — finance, healthcare, government contractors — actually have.&lt;/p&gt;

&lt;h2&gt;
  
  
  Should this change what you do next quarter?
&lt;/h2&gt;

&lt;p&gt;If you're already running Kubeflow, graduation is a good moment to revisit your internal risk assessment and possibly simplify the approval story for expanding its footprint. If you're evaluating platforms and portability or multi-cloud/on-prem flexibility matters to you, it's now much easier to make the case that Kubeflow is a safe long-term bet rather than a project you'd have to migrate off of in three years. If your workloads are firmly single-cloud and you're happy with a managed service, graduation doesn't really change that calculus — the managed offering still wins on operational simplicity.&lt;/p&gt;

&lt;p&gt;The bigger signal here is about CNCF's own trajectory. AI infrastructure has been conspicuously underrepresented in CNCF's graduated tier relative to how much of the industry's engineering effort is now going toward AI workloads. Kubeflow being one of the first to cross that line suggests the foundation is actively building out that category, and it probably won't be the last AI-focused project to get there this year.&lt;/p&gt;

</description>
      <category>kubeflow</category>
      <category>cncf</category>
      <category>mlops</category>
      <category>vickybytes</category>
    </item>
  </channel>
</rss>
