<?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>Forem: Orchid Files</title>
    <description>The latest articles on Forem by Orchid Files (@orchidfiles).</description>
    <link>https://forem.com/orchidfiles</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.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3625701%2F579307cf-8816-4794-bbdf-95beb86470bf.png</url>
      <title>Forem: Orchid Files</title>
      <link>https://forem.com/orchidfiles</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/orchidfiles"/>
    <language>en</language>
    <item>
      <title>I built LoreData: a mock data generator with characters from Breaking Bad, Game of Thrones, Harry Potter, and other universes.</title>
      <dc:creator>Orchid Files</dc:creator>
      <pubDate>Mon, 13 Apr 2026 16:47:01 +0000</pubDate>
      <link>https://forem.com/orchidfiles/i-built-loredata-a-mock-data-generator-with-characters-from-breaking-bad-game-of-thrones-harry-70j</link>
      <guid>https://forem.com/orchidfiles/i-built-loredata-a-mock-data-generator-with-characters-from-breaking-bad-game-of-thrones-harry-70j</guid>
      <description>&lt;p&gt;In product demos, you often see names like John Doe, Jane Smith, Test User, and random emails like &lt;code&gt;test@example.com&lt;/code&gt;. That works fine for smoke tests. It falls short in demos, seeds, mockups, and showcase pages.&lt;/p&gt;

&lt;p&gt;The problem is not that the data is fake. The problem is that it is incoherent: the name and address are random, the &lt;code&gt;bio&lt;/code&gt; feels disconnected, and the persona's interests and profession feel generated. In a demo, that is obvious right away.&lt;/p&gt;

&lt;p&gt;I wanted a generator that builds not just a random set of fields, but a coherent persona from a single fictional universe.&lt;/p&gt;

&lt;p&gt;Demo: &lt;a href="https://loredata.orchidfiles.com" rel="noopener noreferrer"&gt;https://loredata.orchidfiles.com&lt;/a&gt;&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  What LoreData does
&lt;/h3&gt;

&lt;p&gt;LoreData generates personas from pop culture universes: The Simpsons, Star Wars, The Sopranos, and more. It currently supports 25 universes. Every field in a persona comes from the same universe.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;person&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;group&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;loredata&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;person&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;universe&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;breaking-bad&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="c1"&gt;// {&lt;/span&gt;
&lt;span class="c1"&gt;//   firstName: 'Walter',&lt;/span&gt;
&lt;span class="c1"&gt;//   lastName: 'White',&lt;/span&gt;
&lt;span class="c1"&gt;//   username: 'heisenberg',&lt;/span&gt;
&lt;span class="c1"&gt;//   email: 'blue_sky_cook@lospollos.com',&lt;/span&gt;
&lt;span class="c1"&gt;//   quote: "I am the one who knocks.",&lt;/span&gt;
&lt;span class="c1"&gt;//   profession: 'Chemistry teacher',&lt;/span&gt;
&lt;span class="c1"&gt;//   interests: ['chemistry', 'cooking', 'family'],&lt;/span&gt;
&lt;span class="c1"&gt;//   address: { street: '308 Negra Arroyo Lane', city: 'Albuquerque', state: 'NM' },&lt;/span&gt;
&lt;span class="c1"&gt;//   symbol: '☢️',&lt;/span&gt;
&lt;span class="c1"&gt;//   universe: 'breaking-bad'&lt;/span&gt;
&lt;span class="c1"&gt;// }&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can generate a group too:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;team&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;group&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;universe&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;game-of-thrones&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="c1"&gt;// [&lt;/span&gt;
&lt;span class="c1"&gt;//   { firstName: 'Jon', lastName: 'Snow', username: 'lord_commander', ... },&lt;/span&gt;
&lt;span class="c1"&gt;//   { firstName: 'Daenerys', lastName: 'Targaryen', username: 'mother_of_dragons', ... },&lt;/span&gt;
&lt;span class="c1"&gt;//   { firstName: 'Tyrion', lastName: 'Lannister', username: 'halfman', ... },&lt;/span&gt;
&lt;span class="c1"&gt;// ]&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  This is not a replacement for Faker.js
&lt;/h3&gt;

&lt;p&gt;&lt;code&gt;Faker.js&lt;/code&gt; generates realistic random data. The fields may be valid, but within a single persona they are not really connected: there is no shared context and no character identity. LoreData solves a different problem: personas for interfaces, where recognizability and internal consistency matter more than field validity alone.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Install and CLI
&lt;/h3&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npm &lt;span class="nb"&gt;install &lt;/span&gt;loredata        &lt;span class="c"&gt;# library&lt;/span&gt;
npm &lt;span class="nb"&gt;install&lt;/span&gt; &lt;span class="nt"&gt;-g&lt;/span&gt; loredata     &lt;span class="c"&gt;# CLI&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The CLI supports filtering by interests, name, and output format:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;loredata person &lt;span class="nt"&gt;--universe&lt;/span&gt; sherlock
loredata person &lt;span class="nt"&gt;--interests&lt;/span&gt; chemistry,cooking
loredata person &lt;span class="nt"&gt;--interests&lt;/span&gt; chemistry,cooking &lt;span class="nt"&gt;--interests-mode&lt;/span&gt; and
loredata person &lt;span class="nt"&gt;--name&lt;/span&gt; walter &lt;span class="nt"&gt;--format&lt;/span&gt; json
loredata group &lt;span class="nt"&gt;--universe&lt;/span&gt; friends &lt;span class="nt"&gt;--size&lt;/span&gt; 5
loredata universes
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Deterministic output
&lt;/h3&gt;

&lt;p&gt;If you need reproducible results, for example for test fixtures, just pass a &lt;code&gt;seed&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;person&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;universe&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;matrix&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;seed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;team&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;group&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="na"&gt;universe&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;matrix&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;size&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="na"&gt;seed&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt; &lt;span class="mi"&gt;42&lt;/span&gt; &lt;span class="p"&gt;});&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Given the same &lt;code&gt;seed&lt;/code&gt;, you always get the same persona or the same group of personas.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Browser entry point
&lt;/h3&gt;

