<?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: Eduard Iskandarov</title>
    <description>The latest articles on DEV Community by Eduard Iskandarov (@ediskandarov).</description>
    <link>https://dev.to/ediskandarov</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%2F570184%2F69046435-d9f4-4249-9fde-4cccdb202a43.jpeg</url>
      <title>DEV Community: Eduard Iskandarov</title>
      <link>https://dev.to/ediskandarov</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://dev.to/feed/ediskandarov"/>
    <language>en</language>
    <item>
      <title>Flight or Bite: A Fly Connectome Meets a Decision API</title>
      <dc:creator>Eduard Iskandarov</dc:creator>
      <pubDate>Thu, 08 Oct 2026 17:36:52 +0000</pubDate>
      <link>https://dev.to/ediskandarov/flight-or-bite-a-fly-connectome-meets-a-decision-api-ga5</link>
      <guid>https://dev.to/ediskandarov/flight-or-bite-a-fly-connectome-meets-a-decision-api-ga5</guid>
      <description>&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;AI disclosure:&lt;/strong&gt; This article is 100% AI-generated. All research and coding for this project were carried out using AI—Anthropic Fable and OpenAI Astra models—with minimal human assistance.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;A hungry agent encounters food. Something moves overhead. It has three buttons:&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;EAT     ESCAPE     IDLE
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;We wanted to compare two very different ways of pressing those buttons: a spiking simulation built from a fruit fly's neural wiring, and Jev, a decision model accessed through TypeSafe AI's API.&lt;/p&gt;

&lt;p&gt;That became &lt;strong&gt;Flight or Bite&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The comparison produced a clear result in our chosen environment: Jev survived longer. It also produced a less convenient result: a short &lt;code&gt;if&lt;/code&gt; statement was competitive with Jev.&lt;/p&gt;

&lt;p&gt;But the most interesting work happened before the leaderboard. We had to distinguish a simulator bug from a decoder bug, excessive sensory drive from network behavior, and an ineffective ablation from a pathway our own input mechanism had bypassed.&lt;/p&gt;

&lt;p&gt;This is the story of those distinctions.&lt;/p&gt;

&lt;h2&gt;
  
  
  Three buttons, four inputs, one expensive mistake
&lt;/h2&gt;

&lt;p&gt;The environment is a sequence of abstract trials. Each controller, which we call an &lt;em&gt;arbiter&lt;/em&gt;, observes four numbers between zero and one:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;sugar&lt;/code&gt;: a food cue.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;bitter&lt;/code&gt;: a toxicity cue.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;looming&lt;/code&gt;: a noisy threat cue.&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;hunger&lt;/code&gt;: the agent's current energy deficit.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Eating can restore energy or expose the agent to poison. Escaping costs energy. Every trial also consumes energy through metabolism. A real threat can kill an agent that eats or idles.&lt;/p&gt;

&lt;p&gt;The objective is mean lifetime: how many trials the agent completes alive, capped at 500. There is no body, navigation, or continuous visual scene.&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    World["Trial environment"] --&amp;gt; Obs["Sugar, bitter, looming, hunger"]
    Obs --&amp;gt; Arbiter["One arbiter per episode"]
    Arbiter --&amp;gt; Action["EAT, ESCAPE, or IDLE"]
    Action --&amp;gt; Outcome["Threat outcome and energy update"]
    Outcome --&amp;gt; Alive{"Still alive?"}
    Alive --&amp;gt;|Yes| World
    Alive --&amp;gt;|No| Score["Record completed trials"]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;We asked three questions. Does the simulated wiring produce interactions between feeding and escape pathways? How well does that behavior survive against an API arbiter and simple baselines? And how long does each implementation take to decide?&lt;/p&gt;

&lt;p&gt;For paired comparisons, each arbiter receives the same precomputed environmental randomness for a given seed. Its actions still change its energy, so hunger trajectories can diverge. Pairing the world does not make the agents' complete observation histories identical.&lt;/p&gt;

&lt;h2&gt;
  
  
  A connectome needs an adapter
&lt;/h2&gt;

&lt;p&gt;Our graph contains &lt;strong&gt;138,639 neurons and 15,091,983 aggregated directed edges&lt;/strong&gt;, from FlyWire v783. Those edges are connections between neuron pairs, not a count of individual synapses.&lt;/p&gt;

&lt;p&gt;Our dynamics follow &lt;a href="https://github.com/philshiu/Drosophila_brain_model/tree/91bdd1e7dc" rel="noopener noreferrer"&gt;Shiu and colleagues' reference model&lt;/a&gt;. We simulated the graph with leaky integrate-and-fire neurons: incoming spikes change a neuron's state, that state decays, and crossing a threshold causes a spike and reset. There was no backpropagation, reinforcement learning, or learned readout in this experiment.&lt;/p&gt;

