<?xml version="1.0" encoding="utf-8"?>
<informationTable xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns="http://www.sec.gov/edgar/document/thirteenf/informationtable">
  <infoTable>
    <nameOfIssuer>ADTRAN Holdings</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>00486H105</cusip>
    <value>13022</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1035167</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1035167</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>American Coastal Insurance</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>910710102</cusip>
    <value>14326</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1273455</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1273455</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Aviat Networks</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>05366Y201</cusip>
    <value>15473</value>
    <shrsOrPrnAmt>
      <sshPrnamt>684326</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>684326</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>BGSF Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>05601C105</cusip>
    <value>4083</value>
    <shrsOrPrnAmt>
      <sshPrnamt>631037</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>631037</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Barrett Business Services</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>068463108</cusip>
    <value>7697</value>
    <shrsOrPrnAmt>
      <sshPrnamt>263765</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>263765</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Climb Global Solutions</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>946760105</cusip>
    <value>10666</value>
    <shrsOrPrnAmt>
      <sshPrnamt>538131</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>538131</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Core Molding Tech</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>218683100</cusip>
    <value>10302</value>
    <shrsOrPrnAmt>
      <sshPrnamt>459890</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>459890</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Customers Bancorp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>23204G100</cusip>
    <value>18168</value>
    <shrsOrPrnAmt>
      <sshPrnamt>261743</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>261743</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>DHI Group</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>23331S100</cusip>
    <value>9483</value>
    <shrsOrPrnAmt>
      <sshPrnamt>3374765</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>3374765</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Duluth Holdings</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>26443V101</cusip>
    <value>2361</value>
    <shrsOrPrnAmt>
      <sshPrnamt>747098</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>747098</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Eastern Company</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>276317104</cusip>
    <value>1537</value>
    <shrsOrPrnAmt>
      <sshPrnamt>75954</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>75954</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>El Pollo Loco Holdings</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>268603107</cusip>
    <value>14657</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1057482</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1057482</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Enova International</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>29357K103</cusip>
    <value>15352</value>
    <shrsOrPrnAmt>
      <sshPrnamt>113020</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>113020</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>First Western Financial</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>33751L105</cusip>
    <value>4673</value>
    <shrsOrPrnAmt>
      <sshPrnamt>190094</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>190094</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Fluent Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>34380C201</cusip>
    <value>3707</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1173092</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1173092</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Forrester Research</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>346563109</cusip>
    <value>3164</value>
    <shrsOrPrnAmt>
      <sshPrnamt>559041</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>559041</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Geospace Technologies</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>37364X109</cusip>
    <value>11128</value>
    <shrsOrPrnAmt>
      <sshPrnamt>912118</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>912118</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Harmony Biosciences</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>413197104</cusip>
    <value>8725</value>
    <shrsOrPrnAmt>
      <sshPrnamt>311496</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>311496</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Key Tronic Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>493144109</cusip>
    <value>2071</value>
    <shrsOrPrnAmt>
      <sshPrnamt>758695</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>758695</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>MGP Ingredients</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>55303J106</cusip>
    <value>7852</value>
    <shrsOrPrnAmt>
      <sshPrnamt>426950</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>426950</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Medallion Financial</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>583928106</cusip>
    <value>8837</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1032304</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1032304</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Myers Industries</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>628464109</cusip>
    <value>9981</value>
    <shrsOrPrnAmt>
      <sshPrnamt>471260</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>471260</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>NB Bancorp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>63945M107</cusip>
    <value>11664</value>
    <shrsOrPrnAmt>
      <sshPrnamt>553570</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>553570</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>NPK International</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>651718504</cusip>
    <value>12112</value>
    <shrsOrPrnAmt>
      <sshPrnamt>835920</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>835920</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Niagen Bioscience</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>171077407</cusip>
    <value>8949</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2029155</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2029155</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Orion Energy Systems</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>686275207</cusip>
    <value>2329</value>
    <shrsOrPrnAmt>
      <sshPrnamt>266476</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>266476</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Primoris Services Corp</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>74164f103</cusip>
    <value>624</value>
    <shrsOrPrnAmt>
      <sshPrnamt>4365</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>4365</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Regional Management</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>75902K106</cusip>
    <value>10327</value>
    <shrsOrPrnAmt>
      <sshPrnamt>320224</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>320224</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Resources Connection</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>76122Q105</cusip>
    <value>9149</value>
    <shrsOrPrnAmt>
      <sshPrnamt>2452930</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>2452930</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>SM Energy Company</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>78454L100</cusip>
    <value>5901</value>
    <shrsOrPrnAmt>
      <sshPrnamt>189263</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>189263</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Stabilis Solutions</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>85236P101</cusip>
    <value>1001</value>
    <shrsOrPrnAmt>
      <sshPrnamt>224513</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>224513</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Texas Capital Bancshrs</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>88224Q107</cusip>
    <value>11153</value>
    <shrsOrPrnAmt>
      <sshPrnamt>117550</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>117550</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>VAALCO Energy</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>91851C201</cusip>
    <value>11937</value>
    <shrsOrPrnAmt>
      <sshPrnamt>1882740</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>1882740</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Vishay Precision Group</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>92835K103</cusip>
    <value>10387</value>
    <shrsOrPrnAmt>
      <sshPrnamt>239222</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>239222</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
  <infoTable>
    <nameOfIssuer>Zumiez Inc</nameOfIssuer>
    <titleOfClass>COM</titleOfClass>
    <cusip>989817101</cusip>
    <value>5772</value>
    <shrsOrPrnAmt>
      <sshPrnamt>260463</sshPrnamt>
      <sshPrnamtType>SH</sshPrnamtType>
    </shrsOrPrnAmt>
    <investmentDiscretion>SOLE</investmentDiscretion>
    <votingAuthority>
      <Sole>260463</Sole>
      <Shared>0</Shared>
      <None>0</None>
    </votingAuthority>
  </infoTable>
</informationTable>