&lt;p&gt;The library also supports browser environments through a separate entry point with no dependency on &lt;code&gt;fs&lt;/code&gt; or &lt;code&gt;path&lt;/code&gt;:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight typescript"&gt;&lt;code&gt;&lt;span class="k"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;loadUniverse&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="nx"&gt;personFromData&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="k"&gt;from&lt;/span&gt; &lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;loredata/browser&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;

&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;universe&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;loadUniverse&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="s1"&gt;breaking-bad&lt;/span&gt;&lt;span class="dl"&gt;'&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;span class="kd"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;p&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="nf"&gt;personFromData&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;universe&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It works with Vite, webpack, and any browser bundler.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  How the project is structured
&lt;/h3&gt;

&lt;p&gt;It is a TypeScript monorepo built with &lt;code&gt;pnpm&lt;/code&gt;. It includes an npm package with the library, a CLI, and a web app for the demo.&lt;/p&gt;

&lt;p&gt;The data lives in JSON datasets: each universe has separate files for metadata, characters, and addresses. To add a new universe, you only need to create &lt;code&gt;data/{id}/meta.json&lt;/code&gt;, &lt;code&gt;data/{id}/characters.json&lt;/code&gt;, and &lt;code&gt;data/{id}/addresses.json&lt;/code&gt;. There is no manual registry. The loader picks up the new folder automatically.&lt;/p&gt;

&lt;p&gt;Here, the data matters as much as the code. Product quality depends on canon accuracy: the right professions, real locations from the source material, and quotes that fit the character. AI agents handle about 90% of the dataset drafting work.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Who this is for
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;developers filling a local database or Storybook stories with recognizable personas&lt;/li&gt;
&lt;li&gt;designers building mockups who do not want to use John Doe again&lt;/li&gt;
&lt;li&gt;QA engineers creating more expressive test accounts with different profiles&lt;/li&gt;
&lt;li&gt;tutorial and conference talk authors who want screenshots that feel less generic&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Disclaimer
&lt;/h3&gt;

&lt;p&gt;LoreData is an unofficial fan tool and is not affiliated with the rights holders of these universes, studios, or streaming platforms.&lt;/p&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Links
&lt;/h3&gt;

&lt;p&gt;The project is open source. PRs with new universes are welcome.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;demo: &lt;a href="https://loredata.orchidfiles.com" rel="noopener noreferrer"&gt;loredata.orchidfiles.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;repository: &lt;a href="https://github.com/orchidfiles/loredata" rel="noopener noreferrer"&gt;github.com/orchidfiles/loredata&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;npm: &lt;a href="https://www.npmjs.com/package/loredata" rel="noopener noreferrer"&gt;npmjs.com/package/loredata&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt; &lt;/p&gt;

&lt;h3&gt;
  
  
  Contact
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Blog: &lt;a href="https://orchidfiles.com" rel="noopener noreferrer"&gt;orchidfiles.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Email: &lt;a href="mailto:orchid@orchidfiles.com"&gt;orchid@orchidfiles.com&lt;/a&gt;
&lt;/li&gt;
&lt;li&gt;Telegram: &lt;a href="https://t.me/askorchid" rel="noopener noreferrer"&gt;@askorchid&lt;/a&gt;
&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>opensource</category>
      <category>typescript</category>
      <category>node</category>
      <category>webdev</category>
    </item>
    <item>
      <title>How to Connect MiniMax-M2.7 to Cursor</title>
      <dc:creator>Orchid Files</dc:creator>
      <pubDate>Fri, 03 Apr 2026 10:30:38 +0000</pubDate>
      <link>https://forem.com/orchidfiles/how-to-connect-minimax-m27-to-cursor-3kn0</link>
      <guid>https://forem.com/orchidfiles/how-to-connect-minimax-m27-to-cursor-3kn0</guid>
      <description>&lt;p&gt;MiniMax-M2.7 is a new Chinese frontier model from MiniMax. According to some benchmarks, it has almost caught up with Opus-4.6. However, based on my tests over the past few days, I've concluded that it doesn't even measure up to Sonnet-4. If you use it for simple tasks, everything is fine. But if you have a monorepo project structure with packages and apps, you have to run a lot of iterations to complete tasks. Even if the rules and skills specify the project structure — where types, helpers, and ESLint configurations are located — it still doesn't follow that structure. And it's very slow compared to Sonnet, and it's about 20 times slower than GPT-5.4. I asked the agent with MiniMax to copy the structure from another monorepo repository, and it took me 4 hours of back-and-forth with the agent to clarify the details so that it would finally complete the task. With Sonnet-4.6, this takes me about 15–30 minutes. Benchmarks and real-world performance differ greatly. If a model is estimated to be close to Sonnet or even Opus in benchmarks, in practice there may be a significant gap between them.&lt;/p&gt;

&lt;p&gt;But you need to consider not only quality and speed, but also price. MiniMax is 10 times cheaper than Sonnet-4.6. A $10 subscription gives you 1,500 queries every 5 hours and 15,000 queries per week. I also noticed that MiniMax's planning capabilities are quite good — comparable to Sonnet or GPT. Therefore, for simple tasks or situations where speed isn't a priority, MiniMax can be a reasonable choice. &lt;/p&gt;

&lt;p&gt;The documentation on the MiniMax website states that the model uses the OpenAI format and is compatible with most IDEs. But it turned out that if you connect it to Cursor, it doesn't separate the contents of &lt;code&gt;&amp;lt;think&amp;gt;...&amp;lt;/think&amp;gt;&lt;/code&gt; from the actual response; everything goes into a single stream. You see the model's thoughts and the response mixed together, and at some point it becomes unclear where its thoughts end and the response to the user begins. Working in this mode is extremely inconvenient.&lt;/p&gt;

