<?xml version="1.0" encoding="utf-8"?>
<feed xml:lang="en-us" xmlns="http://www.w3.org/2005/Atom"><title>Simon Willison's Weblog: 37-signals</title><link href="http://simonwillison.net/" rel="alternate"/><link href="http://simonwillison.net/tags/37-signals.atom" rel="self"/><id>http://simonwillison.net/</id><updated>2026-01-17T17:06:41+00:00</updated><author><name>Simon Willison</name></author><entry><title>Quoting Jeremy Daer</title><link href="https://simonwillison.net/2026/Jan/17/jeremy-daer/#atom-tag" rel="alternate"/><published>2026-01-17T17:06:41+00:00</published><updated>2026-01-17T17:06:41+00:00</updated><id>https://simonwillison.net/2026/Jan/17/jeremy-daer/#atom-tag</id><summary type="html">
    &lt;blockquote cite="https://twitter.com/dhh/status/2012543705161326941"&gt;&lt;p&gt;&lt;em&gt;[On agents using CLI tools in place of REST APIs]&lt;/em&gt; To save on context window, yes, but moreso to improve accuracy and success rate when multiple tool calls are involved, particularly when calls must be correctly chained e.g. for pagination, rate-limit backoff, and recognizing authentication failures.&lt;/p&gt;
&lt;p&gt;Other major factor: which models can wield the skill? Using the CLI lowers the bar so cheap, fast models (gpt-5-nano, haiku-4.5) can reliably succeed. Using the raw APl is something only the costly "strong" models (gpt-5.2, opus-4.5) can manage, and it squeezes a ton of thinking/reasoning out of them, which means multiple turns/iterations, which means accumulating a ton of context, which means burning loads of expensive tokens. For one-off API requests and ad hoc usage driven by a developer, this is reasonable and even helpful, but for an autonomous agent doing repetitive work, it's a disaster.&lt;/p&gt;&lt;/blockquote&gt;
&lt;p class="cite"&gt;&amp;mdash; &lt;a href="https://twitter.com/dhh/status/2012543705161326941"&gt;Jeremy Daer&lt;/a&gt;, 37signals&lt;/p&gt;

    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/37-signals"&gt;37-signals&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ai"&gt;ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/prompt-engineering"&gt;prompt-engineering&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/generative-ai"&gt;generative-ai&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/llms"&gt;llms&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/skills"&gt;skills&lt;/a&gt;&lt;/p&gt;



</summary><category term="37-signals"/><category term="ai"/><category term="prompt-engineering"/><category term="generative-ai"/><category term="llms"/><category term="skills"/></entry><entry><title>What's New in Ruby on Rails 8</title><link href="https://simonwillison.net/2024/Oct/7/whats-new-in-ruby-on-rails-8/#atom-tag" rel="alternate"/><published>2024-10-07T19:17:47+00:00</published><updated>2024-10-07T19:17:47+00:00</updated><id>https://simonwillison.net/2024/Oct/7/whats-new-in-ruby-on-rails-8/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://blog.appsignal.com/2024/10/07/whats-new-in-ruby-on-rails-8.html"&gt;What&amp;#x27;s New in Ruby on Rails 8&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Rails 8 takes SQLite from a lightweight development tool to a reliable choice for production use, thanks to extensive work on the SQLite adapter and Ruby driver.&lt;/p&gt;
&lt;p&gt;With the introduction of the solid adapters discussed above, SQLite now has the capability to power Action Cable, Rails.cache, and Active Job effectively, expanding its role beyond just prototyping or testing environments. [...]&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Transactions default to &lt;code&gt;IMMEDIATE&lt;/code&gt; mode to improve concurrency.&lt;/li&gt;
&lt;/ul&gt;
&lt;/blockquote&gt;
&lt;p&gt;Also included in Rails 8: &lt;a href="https://kamal-deploy.org/"&gt;Kamal&lt;/a&gt;, a new automated deployment system by 37signals for self-hosting web applications on hardware or virtual servers:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Kamal basically is Capistrano for Containers, without the need to carefully prepare servers in advance. No need to ensure that the servers have just the right version of Ruby or other dependencies you need. That all lives in the Docker image now. You can boot a brand new Ubuntu (or whatever) server, add it to the list of servers in Kamal, and it’ll be auto-provisioned with Docker, and run right away.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;More from the &lt;a href="https://rubyonrails.org/2024/9/27/rails-8-beta1-no-paas-required"&gt;official blog post about the release&lt;/a&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;At 37signals, we're building a growing suite of apps that use SQLite in production with &lt;a href="https://once.com/"&gt;ONCE&lt;/a&gt;. There are now thousands of installations of both &lt;a href="https://once.com/campfire"&gt;Campfire&lt;/a&gt; and &lt;a href="https://once.com/writebook"&gt;Writebook&lt;/a&gt; running in the wild that all run SQLite. This has meant a lot of real-world pressure on ensuring that Rails (and Ruby) is working that wonderful file-based database as well as it can be. Through proper defaults like WAL and IMMEDIATE mode. Special thanks to Stephen Margheim for &lt;a href="https://github.com/rails/rails/pulls?q=is%3Apr+author%3Afractaledmind"&gt;a slew of such improvements&lt;/a&gt; and Mike Dalessio for &lt;a href="https://github.com/sparklemotion/SQLite3-ruby/pull/558"&gt;solving a last-minute SQLite file corruption issue&lt;/a&gt; in the Ruby driver.&lt;/p&gt;
&lt;/blockquote&gt;

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="https://news.ycombinator.com/item?id=41766515"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/37-signals"&gt;37-signals&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rails"&gt;rails&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ruby"&gt;ruby&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sqlite"&gt;sqlite&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/docker"&gt;docker&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/sqlite-busy"&gt;sqlite-busy&lt;/a&gt;&lt;/p&gt;