&lt;p&gt;The wiring did not specify how our four numbers should enter the network or how network activity should press a button. We supplied those interfaces:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Sugar and bitter drive designated sensory neurons.&lt;/li&gt;
&lt;li&gt;Looming directly drives LPLC2 and LC4 neurons, bypassing the retina.&lt;/li&gt;
&lt;li&gt;Hunger increases sugar input gain.&lt;/li&gt;
&lt;li&gt;Four spikes from the MN9 feeding readout within a trailing 50 ms window trigger &lt;code&gt;EAT&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;One spike from either DNp01 escape readout triggers &lt;code&gt;ESCAPE&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;The first qualifying event wins; an exact tie goes to escape. No event within 500 ms of simulated time means idle.&lt;/p&gt;

&lt;p&gt;These are engineering choices. In particular, the four-spike feeding threshold is our criterion, not a measured universal threshold for a fly deciding to eat. We recorded such choices in an &lt;a href="https://github.com/ediskandarov/flight-or-bite/blob/23f94d2/docs/ENGINEERED.md" rel="noopener noreferrer"&gt;engineered-assumptions register&lt;/a&gt;.&lt;/p&gt;

&lt;p&gt;That adapter became one of the main characters in the investigation.&lt;/p&gt;

&lt;h2&gt;
  
  
  First, make the simulator agree with itself
&lt;/h2&gt;

&lt;p&gt;Running the full graph repeatedly needed an efficient backend. We used an event backend implemented with NumPy and Numba, retaining the full graph while updating the active set. Neurons at exact rest stay at rest until activity reaches them.&lt;/p&gt;

&lt;p&gt;Efficiency introduced a verification problem: were we still executing the same dynamics as the Brian2 reference?&lt;/p&gt;

&lt;p&gt;A matching final button would have been weak evidence. Thousands of incorrect internal events could still end in &lt;code&gt;ESCAPE&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Instead, we replayed the reference simulator's stimulated-neuron spike trains into the event backend and compared &lt;strong&gt;every network spike as a &lt;code&gt;(neuron, timestep)&lt;/code&gt; pair&lt;/strong&gt;. Sharing an RNG seed would not have been enough: the two input generators consume randomness differently.&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    Ref["Brian2 reference trial"] --&amp;gt; Inputs["Recorded stimulated-neuron spikes"]
    Ref --&amp;gt; TraceA["Reference network spike trace"]
    Inputs --&amp;gt; Event["Replay in event backend"]
    Event --&amp;gt; TraceB["Event network spike trace"]
    TraceA --&amp;gt; Compare["Compare neuron and integer timestep pairs"]
    TraceB --&amp;gt; Compare
    Compare --&amp;gt; Decode["Compare decoded action and decision time"]&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;The conflict check used simultaneous sugar and looming input, ten seeds, and a 0.1 ms timestep. After the decoder fix described next, &lt;strong&gt;26,502 of 26,502 spikes matched&lt;/strong&gt;, and all ten decoded decisions and times matched exactly.&lt;/p&gt;

&lt;p&gt;That checked details with real consequences: operation order within a timestep, synaptic delay, refractory behavior, and reset. Inputs reaching refractory targets are dropped; reset clears the firing neuron's state. Moving an operation can change later spikes.&lt;/p&gt;

&lt;p&gt;This established implementation agreement for the tested model and inputs. It did not establish biological fidelity, nor did this replay check validate every extension, such as the ablation mechanism. The &lt;a href="https://github.com/ediskandarov/flight-or-bite/blob/23f94d2/reports/crosscheck_brian2.md" rel="noopener noreferrer"&gt;cross-check report&lt;/a&gt; spells out that boundary.&lt;/p&gt;

&lt;h2&gt;
  
  
  The bug hiding inside 50 milliseconds
&lt;/h2&gt;

&lt;p&gt;One simulator represented a decision time as &lt;code&gt;39.2&lt;/code&gt;. The other represented the same timestep as &lt;code&gt;39.199999999999996&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;Initially this looked like serialization noise. But the feeding decoder compared spike intervals in floating-point milliseconds. A burst spanning exactly 50 ms could fall on either side of the comparison because of rounding.&lt;/p&gt;

&lt;p&gt;The intended window was &lt;code&gt;(t - 50 ms, t]&lt;/code&gt;: exclude the left boundary, include the current spike. At a 0.1 ms timestep, four spikes qualify only when the first and last are &lt;strong&gt;fewer than 500 ticks apart&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The fix was to use the simulator's discrete clock. This is the essential logic, specialized to the four-spike criterion:&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="c1"&gt;# spike_t_ms contains the MN9 spike times; np is NumPy.
&lt;/span&gt;&lt;span class="n"&gt;steps&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;sort&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;rint&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;spike_t_ms&lt;/span&gt; &lt;span class="o"&gt;/&lt;/span&gt; &lt;span class="mf"&gt;0.1&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nf"&gt;astype&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;int64&lt;/span&gt;&lt;span class="p"&gt;))&lt;/span&gt;
&lt;span class="k"&gt;if&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;steps&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;=&lt;/span&gt; &lt;span class="mi"&gt;4&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
    &lt;span class="n"&gt;spans&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;steps&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="o"&gt;-&lt;/span&gt; &lt;span class="n"&gt;steps&lt;/span&gt;&lt;span class="p"&gt;[:&lt;/span&gt;&lt;span class="o"&gt;-&lt;/span&gt;&lt;span class="mi"&gt;3&lt;/span&gt;&lt;span class="p"&gt;]&lt;/span&gt;
    &lt;span class="n"&gt;qualifying_bursts&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="n"&gt;np&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nf"&gt;flatnonzero&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;spans&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mi"&gt;500&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now the boundary means the same thing in both backends.&lt;/p&gt;