&lt;p&gt;I've added MiniMax support to the Ungate extension for Cursor that I'm developing. It processes content from &lt;code&gt;&amp;lt;think&amp;gt;...&amp;lt;/think&amp;gt;&lt;/code&gt; blocks, and now Cursor correctly separates the model's reasoning from the response to the user. Working with MiniMax in Cursor is now the same as with other OpenAI-compatible models. I wrote more about the extension itself in a previous post: &lt;a href="https://dev.to/orchidfiles/how-to-use-a-claude-subscription-in-cursor-without-paying-for-api-tokens-1bfa"&gt;How to use a Claude Subscription in Cursor&lt;/a&gt;. To access the model, you need to add the custom model name &lt;code&gt;MiniMax-M2.7&lt;/code&gt; to Cursor. I've added a Base URL selector for MiniMax to the Ungate settings: China, Global, Custom. Also, the query analytics now distinguishes between Claude and MiniMax.&lt;br&gt;
 &lt;/p&gt;

&lt;p&gt;Ungate extension repository: &lt;a href="https://github.com/orchidfiles/ungate" rel="noopener noreferrer"&gt;https://github.com/orchidfiles/ungate&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;VSX Marketplace: &lt;a href="https://open-vsx.org/extension/orchidfiles/ungate" rel="noopener noreferrer"&gt;https://open-vsx.org/extension/orchidfiles/ungate&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Install from the terminal: &lt;code&gt;cursor --install-extension orchidfiles.ungate&lt;/code&gt;&lt;/p&gt;

</description>
      <category>cursor</category>
      <category>minimax</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>How to use a Claude Subscription in Cursor without paying for API tokens</title>
      <dc:creator>Orchid Files</dc:creator>
      <pubDate>Thu, 02 Apr 2026 07:53:12 +0000</pubDate>
      <link>https://forem.com/orchidfiles/how-to-use-a-claude-subscription-in-cursor-without-paying-for-api-tokens-1bfa</link>
      <guid>https://forem.com/orchidfiles/how-to-use-a-claude-subscription-in-cursor-without-paying-for-api-tokens-1bfa</guid>
      <description>&lt;p&gt;In Cursor, you can connect any LLM via API that is compatible with the OpenAI request format. This means you can connect Claude via API and pay for tokens. However, if you have a Claude subscription, you can only use it in Claude Code. There, the request format is Anthropic, which differs from OpenAI. You cannot take your Claude subscription and add it to Cursor because the request formats are incompatible. You cannot make requests to the Claude API using a Claude subscription.&lt;/p&gt;

&lt;p&gt;There are already solutions on GitHub that proxy requests from Cursor to Claude using the subscription without paying for API tokens. They convert the OpenAI format to Anthropic and back. But to add this to Cursor, it's not enough to simply run the process on localhost and add the URL to Cursor, because Cursor first sends requests to its own backend, and from there to the OpenAI-compatible API. If you add localhost there, their backend simply won't be able to reach it. That's why you need to set up a tunnel, and Cloudflare is perfect for this. With a single &lt;code&gt;cloudflared tunnel&lt;/code&gt; command, you can set up a tunnel that provides a public URL and routes traffic to your localhost. You add this URL to Cursor.&lt;br&gt;
 &lt;/p&gt;

&lt;h3&gt;
  
  
  How it works
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Start the proxy process that converts requests between OpenAI and Anthropic formats&lt;/li&gt;
&lt;li&gt;Set up a Cloudflare tunnel and add the URL to Cursor&lt;/li&gt;
&lt;li&gt;Send a message in the Cursor chat; it sends a request to its backend&lt;/li&gt;
&lt;li&gt;From the backend, it sends a request to Cloudflare, which forwards it to your localhost&lt;/li&gt;
&lt;li&gt;The proxy process receives the request from Cloudflare and sends it to Claude&lt;/li&gt;
&lt;li&gt;The proxy process receives the response from Claude and sends it to Cloudflare&lt;/li&gt;
&lt;li&gt;Cloudflare returns the response to the Cursor backend, which sends it to the IDE&lt;/li&gt;
&lt;li&gt;You see the response in the chat
 &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Various solutions on GitHub retrieve the Claude subscription token in two ways. The first method works only if you already have the Claude CLI installed and are logged in to it. It retrieves the token that the Claude CLI has stored on your system. The second method is not tied to the Claude CLI and allows you to log in to Claude in your browser using OAuth and add the token.&lt;/p&gt;

&lt;p&gt;These solutions do not support everything required for development. In some solutions, only the chat is properly proxied, but any use of tools such as reading, modifying files, or creating plans is not supported. Others support tools, but not all of them; for example, sending images or asking questions when creating plans is not supported.&lt;/p&gt;

&lt;p&gt;I took the best features from these solutions, added support for all tools, and created a Cursor extension. It allows you to log in to Claude via OAuth, launches a process to proxy requests, and establishes a Cloudflare tunnel. The entire setup takes 30 seconds, and you can use your Claude subscription in Cursor without paying for API tokens.&lt;/p&gt;

&lt;p&gt;Project repository: &lt;a href="https://github.com/orchidfiles/ungate" rel="noopener noreferrer"&gt;https://github.com/orchidfiles/ungate&lt;/a&gt;&lt;br&gt;
VSX Marketplace: &lt;a href="https://open-vsx.org/extension/orchidfiles/ungate" rel="noopener noreferrer"&gt;https://open-vsx.org/extension/orchidfiles/ungate&lt;/a&gt;&lt;br&gt;
Installation from the terminal: &lt;code&gt;cursor --install-extension orchidfiles.ungate&lt;/code&gt;&lt;br&gt;
 &lt;/p&gt;