</summary><category term="37-signals"/><category term="rails"/><category term="ruby"/><category term="sqlite"/><category term="docker"/><category term="sqlite-busy"/></entry><entry><title>MRSK</title><link href="https://simonwillison.net/2023/Apr/29/mrsk/#atom-tag" rel="alternate"/><published>2023-04-29T23:54:40+00:00</published><updated>2023-04-29T23:54:40+00:00</updated><id>https://simonwillison.net/2023/Apr/29/mrsk/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="https://mrsk.dev/"&gt;MRSK&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
A new open source web application deployment tool from 37signals, developed to help migrate their Hey webmail app out of the cloud and onto their own managed hardware. The key feature is one that I care about deeply: it enables zero-downtime deploys by running all traffic through a Traefik reverse proxy in a way that allows requests to be paused while a new deployment is going out—so end users get a few seconds delay on their HTTP requests before being served by the replaced application.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/37-signals"&gt;37-signals&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/deployment"&gt;deployment&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ops"&gt;ops&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/zero-downtime"&gt;zero-downtime&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/traefik"&gt;traefik&lt;/a&gt;&lt;/p&gt;



</summary><category term="37-signals"/><category term="deployment"/><category term="ops"/><category term="zero-downtime"/><category term="traefik"/></entry><entry><title>What are prominent examples for remote work besides 37Signals, Github and Automattic?</title><link href="https://simonwillison.net/2013/Oct/21/what-are-prominent-examples/#atom-tag" rel="alternate"/><published>2013-10-21T11:08:00+00:00</published><updated>2013-10-21T11:08:00+00:00</updated><id>https://simonwillison.net/2013/Oct/21/what-are-prominent-examples/#atom-tag</id><summary type="html">
    &lt;p&gt;&lt;em&gt;My answer to &lt;a href="https://www.quora.com/What-are-prominent-examples-for-remote-work-besides-37Signals-Github-and-Automattic/answer/Simon-Willison"&gt;What are prominent examples for remote work besides 37Signals, Github and Automattic?&lt;/a&gt; on Quora&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Canonical (the company behind Ubuntu) have a very impressive distributed team culture.&lt;/p&gt;
    
        &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/37-signals"&gt;37-signals&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/github"&gt;github&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wordpress"&gt;wordpress&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/quora"&gt;quora&lt;/a&gt;&lt;/p&gt;
    

</summary><category term="37-signals"/><category term="github"/><category term="wordpress"/><category term="quora"/></entry><entry><title>37signals Product Blog: We'll be retiring our support of OpenID on May 1</title><link href="https://simonwillison.net/2011/Jan/25/signals/#atom-tag" rel="alternate"/><published>2011-01-25T16:17:00+00:00</published><updated>2011-01-25T16:17:00+00:00</updated><id>https://simonwillison.net/2011/Jan/25/signals/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://productblog.37signals.com/products/2011/01/well-be-retiring-our-support-of-openid-on-may-1.html"&gt;37signals Product Blog: We&amp;#x27;ll be retiring our support of OpenID on May 1&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
The support costs far outweighed the benefits to customers, especially now that 37signals have their own single sign in mechanism that works across all of their products.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/37-signals"&gt;37-signals&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openid"&gt;openid&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/recovered"&gt;recovered&lt;/a&gt;&lt;/p&gt;