&lt;p&gt;There is an audit detail worth preserving: the earlier M3 validity gates were not rerun after this fix. Their raw “DNp01 spiked” outcomes are unaffected; feeding outcomes could change for bursts exactly on the 50 ms boundary. The post-fix cross-check and later confirmatory run provide separate evidence.&lt;/p&gt;

&lt;p&gt;The lesson travels well beyond neuroscience: if the underlying system has a discrete clock, express boundary-sensitive decisions in that clock.&lt;/p&gt;

&lt;h2&gt;
  
  
  Then test the pathways separately
&lt;/h2&gt;

&lt;p&gt;Yes, we tested individual pathways. We applied isolated stimuli and observed named readouts while continuing to simulate the full graph.&lt;/p&gt;

&lt;p&gt;Sugar should increase MN9 activity. Bitter should suppress the feeding response to sugar. Looming should increase the escape response. Before interpreting simultaneous stimuli, each input needed a usable operating range.&lt;/p&gt;

&lt;p&gt;Silencing MN9 removed decoded feeding, and silencing both DNp01 neurons removed decoded escape. These were useful readout sanity checks, although those outcomes follow from how we defined the decoder.&lt;/p&gt;

&lt;p&gt;The initial looming encoding failed that practical requirement. Driving all &lt;strong&gt;314 LPLC2 and LC4 neurons&lt;/strong&gt; with the provisional maximum rate of 200 Hz made every tested nonzero looming level trigger escape responses. The response was effectively saturated.&lt;/p&gt;

&lt;p&gt;We calibrated sugar and looming separately on development seeds, using a predefined anchor: at stimulus 0.5, with other inputs silent and hunger zero, the corresponding response should occur with probability 0.5.&lt;/p&gt;

&lt;p&gt;The resulting maximum rates were:&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Channel&lt;/th&gt;
&lt;th&gt;Maximum input rate&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Sugar&lt;/td&gt;
&lt;td&gt;102.783 Hz&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Looming&lt;/td&gt;
&lt;td&gt;2.344 Hz&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The looming rate was roughly &lt;strong&gt;44 times smaller&lt;/strong&gt;. The same number of hertz did not represent a comparable stimulus across the two pathways.&lt;/p&gt;

&lt;p&gt;Independent development seeds verified the 0.5 response anchor for both channels. Bitter inherited the sugar rate rather than receiving its own calibration. Hunger modulation subsequently moves the feeding operating point. These qualifications matter when interpreting what the calibration achieved. See the &lt;a href="https://github.com/ediskandarov/flight-or-bite/blob/23f94d2/reports/calibration.md" rel="noopener noreferrer"&gt;calibration record&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The ablation that exposed our input boundary
&lt;/h2&gt;

&lt;p&gt;With isolated responses working, we could ask a more interesting question: when food and danger appear together, does feeding input change the escape pathway itself?&lt;/p&gt;

&lt;p&gt;We held looming input randomness fixed across paired trials and added sugar. In the later confirmatory test at looming 0.8, DNp01 spiked in &lt;strong&gt;92 of 100 trials without sugar&lt;/strong&gt;, versus &lt;strong&gt;54 of 100 with sugar 0.6&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;This measures escape-neuron activity, not merely which action won the decoder race. Feeding input was changing the escape response inside the model.&lt;/p&gt;

&lt;p&gt;We then tested a candidate group of 25 inhibitory neurons, called &lt;code&gt;M_loom&lt;/code&gt;. The group was identified during exploration and fixed before confirmatory testing. Silencing it removed the net suppression in the earlier gate experiment; the later confirmatory ablation supported the same mechanism.&lt;/p&gt;

&lt;p&gt;One individual candidate, &lt;strong&gt;cL20&lt;/strong&gt;, was especially revealing. Silencing it alone did not remove the effect.&lt;/p&gt;

&lt;p&gt;Its relevant outgoing connections largely targeted LC4 and LPLC2. Those were precisely the neurons we had turned into externally driven spike sources: each input event forced a spike regardless of inhibition.&lt;/p&gt;

&lt;p&gt;Our stimulus injection bypassed the inhibition we were trying to inspect along that route.&lt;br&gt;
&lt;/p&gt;

&lt;pre data-lang="mermaid"&gt;&lt;code&gt;flowchart TD
    Input["External looming events"] --&amp;gt; Forced["Force LC4 and LPLC2 spikes"]
    Forced --&amp;gt; Network["Downstream network"]
    Network --&amp;gt; Escape["DNp01 escape readout"]
    CL["cL20 inhibitory input"] -.-&amp;gt; Boundary["Cannot prevent forced source spikes"]
    Boundary -.-&amp;gt; Forced&lt;/code&gt;&lt;/pre&gt;