&lt;p&gt;After installing the extension in Cursor, an "Ungate :47821" button will appear in the status bar. This means that the proxy service is running on port 47821. Clicking the button will open the Dashboard, which displays statistics on proxied requests and settings. In the settings, you can change the port, restart the tunnel, log in to Claude via OAuth, and view the tunnel and proxy logs. After starting the tunnel, you will receive a URL from Cloudflare. You need to paste this URL into &lt;code&gt;Cursor Settings -&amp;gt; Models -&amp;gt; API Keys -&amp;gt; Override OpenAI Base URL&lt;/code&gt;. You also need to paste the API Key, which is displayed on the same settings page, into &lt;code&gt;Cursor Settings -&amp;gt; Models -&amp;gt; API Keys -&amp;gt; OpenAI API Key&lt;/code&gt;. This is not related to your Claude subscription. It is just an API key for the proxy service, so other people cannot send requests through your proxy if they do not know this key. It is generated when you install the extension. After configuring these settings, you can select any Claude model in the Cursor chat, and all requests will go through your Claude subscription.&lt;br&gt;
 &lt;/p&gt;

&lt;h3&gt;
  
  
  Important details
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Anthropic allows the subscription to be used only in Claude Code and prohibits its use in other tools&lt;/li&gt;
&lt;li&gt;When you first run the proxy, the extension downloads a build of &lt;code&gt;better-sqlite3&lt;/code&gt; compatible with your OS and Cursor version&lt;/li&gt;
&lt;li&gt;When you first launch the tunnel, the extension downloads a build of  &lt;code&gt;cloudflared&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;When adding or changing tools, you must add them to the mapping &lt;code&gt;Cursor tools -&amp;gt; Claude Code tools -&amp;gt; Cursor tools&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;When adding new Sonnet, Opus, or Haiku models, you must add them to the code&lt;/li&gt;
&lt;li&gt;There are issues when making changes to large documents and plans; you need to ask the agent to make changes in parts&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>cursor</category>
      <category>claude</category>
      <category>ai</category>
      <category>opensource</category>
    </item>
    <item>
      <title>PM2 has no web UI. Every open source alternative is dead. So I built one.</title>
      <dc:creator>Orchid Files</dc:creator>
      <pubDate>Wed, 18 Mar 2026 18:11:06 +0000</pubDate>
      <link>https://forem.com/orchidfiles/pm2-has-no-web-ui-every-open-source-alternative-is-dead-so-i-built-one-4ej3</link>
      <guid>https://forem.com/orchidfiles/pm2-has-no-web-ui-every-open-source-alternative-is-dead-so-i-built-one-4ej3</guid>
      <description>&lt;h2&gt;
  
  
  Why I started this project
&lt;/h2&gt;

&lt;p&gt;PM2 is the most popular process manager for Node.js, with 2 million downloads per week, but it's provided as a CLI tool. If you want to view processes in a browser, manage them, and receive notifications via Slack or email, you need to use PM2 Plus. This is a paid, subscription-based cloud service.&lt;/p&gt;

&lt;p&gt;All open-source alternatives are built using JS+HTML. They lack modules, type safety, tests, and an architecture designed for extensibility. They are difficult to maintain and develop. You can't simply fork them and add new features without rewriting most of the code. And since they lack tests, you can break anything with your changes.&lt;/p&gt;

&lt;p&gt;Almost all open-source solutions have been abandoned. The most popular ones, based on star count, haven't been updated in 2 to 10 years. Some have issues that have been open for years, and pull requests aren't accepted. The authors have abandoned these projects. Yet new repositories pop up every few months, but they're still just plain JS with a single routes file and a few pages on the frontend. Without any well-thought-out architecture.&lt;/p&gt;

&lt;p&gt;I've been using pm2 for about 10 years now, and I've wanted to create a pm2 dashboard for a long time. AI agents make this kind of project much faster to build. That doesn't mean this is just some vibe-coding project where I simply asked the AI to create a dashboard and dumped the code into Git. I make 100% of the architectural decisions, review 100% of the code, and I write each new task for it in a new chat. The AI agent doesn't make decisions; it only handles the routine tasks: writing code, tests, and markup.&lt;/p&gt;

&lt;p&gt;Fun fact. When I started brainstorming a name for the npm package, I went through dozens of options and settled on &lt;code&gt;pm2-dashboard&lt;/code&gt;. It had been taken by an inactive package for 11 years and became available 11 days before I started choosing a project name. I managed to grab it and publish a placeholder. It seems like a huge coincidence that the best possible name for the project became available at just the right moment.&lt;/p&gt;




&lt;h2&gt;
  
  
  How the project is structured
&lt;/h2&gt;

&lt;p&gt;I decided to build a project that would be very easy to extend and maintain — with full TypeScript coverage, test coverage, linters, and a modular architecture. For the structure, I chose a monorepo approach: apps, packages, scripts, and docs. As usual, packages/shared contains shared modules, constants, types, and helpers.&lt;/p&gt;

&lt;p&gt;For the frontend, I chose between Vue, React, and Svelte. I'm familiar with all of them, but I chose Svelte because I prefer its style over React's, and I haven't worked with Vue in a long time. Fewer developers are familiar with it, which might complicate maintenance, but if you work with AI agents and know Tailwind, there won't be any issues.&lt;/p&gt;

&lt;p&gt;On the backend, I immediately chose NestJS for its dependency injection and modular architecture; it's better for scalability than Express or Fastify. I also considered AdonisJS, but it's less popular. It might take longer to set up initially, but I simply asked an AI agent to port the existing NestJS code from my other projects. But it pays off in both maintenance and extensibility.&lt;/p&gt;

&lt;p&gt;For the database, I chose between PostgreSQL and SQLite. I chose SQLite because so the package can be installed with a single command from npm, and there's no need to spin up a Docker container for the database — the entire database is in a single file. For the ORM, I chose between TypeORM and Drizzle. I chose Drizzle because I hadn't worked with it yet and wanted to gain some experience, and it seems like most new projects are choosing it now.&lt;/p&gt;