</summary><category term="37-signals"/><category term="openid"/><category term="recovered"/></entry><entry><title>Phasing out support for IE 6 across all 37signals products on August 15, 2008</title><link href="https://simonwillison.net/2008/Jul/4/signals/#atom-tag" rel="alternate"/><published>2008-07-04T09:17:53+00:00</published><updated>2008-07-04T09:17:53+00:00</updated><id>https://simonwillison.net/2008/Jul/4/signals/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://37signals.blogs.com/products/2008/07/basecamp-phasin.html"&gt;Phasing out support for IE 6 across all 37signals products on August 15, 2008&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Interesting move considering BaseCamp is used for communicating with (often corporate) clients. It would be nice to see the browser stats behind the decision.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/37-signals"&gt;37-signals&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/basecamp"&gt;basecamp&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/browsersupport"&gt;browsersupport&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/ie6"&gt;ie6&lt;/a&gt;&lt;/p&gt;



</summary><category term="37-signals"/><category term="basecamp"/><category term="browsersupport"/><category term="ie6"/></entry><entry><title>BUG: XSS Security flaw in BaseCamp Messages</title><link href="https://simonwillison.net/2008/Jun/26/bug/#atom-tag" rel="alternate"/><published>2008-06-26T09:39:20+00:00</published><updated>2008-06-26T09:39:20+00:00</updated><id>https://simonwillison.net/2008/Jun/26/bug/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://forum.37signals.com/basecamp/forums/5/topics/3155"&gt;BUG: XSS Security flaw in BaseCamp Messages&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
BaseCamp lets users include HTML and JavaScript in messages, on the basis that anyone with a BaseCamp account is a trusted party. I’m not convinced: you could use this to circumvent BaseCamp’s access control stuff and read messages you’re not meant to. On the flip side, you could also use this to add brand new features to BaseCamp by using JavaScript in a message as a server-side equivalent to Greasemonkey.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://news.ycombinator.com/item?id=228347"&gt;Hacker News&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/37-signals"&gt;37-signals&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/basecamp"&gt;basecamp&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/greasemonkey"&gt;greasemonkey&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/javascript"&gt;javascript&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/security"&gt;security&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/xss"&gt;xss&lt;/a&gt;&lt;/p&gt;



</summary><category term="37-signals"/><category term="basecamp"/><category term="greasemonkey"/><category term="javascript"/><category term="security"/><category term="xss"/></entry><entry><title>How not to apply for a job</title><link href="https://simonwillison.net/2008/Jun/17/not/#atom-tag" rel="alternate"/><published>2008-06-17T08:22:44+00:00</published><updated>2008-06-17T08:22:44+00:00</updated><id>https://simonwillison.net/2008/Jun/17/not/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.37signals.com/svn/posts/1088-how-not-to-apply-for-a-job"&gt;How not to apply for a job&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Quite reasonably, 37signals care if job applicants get their wordmark right. Having worked for Yahoo! I know how important that ! is. What really winds me up is companies that aren’t consistent with name capitalisation across their own sites—many startups are guilty of this.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/37-signals"&gt;37-signals&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/jobs"&gt;jobs&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/spelling"&gt;spelling&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/wordmark"&gt;wordmark&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/yahoo"&gt;yahoo&lt;/a&gt;&lt;/p&gt;



</summary><category term="37-signals"/><category term="jobs"/><category term="spelling"/><category term="wordmark"/><category term="yahoo"/></entry><entry><title>OpenID support in Blinksale</title><link href="https://simonwillison.net/2007/Jul/10/blinksale/#atom-tag" rel="alternate"/><published>2007-07-10T07:45:44+00:00</published><updated>2007-07-10T07:45:44+00:00</updated><id>https://simonwillison.net/2007/Jul/10/blinksale/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.blinksale.com/blog/praise_props/102-openid"&gt;OpenID support in Blinksale&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Blinksale + Highrise + Basecamp means you can run your small business on OpenID.

    &lt;p&gt;&lt;small&gt;&lt;/small&gt;Via &lt;a href="http://factoryjoe.com/blog/2007/07/09/openid-is-for-small-business/"&gt;Chris Messina&lt;/a&gt;&lt;/small&gt;&lt;/p&gt;


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/37-signals"&gt;37-signals&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/basecamp"&gt;basecamp&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/blinksale"&gt;blinksale&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/chris-messina"&gt;chris-messina&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/highrise"&gt;highrise&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openid"&gt;openid&lt;/a&gt;&lt;/p&gt;