&lt;p&gt;This is a schematic of the modeling boundary, not a complete anatomical circuit diagram.&lt;/p&gt;

&lt;p&gt;A separate check compared &lt;strong&gt;17,916 input-neuron spikes across 60 paired trials&lt;/strong&gt; and found no sugar/no-sugar differences. Silencing the other 24 members of &lt;code&gt;M_loom&lt;/code&gt;, while leaving cL20 intact, removed the net suppression.&lt;/p&gt;

&lt;p&gt;For a software engineer, this resembles a test double that always returns a canned result while the test is supposed to exercise a dependency's response to changing state.&lt;/p&gt;

&lt;p&gt;The justified conclusion is narrow: this cL20 route cannot explain the effect under our forced-input implementation. It says nothing decisive about cL20's role in a living fly. The &lt;a href="https://github.com/ediskandarov/flight-or-bite/blob/23f94d2/reports/gates.md" rel="noopener noreferrer"&gt;gate and ablation report&lt;/a&gt; contains the paired results.&lt;/p&gt;

&lt;h2&gt;
  
  
  We also had to debug the benchmark
&lt;/h2&gt;

&lt;p&gt;Another problem appeared before the final protocol was frozen.&lt;/p&gt;

&lt;p&gt;We initially considered tabulating each policy on a grid, interpolating between nodes, and sampling an action. This would make repeated evaluation cheaper.&lt;/p&gt;

&lt;p&gt;To test the harness, we put a known model-based oracle through it. In that &lt;strong&gt;earlier development environment&lt;/strong&gt;, direct execution averaged &lt;strong&gt;151.2 trials&lt;/strong&gt;. A 225-node table averaged &lt;strong&gt;60.1&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The table reproduced the policy exactly at its nodes. Between nodes, interpolating neighboring one-hot decisions created mixtures of actions. Sampling those mixtures changed the policy, especially near sharp decision boundaries.&lt;/p&gt;

&lt;p&gt;The optimization preserved pointwise tests while destroying much of the behavior we intended to measure. These early numbers use different environment settings from the final study; they are not another run of the final leaderboard.&lt;/p&gt;

&lt;p&gt;We made the primary comparison online, using each arbiter's native action, before freezing the test protocol. Tables remained useful for secondary analyses. The &lt;a href="https://github.com/ediskandarov/flight-or-bite/blob/23f94d2/reports/grid_loss.md" rel="noopener noreferrer"&gt;grid-loss experiment&lt;/a&gt; documents why.&lt;/p&gt;

&lt;h2&gt;
  
  
  Give the API arbiter the rules
&lt;/h2&gt;

&lt;p&gt;Jev also needed an adapter: observations, action descriptions, instructions, and a choice about which response field to execute.&lt;/p&gt;

&lt;p&gt;Before the test, we compared four predefined modes on the same 50 development seeds. Numeric observations without the rules package averaged &lt;strong&gt;25.98 trials&lt;/strong&gt;. Numeric observations with the rules package averaged &lt;strong&gt;64.26&lt;/strong&gt;. A bucketed, informed version was nearly tied at &lt;strong&gt;64.20&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The package included both instructions and criteria descriptions, so this was not an isolated experiment on one prompt sentence. We selected the highest-mean mode, &lt;code&gt;informed&lt;/code&gt;, using the previously specified rule. The small lead over informed bucketed input did not establish a significant difference.&lt;/p&gt;

&lt;p&gt;This also defines the fairness boundary: Jev received an explicit account of the task, while the connectome simulation received engineered sensory input. They shared an action interface, not identical prior knowledge. See the &lt;a href="https://github.com/ediskandarov/flight-or-bite/blob/23f94d2/reports/jev_mode_selection.md" rel="noopener noreferrer"&gt;mode-selection report&lt;/a&gt;.&lt;/p&gt;

&lt;h2&gt;
  
  
  The leaderboard, and the if statement
&lt;/h2&gt;

&lt;p&gt;The primary evaluation used &lt;strong&gt;300 paired seeds, five arbiters, and no decision deadline&lt;/strong&gt;. Hypotheses, configurations, and analysis criteria were frozen before test evaluation.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Arbiter&lt;/th&gt;
&lt;th&gt;Mean completed trials&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Model-based oracle&lt;/td&gt;
&lt;td&gt;73.81&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Fixed-priority rule&lt;/td&gt;
&lt;td&gt;56.66&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jev, informed&lt;/td&gt;
&lt;td&gt;55.39&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;LIF connectome simulation&lt;/td&gt;
&lt;td&gt;23.90&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Random&lt;/td&gt;
&lt;td&gt;14.14&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;Jev's paired advantage over the connectome was &lt;strong&gt;31.49 trials&lt;/strong&gt;, with a 95% bootstrap confidence interval of &lt;strong&gt;[28.06, 34.91]&lt;/strong&gt;. It won the preregistered comparison.&lt;/p&gt;