&lt;p&gt;Between JWT and cookie-based sessions, I chose the latter because JWT offers no advantages for a self-hosted tool with a few users, but it complicates logout and token deletion. Surprisingly, I couldn't find a library that works with &lt;code&gt;express-session&lt;/code&gt; and &lt;code&gt;better-sqlite3&lt;/code&gt; and writes sessions to the same database file. &lt;code&gt;connect-sqlite3&lt;/code&gt; writes sessions to a separate file, and &lt;code&gt;better-sqlite3-session-store&lt;/code&gt; has a license incompatible with MIT. I built my own session solution in 30 lines of code.&lt;/p&gt;

&lt;p&gt;On first launch, a setup wizard appears, prompting you to create a user; after that, access to the interface is available only via username and password. No .env or other configuration files.&lt;/p&gt;

&lt;p&gt;It took 5 days from the project idea to a working version and writing this post. Without AI agents, it would have taken much longer. And without AI agents, I probably wouldn't have even started this project.&lt;/p&gt;




&lt;h2&gt;
  
  
  What's already working
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;List of processes with CPU, RAM, and status&lt;/li&gt;
&lt;li&gt;Start, stop, and restart for each process, as well as bulk operations&lt;/li&gt;
&lt;li&gt;Uptime and restart counters&lt;/li&gt;
&lt;li&gt;Authentication&lt;/li&gt;
&lt;li&gt;Setup wizard on first launch&lt;/li&gt;
&lt;li&gt;A single npm package with API and web interface&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Next priorities
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Real-time updates via WebSocket&lt;/li&gt;
&lt;li&gt;Log viewer&lt;/li&gt;
&lt;li&gt;Metrics history with graphs&lt;/li&gt;
&lt;li&gt;Alerts&lt;/li&gt;
&lt;/ul&gt;




&lt;h2&gt;
  
  
  How to try it
&lt;/h2&gt;



&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight shell"&gt;&lt;code&gt;npx pm2-dashboard
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;It will open at &lt;code&gt;http://localhost:3000&lt;/code&gt;. On first run, the CLI prints a setup link.&lt;/p&gt;

&lt;p&gt;GitHub: &lt;a href="https://github.com/orchidfiles/pm2-dashboard" rel="noopener noreferrer"&gt;https://github.com/orchidfiles/pm2-dashboard&lt;/a&gt;&lt;/p&gt;




&lt;p&gt;If you use PM2, I'd love to hear your feedback.&lt;br&gt;
Leave a comment or open an issue on &lt;a href="https://github.com/orchidfiles/pm2-dashboard" rel="noopener noreferrer"&gt;GitHub&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>node</category>
      <category>devops</category>
      <category>opensource</category>
      <category>typescript</category>
    </item>
    <item>
      <title>Stigma is a tax on every operational decision</title>
      <dc:creator>Orchid Files</dc:creator>
      <pubDate>Sat, 14 Mar 2026 10:43:00 +0000</pubDate>
      <link>https://forem.com/orchidfiles/stigma-is-a-tax-on-every-operational-decision-4lpm</link>
      <guid>https://forem.com/orchidfiles/stigma-is-a-tax-on-every-operational-decision-4lpm</guid>
      <description>&lt;p&gt;If you are planning to create an online casino or a copy of OnlyFans, you most likely want to get in quickly, make money fast, and get out. You are unlikely to stick with it for 10 years. Just as many criminals hope to pull off one last heist, earn a living, and never do it again. The idea of one last job sounds heroically romantic.&lt;/p&gt;

&lt;p&gt;Working on an 18+ project feels like being a rock star. You work with 18+ content, see the audience, see the performers, and get access to what feels like something secret. Some see it as excitement, risk, drama, and a feeling of being alive. And then it turns out that stigma is built into almost every operational decision: hiring, advertising, payments, investments, social circle, and reputation. Stigma is the price you pay for permission to exist.&lt;/p&gt;

&lt;p&gt;You may have a cool product in the field of sports betting, casinos, or lotteries. But almost all social networks and search engines won’t let you advertise without a license from the required jurisdiction. Finding investment for such projects is far harder than for conventional niches. Do you want to build an AI-powered 18+ video generator? When posting job openings, you will always have to beat around the bush, without using direct language. And only then, when the candidate has already agreed to an interview or even after it, do you tell them what kind of content they will be working with every day.&lt;/p&gt;

&lt;p&gt;Employees join such projects for various reasons. Some realize that the pay is better than in legitimate projects. Others come because they couldn’t find a job where they wanted to, or because they are simply interested in working on something forbidden. And then a good company saving the world will come along and offer them a job, and they’ll leave. Building a stable team from people with this kind of motivation is hard.&lt;/p&gt;

&lt;p&gt;Payment providers, including Stripe, do not work with 18+ and gambling. You will have to look for others. A regular provider charges a regular commission but will not work with you, while another will want a commission 10 times higher and will agree, but may stop working with you at any time. These are often unreliable providers who are willing to work with risky categories. Or you will have to give up payment providers altogether, accept only cryptocurrency, and set up the processing yourself, because even many crypto processors prohibit these categories. Your creatives won’t pass moderation on ad networks. Accounts will be blocked for advertising prohibited projects. You need constant account warming, proxies, anti-detect browsers, moderation bypasses, and cycling through accounts. All of this takes a lot of time and money. Venture investors refuse to fund such projects, so they are often financed with personal money or money from friends. There are few who want to hedge their portfolio or just dabble in this space because it gets their blood pumping too.&lt;/p&gt;

&lt;p&gt;Formal rules and legal protection mechanisms, which are common in legitimate projects, do not work well here. Many companies in these areas are not registered at all. They operate through nominees, without an office, without official salaries, and without paying taxes. When the business itself is illegal, the courts and police no longer seem like a natural means of protection. So competitors resort to spam, DDoS attacks, data leaks, hacking, fake reviews, and reputation damage. If your company also operates unofficially and your competitors want to eliminate you, they will not be able to do so officially and will look for other ways. And they may find them.&lt;/p&gt;

