{"id":26087,"date":"2019-07-26T17:26:10","date_gmt":"2019-07-26T21:26:10","guid":{"rendered":"https:\/\/mjtsai.com\/blog\/?p=26087"},"modified":"2026-01-24T09:22:03","modified_gmt":"2026-01-24T14:22:03","slug":"fast-software-the-best-software","status":"publish","type":"post","link":"https:\/\/mjtsai.com\/blog\/2019\/07\/26\/fast-software-the-best-software\/","title":{"rendered":"Fast Software, the Best Software"},"content":{"rendered":"<p><a href=\"https:\/\/craigmod.com\/essays\/fast_software\/\">Craig Mod<\/a>:<\/p>\n<blockquote cite=\"https:\/\/craigmod.com\/essays\/fast_software\/\">\n<p>Speed in software is probably the most valuable, least valued asset. To me, speedy software is the difference between an application smoothly integrating into your life, and one called upon with great reluctance. Fastness in software is like great margins in a book &mdash; makes you smile without necessarily knowing why.<\/p>\n<p>[&#8230;]<\/p>\n<p>That said, Sublime Text has &mdash; in my experience &mdash; only gotten faster. I love software that does this: Software that unbloats over time. This should be the goal of all software. The longer it&rsquo;s around, the more elegant it should become. Smooth over like a river stone.<\/p>\n<p>[&#8230;]<\/p>\n<p>Similarly, I started using Lightroom around 2007 because it was so much faster than Apple&rsquo;s Aperture. But Aperture is gone and Lightroom has not smoothed out over the years. Lightroom is a gangly blob, with lots of dull, slow edges. Why can&rsquo;t it get faster?<\/p>\n<\/blockquote>\n\n<p>Lightroom <em>is<\/em> getting faster, in places, but overall it still feels really slow.<\/p>\n\n<p>Via <a href=\"https:\/\/daringfireball.net\/linked\/2019\/07\/26\/mod-fast-software\">John Gruber<\/a> (<a href=\"https:\/\/twitter.com\/daringfireball\/status\/1154823708931952640\">tweet<\/a>):<\/p>\n<blockquote cite=\"https:\/\/daringfireball.net\/linked\/2019\/07\/26\/mod-fast-software\">\n<p>One of the confounding aspects of software today is that our computers are literally hundreds&#x2009;&mdash;&#x2009;maybe even a thousand&#x2009;&mdash;&#x2009;times faster than the ones we used 20 years ago, but some simple tasks take longer now than they did then. Opening the Web Export dialog in Photoshop, for example.<\/p>\n<\/blockquote>\n\n<p>macOS save dialogs seem slow in general these days.<\/p>\n\n<p><a href=\"https:\/\/inessential.com\/2019\/07\/26\/a_couple_handy_tricks_for_text_measureme\">Brent Simmons<\/a>:<\/p>\n<blockquote cite=\"https:\/\/inessential.com\/2019\/07\/26\/a_couple_handy_tricks_for_text_measureme\">\n<p>If, on the third call, the width is 150 &mdash; between 100 and 200 &mdash; and the cached height for 100 and 200 are equal, then the height for 150 is necessarily that same height. We can avoid text measurement and just return the cached value. (And we keep the cache from growing on each call.)<\/p>\n<p>[&#8230;]<\/p>\n<p>Note: this is all because I don&rsquo;t use Auto Layout on table cell views, for performance reasons. I use Auto Layout everywhere else &mdash; just not on table cell views.<\/p>\n<\/blockquote>\n\n<p id=\"fast-software-the-best-software-update-2019-07-29\">Update (2019-07-29): <a href=\"https:\/\/inessential.com\/2019\/07\/26\/a_third_text_measurement_caching_trick\">Brent Simmons<\/a>:<\/p>\n<blockquote cite=\"https:\/\/inessential.com\/2019\/07\/26\/a_third_text_measurement_caching_trick\">\n<p>Use a truncated version of the text rather than the entire text. For the truncation limit, come up with a length that is beyond what could conceivably fit in the space.<\/p>\n<p>This way text measurement will be faster since it&rsquo;s measuring less text.<\/p>\n<\/blockquote>\n\n<p id=\"fast-software-the-best-software-update-2019-08-01\">Update (2019-08-01): <a href=\"https:\/\/myfreakinname.blogspot.com\/2019\/07\/break-the-trend-write-truly-performant-software.html\">Ruffin Bailey<\/a>:<\/p>\n<blockquote cite=\"https:\/\/myfreakinname.blogspot.com\/2019\/07\/break-the-trend-write-truly-performant-software.html\">\n<p>I think this is a lot of why software runs slowly. And it&rsquo;s not simply that devs use better hardware, it&rsquo;s that the difference between great hardware and bottom of the line &#x2013; all the way down to below-TracFone-level Android phones in third world nations &#x2013; is <em>much<\/em> greater than we (as devs) ever anticipate as we code and develop.<\/p>\n<p>Unless devs develop and test on representative hardware, they&rsquo;ll never truly value their app&rsquo;s performance.<\/p>\n<\/blockquote>\n\n<p><a href=\"https:\/\/www.markbernstein.org\/Jul19\/TheNeedForSpeedapartialdis.html\">Mark Bernstein<\/a>:<\/p>\n<blockquote cite=\"https:\/\/www.markbernstein.org\/Jul19\/TheNeedForSpeedapartialdis.html\">\n<p>First: some speed changes are illusions. Lots of things we do on today&rsquo;s computers <i>seem<\/i> slower than the corresponding operations we did ten or twenty years ago, but often that&rsquo;s because &ldquo;the same thing&rdquo; is thousands of times harder.  We assume elegant typography everywhere; that takes lots of work where we used to think the VT-100&rsquo;s monospaced fonts were elegant..  We want to open a document: where a folder back then might have a dozen documents on a disk with thousands, now the folder has a thousand documents and document-versions on a disk with millions.<\/p>\n<p>[&#8230;]<\/p>\n<p>Significantly, no new Tinderbox user and no sales prospect is likely to encounter a document this big: it takes times to make that many notes. We can&rsquo;t expect the speed bump to have much impact on sales. So, the cost of the speed improvement has to be born either by Eastgate or, through upgrades, by the Tinderbox community.<\/p>\n<p>[&#8230;]<\/p>\n<p>In my experience, between 30-50% of improvements like this one turn out to be illusions: they work for simple cases but overlook some edge case that either requires lots more engineering or that vitiates the whole thing.<\/p>\n<\/blockquote>","protected":false},"excerpt":{"rendered":"<p>Craig Mod: Speed in software is probably the most valuable, least valued asset. To me, speedy software is the difference between an application smoothly integrating into your life, and one called upon with great reluctance. Fastness in software is like great margins in a book &mdash; makes you smile without necessarily knowing why. [&#8230;] That [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"apple_news_api_created_at":"2019-07-26T21:26:13Z","apple_news_api_id":"fcc0a355-4920-4260-9196-7865fa1036a0","apple_news_api_modified_at":"2026-01-24T14:22:06Z","apple_news_api_revision":"AAAAAAAAAAAAAAAAAAAABQ==","apple_news_api_share_url":"https:\/\/apple.news\/A_MCjVUkgQmCRlnhl-hA2oA","apple_news_coverimage":0,"apple_news_coverimage_caption":"","apple_news_is_hidden":false,"apple_news_is_paid":false,"apple_news_is_preview":false,"apple_news_is_sponsored":false,"apple_news_maturity_rating":"","apple_news_metadata":"\"\"","apple_news_pullquote":"","apple_news_pullquote_position":"","apple_news_slug":"","apple_news_sections":"\"\"","apple_news_suppress_video_url":false,"apple_news_use_image_component":false,"footnotes":""},"categories":[2],"tags":[928,332,114,200,69,649,31,1667,30,32,1609,392,138,71,53,1845],"class_list":["post-26087","post","type-post","status-publish","format-standard","hentry","category-technology","tag-lightroom","tag-photoshop","tag-aperture","tag-autolayout","tag-cocoa","tag-esoteric-preferences","tag-ios","tag-ios-13","tag-mac","tag-macapp","tag-macos-10-14","tag-netnewswire","tag-optimization","tag-programming","tag-sandboxing","tag-sublime-text"],"apple_news_notices":[],"_links":{"self":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/26087","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/comments?post=26087"}],"version-history":[{"count":4,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/26087\/revisions"}],"predecessor-version":[{"id":26142,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/posts\/26087\/revisions\/26142"}],"wp:attachment":[{"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/media?parent=26087"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/categories?post=26087"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/mjtsai.com\/blog\/wp-json\/wp\/v2\/tags?post=26087"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}