&lt;p&gt;Then there was this baseline, shown here without its interface boilerplate:&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;choose&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;sugar&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;bitter&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="n"&gt;looming&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;looming&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mf"&gt;0.5&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;ESCAPE&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="k"&gt;if&lt;/span&gt; &lt;span class="n"&gt;sugar&lt;/span&gt; &lt;span class="o"&gt;&amp;gt;&lt;/span&gt; &lt;span class="mi"&gt;0&lt;/span&gt; &lt;span class="ow"&gt;and&lt;/span&gt; &lt;span class="n"&gt;bitter&lt;/span&gt; &lt;span class="o"&gt;&amp;lt;&lt;/span&gt; &lt;span class="mf"&gt;0.3&lt;/span&gt;&lt;span class="p"&gt;:&lt;/span&gt;
        &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;EAT&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
    &lt;span class="k"&gt;return&lt;/span&gt; &lt;span class="sh"&gt;"&lt;/span&gt;&lt;span class="s"&gt;IDLE&lt;/span&gt;&lt;span class="sh"&gt;"&lt;/span&gt;
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Its descriptive advantage over Jev was &lt;strong&gt;1.27 trials&lt;/strong&gt;, with a confidence interval of &lt;strong&gt;[-3.32, 5.87]&lt;/strong&gt;. We did not demonstrate a significant difference. That is not proof of equivalence, but it substantially limits any grand interpretation of Jev's win.&lt;/p&gt;

&lt;p&gt;The oracle is also a qualified reference: it uses known environment dynamics and a policy derived by finite-horizon dynamic programming, applied stationarily because the arbiter interface has no trial index. It does not observe the hidden threat directly or establish a universal performance ceiling.&lt;/p&gt;

&lt;p&gt;The failure modes add texture. Predators caused 98% of connectome deaths. Jev mostly died of starvation: 76%, versus 22% from predators. Its frequent escapes avoided danger while consuming energy and passing up feeding opportunities.&lt;/p&gt;

&lt;p&gt;All of these findings concern this environment and these implementations. The &lt;a href="https://github.com/ediskandarov/flight-or-bite/blob/23f94d2/reports/final_report.md" rel="noopener noreferrer"&gt;complete report&lt;/a&gt; includes intervals, action frequencies, and confirmatory circuit tests.&lt;/p&gt;

&lt;h2&gt;
  
  
  A probability vector is another policy decision
&lt;/h2&gt;

&lt;p&gt;For the primary run, Jev acted using its returned &lt;code&gt;choice&lt;/code&gt;. We separately evaluated sampling from its returned &lt;code&gt;probabilities&lt;/code&gt;.&lt;/p&gt;

&lt;p&gt;In that secondary run of &lt;strong&gt;100 paired seeds&lt;/strong&gt;, Jev averaged &lt;strong&gt;29.97 trials&lt;/strong&gt;, versus &lt;strong&gt;24.06&lt;/strong&gt; for the connectome: a paired advantage of &lt;strong&gt;5.91 [0.63, 11.03]&lt;/strong&gt;.&lt;/p&gt;

&lt;p&gt;The secondary run has fewer seeds than the primary run, so subtracting their headline means is not a clean estimate of a sampling effect. It nevertheless makes the integration question concrete: executing the selected action and drawing from the probability vector define different behaviors. The secondary result does not replace the primary comparison.&lt;/p&gt;

&lt;p&gt;In an environment where one exploratory action can be fatal, that distinction deserves an explicit decision in the client code.&lt;/p&gt;

&lt;h2&gt;
  
  
  The stopwatch measures a deployment
&lt;/h2&gt;

&lt;p&gt;The connectome simulation ran locally on a &lt;strong&gt;16-inch MacBook Pro (November 2023), with an Apple M3 Pro chip and 36 GB of unified memory&lt;/strong&gt;. The system screenshot supplied by the author shows &lt;strong&gt;macOS Sequoia 15.7.9&lt;/strong&gt;. Jev ran remotely through its API.&lt;/p&gt;

&lt;p&gt;We measured latency separately, with 20 warm-up calls per Jev mode and 1,000 timed decisions per arbiter or mode. The benchmarks ran from a normal terminal on AC power.&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Implementation&lt;/th&gt;
&lt;th&gt;Median wall time&lt;/th&gt;
&lt;th&gt;p95&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Local connectome simulation&lt;/td&gt;
&lt;td&gt;54.4 ms&lt;/td&gt;
&lt;td&gt;262.9 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jev informed through OpenRouter&lt;/td&gt;
&lt;td&gt;354.7 ms&lt;/td&gt;
&lt;td&gt;479.1 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Jev informed through direct TypeSafe API&lt;/td&gt;
&lt;td&gt;304.8 ms&lt;/td&gt;
&lt;td&gt;408.8 ms&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;The direct informed median was about &lt;strong&gt;14.1% lower&lt;/strong&gt;. We preserved the OpenRouter measurements and stored the direct benchmark separately.&lt;/p&gt;

&lt;p&gt;These were separate runs at different times. OpenRouter reported &lt;code&gt;typesafe/jev-1.13-20260917&lt;/code&gt;; the direct API reported &lt;code&gt;jev-1.13.0&lt;/code&gt;. We did not verify that those identifiers resolved to identical model snapshots, so we cannot attribute the entire difference to the intermediary. The &lt;a href="https://github.com/ediskandarov/flight-or-bite/blob/23f94d2/reports/latency_typesafe/comparison.md" rel="noopener noreferrer"&gt;direct comparison&lt;/a&gt; retains that provenance.&lt;/p&gt;