&lt;p&gt;This kind of business can’t make you proud if you’re not in an environment that appreciates it. If all your friends go to church on Sundays or your wife is an elementary school teacher, they’re not likely to approve of a webcam studio business. Your other half will feel uncomfortable talking about what you do. She won’t talk about it with her friends or at work parties. This will constantly weigh on you, even if you don’t notice it at first. Your religion or the religion of those around you may also disapprove. Life is not what happens to you, but what you are able to talk about. But if the product becomes successful, how will you talk about it to your friends? If you built the best casino site, it feels like you are participating in the decay of society and are proud of it.&lt;/p&gt;

&lt;p&gt;Or you have a traffic arbitrage project: you buy traffic on Google and use cloaking to direct it to casino sites via referral links. You find an excuse: if it weren’t for you, someone else would be doing it. You’re not stealing money from a card, you’re just connecting a Google search to a casino site, and then the person loses tens of thousands of dollars themselves. You don’t force the person to make a deposit, you don’t take money from their card, you don’t gamble their money away. It’s like you’re not to blame. People gamble at casinos, but society shifts the blame onto those who build a business on it. When a person tries to find excuses for their actions, it means they feel uncomfortable but keep going. In niches without stigma, such rationalizations are unnecessary.&lt;/p&gt;

&lt;p&gt;Success in a stigmatized niche rarely translates into reputation beyond it. You’ve built a product with a million users, but you can’t always add this project to LinkedIn without damaging your reputation. You spent 5 years, achieved significant revenue, somehow assembled a team and pay them well above market rates so that people don’t leave for a more legitimate project, made contacts in related projects, analyzed your competitors, and know this market well. And the better you made the product, the more you are tied to a niche that is difficult to leave.&lt;/p&gt;

</description>
      <category>startup</category>
      <category>entrepreneurship</category>
      <category>hiring</category>
      <category>career</category>
    </item>
    <item>
      <title>AI will build your roadmap in 10 seconds</title>
      <dc:creator>Orchid Files</dc:creator>
      <pubDate>Tue, 24 Feb 2026 00:00:00 +0000</pubDate>
      <link>https://forem.com/orchidfiles/ai-will-build-your-roadmap-in-ten-seconds-3apd</link>
      <guid>https://forem.com/orchidfiles/ai-will-build-your-roadmap-in-ten-seconds-3apd</guid>
      <description>&lt;p&gt;You can ask AI to think and plan, for example, to draw up a marketing plan for a project. And it will “think” and compose a beautiful text with arguments, breaking the plan down into stages, phases, periods, and categories. But this plan will have nothing to do with reality.&lt;/p&gt;




&lt;p&gt;&lt;strong&gt;&lt;em&gt;Build a 7-year growth roadmap for my project&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Phase 1 (0-6 months): launch, first 100 users from personal network and early adopters&lt;br&gt;
Phase 2 (6-12 months): organic growth, 500-1,000 users, early feedback and product iterations&lt;br&gt;
Phase 3 (1-2 years): product-market fit, 3-5K users, introduce paid acquisition channels&lt;br&gt;
Phase 4 (2-4 years): scaling, 10-30K users, achieve sustainable revenue&lt;br&gt;
Phase 5 (4-7 years): maturity, 50-100K users, expand into adjacent markets and segments&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;How many downloads will my app get after launch?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;Pessimistic: 100-500 in the first month&lt;br&gt;
Realistic: 1,000-3,000 in the first month&lt;br&gt;
Optimistic: 10,000+ in the first month&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;&lt;em&gt;How do I attract the first users to my product?&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;ol&gt;
&lt;li&gt;Create an account on Twitter/X and start posting build-in-public content&lt;/li&gt;
&lt;li&gt;Write an article on Hacker News&lt;/li&gt;
&lt;li&gt;Launch on Product Hunt&lt;/li&gt;
&lt;li&gt;Start a free newsletter with valuable content&lt;/li&gt;
&lt;li&gt;Find 10 relevant communities on Reddit and become an active participant&lt;/li&gt;
&lt;/ol&gt;
&lt;/blockquote&gt;




&lt;p&gt;These answers are equally useless. Even if you provide him with the context of the project and the decisions made earlier, he still won’t be able to think. He will only write a plausible plan. In reality, you’ll find that posts on HN rarely make it to the front page, there is no one to send the newsletter to, X hardly ever generates clicks on external links, and Reddit bans self-promotion.&lt;/p&gt;

&lt;p&gt;He can convince you that your startup is definitely a blue ocean and your key feature is your product-market fit. But the future is stochastic. AI models cannot predict it. His pessimistic predictions are never zero. Most likely because the training data in such predictions most often does not have zero. Although if you ask him, “But there could be zero users in a year, right?”, he will agree with that. His predictions are just another way of saying “I don’t know”.&lt;/p&gt;

&lt;p&gt;Planning with AI is almost no different from planning by an incompetent person. A person without AI can draw up the same plan. But in most cases, whether it’s planned by a person or AI, the plan will not survive the collision with reality. People have always passed off plausible text about the future as forecasts. AI has simply accelerated this. Previously, it was expensive and time-consuming, so it seemed valuable. Now AI generates the same plausible plan in 10 seconds, and it becomes clear that the emperor has no clothes.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>startup</category>
      <category>planning</category>
      <category>entrepreneurship</category>
    </item>
    <item>
      <title>Startups remember backups after the crash</title>
      <dc:creator>Orchid Files</dc:creator>
      <pubDate>Wed, 11 Feb 2026 00:47:22 +0000</pubDate>
      <link>https://forem.com/orchidfiles/building-is-easy-preserving-requires-care-4oak</link>
      <guid>https://forem.com/orchidfiles/building-is-easy-preserving-requires-care-4oak</guid>
      <description>&lt;p&gt;In startups, something often seems more urgent than backups: a new release, user growth, the next round of funding. When resources are scarce, the team focuses on building the product, not the infrastructure. And every day, shipping wins. Backups keep getting postponed. Not just because there’s no time, but because thinking about them means admitting how fragile everything is, and how much rests on the people behind it. In the early stages, it’s often just a single backup. No automation, no established processes. Beneath it lies a quiet belief that disasters happen to others — until the first failure shatters that illusion within seconds, and you discover there are no copies, access is lost, and nothing can be recovered.&lt;br&gt;
 &lt;/p&gt;