</summary><category term="37-signals"/><category term="basecamp"/><category term="blinksale"/><category term="chris-messina"/><category term="highrise"/><category term="openid"/></entry><entry><title>OpenID: Why, how, 37signals</title><link href="https://simonwillison.net/2007/Jun/28/openid/#atom-tag" rel="alternate"/><published>2007-06-28T01:38:22+00:00</published><updated>2007-06-28T01:38:22+00:00</updated><id>https://simonwillison.net/2007/Jun/28/openid/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.37signals.com/openid/"&gt;OpenID: Why, how, 37signals&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
37signals just enabled OpenID on Basecamp as well as Highrise. This is their excellent attempt at explaining its benefits.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/37-signals"&gt;37-signals&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/basecamp"&gt;basecamp&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/highrise"&gt;highrise&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openid"&gt;openid&lt;/a&gt;&lt;/p&gt;



</summary><category term="37-signals"/><category term="basecamp"/><category term="highrise"/><category term="openid"/></entry><entry><title>Highrise: Early stats, Cases for all, the new Solo plan, and more disk space!</title><link href="https://simonwillison.net/2007/Mar/23/highrise/#atom-tag" rel="alternate"/><published>2007-03-23T01:44:09+00:00</published><updated>2007-03-23T01:44:09+00:00</updated><id>https://simonwillison.net/2007/Mar/23/highrise/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.37signals.com/svn/posts/332-highrise-early-stats-cases-for-all-the-new-solo-plan-and-more-disk-space"&gt;Highrise: Early stats, Cases for all, the new Solo plan, and more disk space!&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
9% of signups came in through OpenID, and they’ve opened up cases to everyone fixing my number one complaint about the service. Great job!


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/37-signals"&gt;37-signals&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/highise"&gt;highise&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openid"&gt;openid&lt;/a&gt;&lt;/p&gt;



</summary><category term="37-signals"/><category term="highise"/><category term="openid"/></entry><entry><title>Highrise</title><link href="https://simonwillison.net/2007/Mar/19/highrise/#atom-tag" rel="alternate"/><published>2007-03-19T22:39:05+00:00</published><updated>2007-03-19T22:39:05+00:00</updated><id>https://simonwillison.net/2007/Mar/19/highrise/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.highrisehq.com/"&gt;Highrise&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
The new online contact manager from 37signals—exactly the tool I need for managing my freelancing, and it even accepts OpenID.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/37-signals"&gt;37-signals&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/highrise"&gt;highrise&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openid"&gt;openid&lt;/a&gt;&lt;/p&gt;



</summary><category term="37-signals"/><category term="highrise"/><category term="openid"/></entry><entry><title>37 Signals' next app Highrise will support OpenID</title><link href="https://simonwillison.net/2007/Mar/7/signals/#atom-tag" rel="alternate"/><published>2007-03-07T09:23:20+00:00</published><updated>2007-03-07T09:23:20+00:00</updated><id>https://simonwillison.net/2007/Mar/7/signals/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://factoryjoe.com/blog/2007/03/06/37-signals-next-app-highrise-will-support-openid/"&gt;37 Signals&amp;#x27; next app Highrise will support OpenID&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
I can’t wait to see how the 37 Signals team deal with the UI challenges involved in supporting OpenID logins.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/37-signals"&gt;37-signals&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/highrise"&gt;highrise&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/openid"&gt;openid&lt;/a&gt;&lt;/p&gt;



</summary><category term="37-signals"/><category term="highrise"/><category term="openid"/></entry><entry><title>punupgeek.com on Active Resource</title><link href="https://simonwillison.net/2006/Jun/26/punupgeekcom/#atom-tag" rel="alternate"/><published>2006-06-26T11:12:05+00:00</published><updated>2006-06-26T11:12:05+00:00</updated><id>https://simonwillison.net/2006/Jun/26/punupgeekcom/#atom-tag</id><summary type="html">
    
&lt;p&gt;&lt;strong&gt;&lt;a href="http://www.pinupgeek.com/articles/2006/06/25/railsconf-2006"&gt;punupgeek.com on Active Resource&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
Looks like 37 signals might be looking in to scaling across multiple servers using web services.


    &lt;p&gt;Tags: &lt;a href="https://simonwillison.net/tags/37-signals"&gt;37-signals&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/activeresource"&gt;activeresource&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/rails"&gt;rails&lt;/a&gt;, &lt;a href="https://simonwillison.net/tags/scaling"&gt;scaling&lt;/a&gt;&lt;/p&gt;



</summary><category term="37-signals"/><category term="activeresource"/><category term="rails"/><category term="scaling"/></entry></feed>