&lt;p&gt;Local runtime, network-inclusive API time, and simulated neural time are three different measurements. None of these wall-time numbers is a living fly's reaction time. And because the primary survival experiment imposed no deadline, the simulation's faster local response did not earn a survival advantage there.&lt;/p&gt;

&lt;h2&gt;
  
  
  What remained after the comparison
&lt;/h2&gt;

&lt;p&gt;One validity gate failed: only &lt;strong&gt;9 of 11 parameter variants&lt;/strong&gt; retained the required behavior. Halving sugar drive prevented the feeding criterion from being reached; halving synaptic strength silenced the measured readouts. We kept the original thresholds and recorded the failure.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conclusions depend on manually chosen parameters.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;That sentence belongs next to the results. The graph mattered: degree- and sign-preserving shuffles lost the readout responses under the same encoding. But structure alone did not determine behavior; input gains, dynamics, and output criteria mattered too.&lt;/p&gt;

&lt;p&gt;For future experiments, the strongest lessons are practical:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Compare internal traces when validating an optimized simulator.&lt;/li&gt;
&lt;li&gt;Test isolated pathways before interpreting their interactions.&lt;/li&gt;
&lt;li&gt;Check whether the stimulus mechanism overrides the mechanism an ablation is meant to test.&lt;/li&gt;
&lt;li&gt;Run known policies through the evaluation harness before trusting its rankings.&lt;/li&gt;
&lt;li&gt;Include simple baselines and make action-selection semantics explicit.&lt;/li&gt;
&lt;li&gt;Keep decision quality, simulated time, and deployment latency separate.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;We began with a fly's wiring and an API competing over three buttons. We ended with a clearer account of what each layer contributed to the result—and several examples of how easily those layers could be mistaken for the intelligence of the whole system.&lt;/p&gt;

&lt;p&gt;The code, reports, and tracked results are in &lt;a href="https://github.com/ediskandarov/flight-or-bite" rel="noopener noreferrer"&gt;Flight or Bite on GitHub&lt;/a&gt;. The &lt;a href="https://github.com/ediskandarov/flight-or-bite/blob/23f94d2/PREREG.md" rel="noopener noreferrer"&gt;preregistration&lt;/a&gt; preserves the study's commitments; its post-study English translation is explicitly disclosed. The README explains reproduction requirements, including which original run artifacts are not part of a fresh checkout.&lt;/p&gt;

</description>
      <category>ai</category>
      <category>python</category>
      <category>machinelearning</category>
      <category>jev</category>
    </item>
    <item>
      <title>Ten Things I Wish I Knew Before Launching a Startup</title>
      <dc:creator>Eduard Iskandarov</dc:creator>
      <pubDate>Sun, 11 Apr 2021 17:23:46 +0000</pubDate>
      <link>https://dev.to/ediskandarov/ten-things-i-wish-i-knew-before-launching-a-startup-3jda</link>
      <guid>https://dev.to/ediskandarov/ten-things-i-wish-i-knew-before-launching-a-startup-3jda</guid>
      <description>&lt;p&gt;This article is devoted to software engineers who wake up thinking, "I should build the next big thing." This intention eventually faces many difficulties.&lt;/p&gt;

&lt;p&gt;Without a thorough approach, a good outcome would be a few months wasted, as it happened to me some time ago.&lt;/p&gt;

&lt;p&gt;Engineering and even management/leadership skills are not enough if you want to set up a business or a startup. You should look at things from different angles and face reality.&lt;/p&gt;

&lt;p&gt;To succeed in entrepreneurship, you first need to understand how business works under the hood, avoid wrong moves, and carefully spend time and money.&lt;/p&gt;

&lt;h2&gt;
  
  
  Sharpen the idea until it is a one-sentence pitch.
&lt;/h2&gt;

&lt;blockquote&gt;
&lt;p&gt;People often don't buy the best products. They buy the best products they understand. &lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;Until you describe your idea in 3-5 words, you most likely barely understand what you are about to do.&lt;/p&gt;

&lt;p&gt;Think of what real-life problem you want to solve. Spend some time rewording the pitch. It should be straightforward so that your friends and relatives will get it without explanations.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://fi.co/insight/can-you-explain-your-startup-idea-in-one-sentence" rel="noopener noreferrer"&gt;Can You Explain Your Startup Idea in One Sentence?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://austinstartups.com/how-to-describe-your-startup-c344e08d2bbd" rel="noopener noreferrer"&gt;How to Describe Your Startup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@gtabidze/describe-your-idea-framework-2bfca3dc6ec9" rel="noopener noreferrer"&gt;How to describe your startup idea&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.alexanderjarvis.com/one-simple-trick-to-make-writing-your-startup-description-suddenly-easy/" rel="noopener noreferrer"&gt;One simple trick to make writing your startup description suddenly easy&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Write down a story behind the idea.
&lt;/h2&gt;