&lt;p&gt;You don’t learn how resilient your system is until it breaks. Even the most reliable systems are not immune to rare, unpredictable events. Sometimes a single accident is enough to put everything at risk. A fire, a flood, or a lightning strike can destroy both originals and backups if they’re stored in the same place.&lt;/p&gt;

&lt;p&gt;The loss of code, documents, and databases erases not only a project’s memory but the time that went into it. It feels like everything is gone — until you manage to recover at least part of the data. What comes after is relief, and a realization of how close everything came to being lost. Sometimes recovery never comes, leaving only emptiness.&lt;br&gt;
 &lt;/p&gt;

&lt;p&gt;After something like this, you never think about your systems the same way. It’s the point where a founder starts caring not just about growth, but about what’s already running. Making a backup means accepting that the system is vulnerable. But at least you’ve done something about it. It brings back a sense of control that’s easy to lose when you’re focused on shipping.&lt;/p&gt;

&lt;p&gt;Catastrophes don’t start in code; they start in the decisions around it — running the wrong command, deleting the wrong file, acting in moments of haste or fatigue. One mistake can erase years of work. Sometimes it’s human error; sometimes it’s a system we trusted too much. Technology creates the illusion of safety: when everything is stored in the cloud or syncs automatically, it instills confidence that nothing will go wrong. As long as it works, we think we’re in control. But any protection weakens the moment it stops being tested. Panic doesn’t come from the loss itself, but from the realization that there was no plan. Security isn’t about feeling in control. It’s about having a plan for when you’re not.&lt;/p&gt;

&lt;p&gt;Data loss isn’t just a technical failure. It’s a breach of trust. Even if the data can be recovered, restoring reputation is much harder. A single failure can erase years of credibility in the eyes of investors or users.&lt;/p&gt;

&lt;p&gt;Security is a habit of taking care of what you’ve built. It doesn’t demand perfection, only attention. Imperfect protection is better than none. And a tested backup is better than the illusion of stability. Sometimes all it takes is one evening — make a backup, test restoring it, and finally sleep soundly.&lt;br&gt;
 &lt;/p&gt;

&lt;p&gt;Technology evolves. Complacency endures.&lt;br&gt;
Building something means taking responsibility for its survival.&lt;br&gt;
It’s respect for time that can never be regained.&lt;/p&gt;

</description>
      <category>startup</category>
      <category>backups</category>
      <category>devops</category>
      <category>infrastructure</category>
    </item>
    <item>
      <title>The limits of interview questions</title>
      <dc:creator>Orchid Files</dc:creator>
      <pubDate>Sun, 08 Feb 2026 11:49:17 +0000</pubDate>
      <link>https://forem.com/orchidfiles/the-limits-of-interview-questions-33aj</link>
      <guid>https://forem.com/orchidfiles/the-limits-of-interview-questions-33aj</guid>
      <description>&lt;p&gt;When I worked as a developer and team lead, I went through a lot of interviews. Over time, I built up a list of odd and unhelpful questions. There were many, but here are the ones that stood out the most. I’m not trying to guess what the interviewers were thinking. I’m just showing how these questions sound in conversation and the impression they leave.&lt;br&gt;
 &lt;/p&gt;

&lt;h3&gt;
  
  
  The Quirky Ones
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;What’s your favorite color and why?&lt;/li&gt;
&lt;li&gt;What animal do you associate yourself with?&lt;/li&gt;
&lt;li&gt;How would you describe your perfect day?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These questions sound unusual, but they don’t tell you anything about how a person works. The answers are wide open to interpretation, so the focus shifts from real experience to guessing the right image. A candidate either recites something they’ve prepared or improvises a response, and neither option says much about how they approach problems. It’s hard to draw any conclusions about work behavior or decision-making from answers like these. More often than not, they add noise rather than help with evaluation.&lt;br&gt;
 &lt;/p&gt;

&lt;h3&gt;
  
  
  Passive-Aggressive Traps
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Aren’t you worried you won’t keep up with our pace?&lt;/li&gt;
&lt;li&gt;Don’t you think you might be overqualified for this role?&lt;/li&gt;
&lt;li&gt;How do you explain the long gaps in your career?&lt;/li&gt;
&lt;li&gt;How much were you making before?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These questions often feel like an attempt to uncover a hidden problem. They focus less on professional experience and more on external circumstances, which rarely help you understand how someone will work in a team. This stands out even more in startups. A person’s past salary doesn’t reflect their current motivation or expectations. A long career break might have nothing to do with competence. And a concern about being overqualified means nothing without context about the role. It’s easy to misread signals like these and turn down someone who might actually be a great fit.&lt;/p&gt;

&lt;p&gt;There’s one question that sits on the edge of what’s fair: “Why have you changed jobs so often?” It can be a reasonable one — if you understand that the answer often reflects the natural lifecycle of projects, not the candidate’s behavior. That’s exactly how it was in my case. I worked at startups, and most of them shut down in their first year.&lt;br&gt;
 &lt;/p&gt;

&lt;h3&gt;
  
  
  Not Quite Therapy
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;What do you think your friends would say about you?&lt;/li&gt;
&lt;li&gt;What about your personality makes you doubt yourself?&lt;/li&gt;
&lt;li&gt;How do you handle situations when things don’t go as planned?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These questions seem like an attempt to assess maturity and self-awareness. In practice, they shift the conversation into personal reflection under observation. The candidate doesn’t have time to think it through or ask for context. They came to talk about work — and suddenly they’re expected to quickly explain their own reactions and motives. Without a prepared answer, they start guessing what kind of response is expected. That forces them to improvise. In the end, the interview ends up measuring not how well they’d do the job, but how well they handle being put on the spot.&lt;br&gt;
 &lt;/p&gt;

&lt;h3&gt;
  
  
  The Culture Fit Game
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;Why do you believe you’re a good fit for this role?&lt;/li&gt;
&lt;li&gt;How do you think your experience could benefit our team?&lt;/li&gt;
&lt;li&gt;Why do you want to work with us specifically?&lt;/li&gt;
&lt;li&gt;Which of our company values resonate with you?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These questions assume the candidate made a deliberate choice and took the time to learn about the company. In reality, many people apply to dozens of roles at once and only start learning the details after they get an interview. Their understanding of internal processes and values is limited, so their answers tend to reflect not a real connection with the company, but an attempt to sound motivated without much to go on. As a result, the answers come out generic and don’t say much about how the person actually works.&lt;br&gt;
 &lt;/p&gt;

&lt;h3&gt;
  
  
  The Last Job Focus
&lt;/h3&gt;

&lt;ul&gt;
&lt;li&gt;What kind of tasks did you handle in your last role?&lt;/li&gt;
&lt;li&gt;What challenges did you face on that project?&lt;/li&gt;
&lt;li&gt;Why did you leave that company?&lt;/li&gt;
&lt;li&gt;What was your role in the team at the time?&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;These questions are reasonable on their own, but interviews often end up focusing almost entirely on the candidate’s most recent project. That project might have been short, irrelevant to the role, based on a different level of responsibility, or simply untypical in terms of tasks. As a result, the conversation revolves around a fragment that says little about the candidate’s broader experience. The person may have led a larger team before, worked on a different scale, or operated in a different environment — but that gets lost if all attention goes to the last job.&lt;/p&gt;

&lt;p&gt;I’ve often tried to zoom out and explain that what matters is the full arc of experience, not just the latest entry. But the conversation kept circling back to that one last project, as if it had to explain everything. This focus skews the outcome. If the last project is an outlier — the easiest one, the least successful, or simply the odd one out — then the answers reflect a random moment in someone’s career. It’s easier to talk about, but it says very little about the actual experience.&lt;/p&gt;




&lt;p&gt;At the end of the interview, it comes down to a simple question: did you understand the person — and did they understand you?&lt;/p&gt;

</description>
      <category>career</category>
      <category>interview</category>
      <category>hiring</category>
      <category>startup</category>
    </item>
    <item>
      <title>Management style doesn’t predict survival</title>
      <dc:creator>Orchid Files</dc:creator>
      <pubDate>Fri, 06 Feb 2026 10:51:20 +0000</pubDate>
      <link>https://forem.com/orchidfiles/management-style-doesnt-predict-survival-2gpg</link>
      <guid>https://forem.com/orchidfiles/management-style-doesnt-predict-survival-2gpg</guid>
      <description>&lt;p&gt;I’ve worked in startups with different management and product development styles.&lt;/p&gt;

&lt;p&gt;With mandatory reports and without them.&lt;br&gt;
With task trackers and without them.&lt;br&gt;
With required office presence and fully remote.&lt;br&gt;
With long-term planning and decisions made on the fly.&lt;/p&gt;

&lt;p&gt;Often processes develop around a leader’s idea of what normal work should look like. Some find offices, reports, and tight syncs natural. Others deliberately choose remote work, flexible schedules, and asynchronous communication. Breaking the system into many independent parts might seem like the only healthy path even early on. Keeping everything in one codebase might seem like the only way to move fast. These beliefs are fueled by past projects, positive outcomes, and success stories they’ve observed. Each genuinely believes their setup is normal and can list dozens of reasons why their approach is right. That’s why changing these views is hard.&lt;/p&gt;

&lt;p&gt;Different ways of working become different worlds, and each world seems uniquely stable to those within it. But no management or product development style guarantees survival or failure.&lt;/p&gt;

</description>
      <category>management</category>
      <category>leadership</category>
      <category>startup</category>
      <category>productivity</category>
    </item>
    <item>
      <title>I live without deadlines or schedules</title>
      <dc:creator>Orchid Files</dc:creator>
      <pubDate>Thu, 29 Jan 2026 17:02:09 +0000</pubDate>
      <link>https://forem.com/orchidfiles/i-live-without-deadlines-or-schedules-41g6</link>
      <guid>https://forem.com/orchidfiles/i-live-without-deadlines-or-schedules-41g6</guid>
      <description>&lt;p&gt;I live without discipline, schedules, timetables, or daily routines. I don’t have a to-do list for tomorrow or next week. I might sleep during the day one month and at night the next. Today I’m working on one project, tomorrow I’ll switch to another. I’m not tied to the days of the week or the time of day. For me, Tuesday is no different from Saturday, day is no different from night, and one month is no different from another. At the same time, I work 10 hours every day.  &lt;/p&gt;

&lt;p&gt;I don’t plan events or keep a calendar. If meetings are booked weeks in advance for a specific time slot, they’re not my meetings. If the job requires mandatory scheduled calls, it’s not my job. At the same time, I do long-term projects that stretch over years.  &lt;/p&gt;

&lt;p&gt;I don’t have goals with deadlines and quantitative metrics, but I do have plans and directions. I don’t have a task to “release a feature by the end of the week”, but I do have a direction to “develop the product”. I don’t have a goal to “earn a fixed amount per year”, but I do have a direction to “increase my income”.&lt;/p&gt;

</description>
      <category>productivity</category>
      <category>worklifebalance</category>
      <category>entrepreneurship</category>
      <category>remotework</category>
    </item>
  </channel>
</rss>