&lt;p&gt;What does motivate you? How did you come up with the idea?&lt;/p&gt;

&lt;p&gt;Do you want to make money or fix someone's pain? Questions like that will bring clarity.&lt;/p&gt;

&lt;p&gt;At the end of the day, if the answer is primarily to make some money - there is a high chance you will quickly lose motivation, and the initiative won't last long. You better find something that will drive you for years.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://fi.co/insight/startuptelling-startup-storytelling-the-smart-way" rel="noopener noreferrer"&gt;Startuptelling: Startup Storytelling the SMART Way&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/swlh/how-to-use-storytelling-in-your-startup-d8b57db375fd" rel="noopener noreferrer"&gt;How to use storytelling in your startup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@cambridgetricia/storytelling-your-way-to-startup-success-8a75bce01594" rel="noopener noreferrer"&gt;Storytelling Your Way To Startup Success&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.fastcompany.com/90328836/three-stories-every-startup-needs-to-tell" rel="noopener noreferrer"&gt;Three stories every startup needs to tell&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Identify who your customer is.
&lt;/h2&gt;

&lt;p&gt;Think of who are your potential customers? What intentions do they have? What about their desires and limits? Perhaps they have a specific role at work or anything else?&lt;/p&gt;

&lt;p&gt;The better you understand your customers and their behavior, the more chance you will acquire first users. It will be hard to find a customer if the product is too generic, concentrate on a niche. Things may change as your product evolve but try to laser focus in the beginning.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://uxchecklist.github.io/" rel="noopener noreferrer"&gt;UX Project Checklist&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://xd.adobe.com/ideas/process/user-research/putting-personas-to-work-in-ux-design/" rel="noopener noreferrer"&gt;Putting Personas to Work in UX Design: What They Are and Why They're Important&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://uxplanet.org/how-to-create-personas-step-by-step-guide-303d7b0d81b4" rel="noopener noreferrer"&gt;How to create Personas, a step-by-step guide.&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Estimate market potential.
&lt;/h2&gt;

&lt;p&gt;Any entrepreneur is an investor. You invest your time and money into building something.&lt;/p&gt;

&lt;p&gt;And the legitimate expectation is to have a return on investments. Do not apply any efforts until you have a market size estimation and approximation of your pricing model.&lt;/p&gt;

&lt;p&gt;There's no easy and precise way for those matters, but you should try your best and have some estimations.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.forbes.com/sites/alejandrocremades/2018/09/23/how-to-effectively-determine-your-market-size/" rel="noopener noreferrer"&gt;How To Effectively Determine Your Market Size&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://learn.marsdd.com/article/how-to-estimate-market-size-business-and-marketing-planning-for-startups/" rel="noopener noreferrer"&gt;How to estimate market size: Business and marketing planning for startups&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.thebusinessplanshop.com/blog/en/entry/tam_sam_som" rel="noopener noreferrer"&gt;TAM SAM SOM - what it means and why it matters&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.lean-case.com/tam-sam-som/" rel="noopener noreferrer"&gt;TAM, SAM, and SOM: fundamental market size metrics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Figure out what competencies are missing.
&lt;/h2&gt;

&lt;p&gt;Building a business is hard. You should wear many hats, such as product, engineer, marketer, sales, accounting, support, and others.&lt;/p&gt;

&lt;p&gt;Be honest with yourself. It's not possible to do all things at a good enough quality level. You will need to find a co-founder with relevant experience or outsource some activity.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://masschallenge.org/article/important-startup-roles" rel="noopener noreferrer"&gt;9 Make-or-Break Startup Roles (and Why They Are Important)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.rocketspace.com/tech-startups/the-6-essential-startup-roles-that-every-team-should-hire" rel="noopener noreferrer"&gt;The 6 Essential Startup Roles That Every Team Should Hire&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://blog.thehub.io/blog/define-roles-startup-team/" rel="noopener noreferrer"&gt;Startup Team – How to Define Roles&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://brainhub.eu/blog/5-crucial-roles-in-every-tech-startup/" rel="noopener noreferrer"&gt;5 Crucial Roles in Every Successful Tech Startup&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fi.co/insight/where-do-you-fit-in-a-founder-s-guide-to-startup-roles" rel="noopener noreferrer"&gt;Where Do You Fit In? A Founder's Guide to Startup Roles&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conduct competitive research.
&lt;/h2&gt;

&lt;p&gt;Someone has likely come up with a solution. Carefully create a list of competitors, write down all their strengths and weaknesses.&lt;/p&gt;

&lt;p&gt;Think of what makes your solution unique and valuable for customers.&lt;/p&gt;

&lt;p&gt;No competition might be a signal of the red flag. Perhaps a problem you're solving is not significant enough, or the market has unfavorable conditions?&lt;/p&gt;

&lt;p&gt;As a last resort, a spreadsheet could be a competitor to any information system.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://learn.marsdd.com/article/identify-competitors/" rel="noopener noreferrer"&gt;How do I identify competitors?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/swlh/all-startups-have-competition-startup-survival-guide-62097d9bc478" rel="noopener noreferrer"&gt;All Startup's have competition: Startup Survival Guide&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.alexanderjarvis.com/who-are-your-startup-competitors/" rel="noopener noreferrer"&gt;Who are your startup competitors?&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Have an idea of the startup's business model.
&lt;/h2&gt;

&lt;p&gt;By now, you have an answer to many questions. What product are you building, your customers. It now time to come up with a sustainable business model.&lt;/p&gt;

&lt;p&gt;There should be a revenue stream that will bring users to the product. Do not disperse efforts creating many revenue streams. Focus on one, but make it work.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://fi.co/insight/the-10-most-popular-startup-revenue-models" rel="noopener noreferrer"&gt;The 10 Most Popular Startup Revenue Models&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.nexea.co/25-business-models-for-every-startup/" rel="noopener noreferrer"&gt;25 Proven Startup Business Models You Must Know&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://getgist.com/how-to-choose-the-most-profitable-business-model-for-your-startup/" rel="noopener noreferrer"&gt;How To Choose The Most Profitable Business Model For Your Startup&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  In the very beginning, focus on traction.
&lt;/h2&gt;

&lt;p&gt;Being too ambitious at the early stage of the business might be harmful to its future. Do not focus on growth. Acquire first customers, gather feedback about your product. Make sure your assumptions are correct. Accelerate your business machine slowly but surely.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.caycon.com/blog/2018/10/measuring-startup-traction" rel="noopener noreferrer"&gt;Measuring Startup Traction&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/@awesomelok/traction-metrics-for-your-startup-e045d6572610" rel="noopener noreferrer"&gt;Traction metrics for your startup?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://fi.co/insight/traction-growth-turning-your-startup-into-a-business" rel="noopener noreferrer"&gt;Traction &amp;amp; Growth: Turning Your Startup into a Business&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://growthrocks.com/blog/early-startup-traction/" rel="noopener noreferrer"&gt;How To Get Early Startup Traction – The Complete Guide&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Respect the rule of business survival.
&lt;/h2&gt;

&lt;p&gt;Running a business may not something people do intuitively. There are basic rules that help you in navigation.&lt;/p&gt;

&lt;p&gt;Customer lifetime value should be at least three times higher than acquisition cost(&lt;code&gt;LTV/CAC &amp;gt;= 3&lt;/code&gt;).&lt;/p&gt;

&lt;p&gt;This will ensure your business is not sinking and has the potential to grow. Simple, right?&lt;/p&gt;

&lt;p&gt;The following essential thing is money flow. It could be negative if the customer acquisition cost is higher than lifetime value, or you spend money investing into growth. That's fine for short periods or other situations with calculated risk. Be conscious about this metric. In the long run, money flow must be positive. Otherwise, the business will run out of money.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://quickbooks.intuit.com/r/financial-management/top-5-financial-metrics-to-track-to-ensure-startup-success/" rel="noopener noreferrer"&gt;7 KPI meanings small business owners need to know&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://a16z.com/2015/08/21/16-metrics/" rel="noopener noreferrer"&gt;16 Startup Metrics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.inc.com/craig-bloem/5-key-metrics-every-early-stage-business-must-track.html" rel="noopener noreferrer"&gt;5 Performance Metrics Your Small Business Should Track&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://getvested.io/blog/startup-financial-metrics/" rel="noopener noreferrer"&gt;The Only Startup Financial Metrics That Matter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/swlh/4-key-financial-metrics-that-all-startups-should-measure-8302ea640f6f" rel="noopener noreferrer"&gt;4 Key Financial Metrics That All Startups Should Measure&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Learn from the mistakes and failures of other startups.
&lt;/h2&gt;

&lt;p&gt;Before moving too far, learn how other startups failed. Your case will likely fall under one of the well-known risks. Make certain significant risks are covered in some way.&lt;/p&gt;

&lt;p&gt;Based on research, top 3 common issues:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;No market need&lt;/li&gt;
&lt;li&gt;Ran out of cash&lt;/li&gt;
&lt;li&gt;Not the right team&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;There are more. Look over researches on the topic. It could be a beneficial and eye-opening experience.&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.eu-startups.com/2018/09/the-10-most-common-reasons-why-startups-fail/" rel="noopener noreferrer"&gt;The 10 most common reasons why startups fail&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.lead-innovation.com/english-blog/reasons-startups-fail" rel="noopener noreferrer"&gt;5 TOP reasons why startups fail&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://medium.com/swlh/the-top-10-reasons-startups-fail-ab3196d70568" rel="noopener noreferrer"&gt;The Top 10 Reasons Startups Fail&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://s3-us-west-2.amazonaws.com/cbi-content/research-reports/The-20-Reasons-Startups-Fail.pdf" rel="noopener noreferrer"&gt;The Top 20 Reasons Startups Fail&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.forbes.com/sites/deniselyohn/2019/05/01/why-start-ups-fail/#5295943728a5" rel="noopener noreferrer"&gt;Why Startups Fail&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.forentrepreneurs.com/why-startups-fail/" rel="noopener noreferrer"&gt;5 Reasons Startups Fail&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>startup</category>
      <category>entrepreneurship</category>
    </item>
  </channel>
</rss>
