Chronological feed of everything captured from Tobi Lütke.
tweet / tobi / Mar 20
Tobi Lütke, CEO of Shopify, suggests that the aesthetic of Art Deco, exemplified by the Hoover Dam, could be revitalized in modern public projects. He posits that advancements in robotics could significantly reduce the cost of implementing such intricate designs, thereby making them economically viable again. This perspective implies a future where advanced automation enables a return to historically elaborate architectural styles in infrastructure.
art-decoroboticsautomationpublic-worksdesign
“Art Deco design can be made affordable again through robotics.”
tweet / tobi / Mar 19
AI is increasingly being applied reflexively, suggesting a growing trend towards its use as a first-resort solution. This reflexive application, even when it involves taking "shortcuts" that degrade initial quality, can quickly yield significant performance improvements and generate novel, valuable ideas through iterative refinement. This indicates a strong potential for AI to act as a rapid optimization and ideation tool in engineering contexts.
ai-developmentllm-applicationscode-optimizationsoftware-engineeringai-tools
“People are reflexively adopting AI solutions.”
github_readme / tobi / Mar 19
LiquidIL is a high-performance Liquid template engine that compiles templates to optimized Ruby via an Intermediate Language (IL). This approach significantly enhances performance by avoiding interpretation, leveraging multi-level compilation (Liquid → Ruby → native machine code via YJIT), and applying extensive compile-time and runtime optimizations like constant folding, dead code elimination, and zero-allocation hot paths. The core innovation lies in transforming Liquid templates into YJIT-friendly Ruby with native control flow, thereby eliminating interpreter overhead and enabling effective machine code generation.
rubytemplate-engineperformance-optimizationcompilersliquidcode-generationlow-level-optimization
“LiquidIL compiles Liquid templates directly to optimized Ruby code, rather than interpreting them.”
github_readme / tobi / Mar 18
Amux is a wrapper around tmux that enables persistent, named panels for running commands in the background, specifically designed for AI agents. It provides a robust run-and-tail workflow with byte-offset continuation, ensuring no output loss even with command timeouts. This architecture facilitates reliable execution and monitoring of long-running tasks within an agentic development environment by separating session management from the user's personal tmux.
tmuxcli-tooldeveloper-toolingai-agentsworkflow-automationshell-scripting
“Each project directory is assigned a unique Amux session, represented as a tmux window, automatically identified by the presence of a .git repository.”
tweet / tobi / Mar 12
Tobi Lütke, CEO of Shopify, suggests that AI developers should prioritize optimizing their models for Apple M1/M2 architectures with 8GB of unified memory. This implies a need for efficient model design or quantization techniques to run effectively on these resource-constrained but increasingly popular local devices. The advice points towards an opportunity for AI to become more accessible and less reliant on cloud infrastructure.
m1-macm2-macllm-inferenceedge-device-aillm-optimizationentropic-ai
“AI systems need to be optimized for Apple M1/M2 chips with 8GB of memory.”
tweet / tobi / Mar 10
qmd 2.0 transitions the project to a library-first architecture with a stable interface to simplify integration. By refactoring the CLI, MCP, and HTTP interfaces to depend on this core library, the project reduces redundancy and simplifies the overall codebase.
qmd-librarysoftware-releasedeveloper-toolsapi-integrationcli-tools
“qmd 2.0 has been released.”
github_readme / tobi / Mar 10
Try is a command-line interface tool that streamlines the organization and navigation of experimental development directories. It addresses the common problem of scattered, unmanaged temporary projects by providing a centralized system with fuzzy search, smart sorting based on recency, and automatic date-prefixed directory creation. It is implemented as a single Ruby file with no external dependencies.
developer-toolscli-toolproductivityrubygit-workflowfuzzymatchingproject-management
“Try provides a centralized and organized system for managing experimental development directories.”
tweet / tobi / Mar 9
There is an emerging demand for "OpenClaw" solutions from non-technical users, indicating a potential market expansion beyond the traditional tech demographic. Current methods of deployment, such as virtual machines, are proving cumbersome, suggesting a need for more scalable and user-friendly alternatives like multi-tenant setups or alternative "Claw" technologies. This highlights a gap in current offerings for broader, less technical adoption.
multi-tenancycloud-infrastructurellm-deploymentopen-source-llmpersonal-ai
“There is demand for 'OpenClaw' solutions from non-technical individuals.”
tweet / tobi / Mar 8
An autonomous AI agent, leveraging a self-contained research project similar to Andrej Karpathy's "autoresearch" concept, successfully optimized a query-expansion model. It achieved a 19% score improvement on a 0.8B parameter model in 8 hours and 37 experiments, outperforming a previous 1.6B parameter model. This demonstrates the potential for AI agents to accelerate machine learning research and development by autonomously iterating on training code and hyperparameters.
llm-trainingai-agentsauto-mlhyperparameter-optimizationllm-research
“An AI agent improved a 0.8 billion parameter query-expansion model's score by 19% in 8 hours.”
tweet / tobi / Mar 8
The QMD search tool has received a significant update, moving from version 1.0.6 to 1.1.5 in three weeks, incorporating over 20 community pull requests. Key improvements include advanced multi-line document querying for AI query expansion, an "intent" parameter for disambiguating search context across five stages (expansion, reranking, chunk selection, snippets), and performance optimizations such as GPU initialization and reranking deduplication. These enhancements streamline AI-driven information retrieval and improve search accuracy.
qmd-updatesearch-engineai-toolstypescriptopen-sourcedeveloper-tools
“QMD now supports multi-line document queries, allowing AI to perform query expansion before calling QMD.”
tweet / tobi / Mar 2
QMD, a local semantic search engine developed by Tobi Lütke, addresses the challenge of maintaining context and memory in AI coding sessions, particularly with tools like Claude Code. By indexing Obsidian vaults, QMD enables efficient and relevant information retrieval, overcoming the limitations of traditional grep-based searches and improving token efficiency. This integration allows AI models to access and utilize a developer's full context from the outset of a session, significantly enhancing productivity and decision recall.
qmdsemantic-searchai-codingobsidianknowledge-managementclaude-codedeveloper-tools
“AI coding assistants like Claude Code often "start from zero" in each new session, leading to a loss of context and decision history.”
tweet / tobi / Feb 16
Company leadership is reframed as internal context engineering, a skill increasingly vital with the rise of agentic AI. Early tech founders, accustomed to this operational paradigm, are well-positioned for this shift.
leadershipcompany-buildingfounder-mindsetcontext-engineeringai-adoptionagentic-systems
“Running a company is fundamentally about internal context engineering.”
github_readme / tobi / Feb 13
Onix provides a solution for creating hermetic Ruby gem builds by integrating Bundler's dependency resolution with Nix's hermetic build capabilities. It processes a Gemfile.lock to generate Nix derivations, enabling reproducible and cacheable builds for Ruby projects. The tool emphasizes the use of system libraries from nixpkgs and content-addressed store paths for efficient caching and parallel builds.
rubynixdevopspackage-managementhermetic-buildsgemfile
“Onix integrates Bundler's dependency resolution with Nix's hermetic build features.”
github_readme / tobi / Feb 11
try-cli is a command-line utility written in C that provides an organized yet flexible way to manage experimental project directories. It addresses the common issue of scattered "test" directories by centralizing them into a single, searchable location. The tool features fuzzy search, smart sorting based on recent usage, automatic date-prefixed directory creation, and git repository cloning, all within a native, dependency-free binary for high performance.
developer-toolcli-toolfuzzy-searchc-programmingexperiment-managementproductivitygit-integration
“try-cli is a C implementation of the original 'try' tool, focused on speed and zero dependencies.”
github_readme / tobi / Dec 29
The Audio Priority Bar is a native macOS application designed to automate audio device switching based on user-defined priorities. It streamlines the management of speakers, headphones, and microphones by enabling automatic transitions to higher-priority connected devices while offering manual override capabilities and remembering previously connected devices. The application integrates directly into the macOS menu bar, providing quick access to volume control and mode switching.
macos-appaudio-managementmenu-bar-appswiftcoreaudioopen-source-software
“Audio Priority Bar is a native macOS menu bar application.”
youtube / tobi / Dec 11
Tobi Lütke, co-founder and CEO of Shopify, discusses the platform's role in democratizing entrepreneurship by simplifying online business creation. He highlights the philosophical underpinnings of Shopify, emphasizing entrepreneurship as a virtuous cycle of self-expression and value creation. Lütke also shares his optimistic perspective on AI, viewing it as a powerful tool that will further empower individuals and small businesses, making entrepreneurship more accessible than ever before.
entrepreneurshipe-commerceshopifystartup-cultureleadershipai-impactsmall-business
“Shopify democratizes entrepreneurship by significantly reducing the technical and financial barriers to starting an online business.”
youtube / tobi / Sep 18 / failed
youtube / tobi / Mar 21
Tobi Lütke, CEO of Shopify, discusses his unique approach to business, emphasizing continuous learning, challenging assumptions, and solving fundamental problems. He highlights the importance of fostering an entrepreneurial spirit and a growth mindset within his company, even in the face of significant challenges. Lütke advocates for stripping away inefficiencies and focusing on core value creation, drawing from his personal experiences and the evolution of Shopify.
entrepreneurshipleadershipoptimizationgrowth-mindsetshopifybusiness-strategy
“Tobi Lütke views business as an engineering exercise, allowing him to approach challenges, such as becoming a CEO, with a structured and analytical mindset.”
github_gist / tobi / Mar 25
Tobi Lütke claims identity linkage between GitHub username 'tobi' and Keybase profile 'tobi' using a PGP-signed proof object. The proof includes key fingerprint 7D83 588B B379 6236 C5E1 E2FB 05AC 86DA DD36 CAA2, a JSON body specifying the web service binding, and an embedded PGP signature verifiable on keybase.io. Ownership is demonstrated by publishing the signed gist on GitHub, enabling public auditability via Keybase CLI tools.
keybase-proofidentity-verificationpgp-signaturegithub-gisttobi-lutkecryptographic-proofpublic-key
“GitHub user 'tobi' owns Keybase identity 'tobi'”
github_gist / tobi / Dec 24
Benchmark by Shopify CTO Tobi Lütke compares Ruby method calls with positional arguments, keyword arguments, and hash arguments over 1 million iterations. Positional arguments complete in 0.176s real time, hash arguments in 0.795s, and keyword arguments in 1.677s. Keyword syntax imposes the highest performance penalty, exceeding even explicit hash unpacking.
ruby-benchmarkkeyword-argumentsperformance-comparisontobi-lutkeshopifyprogramming-benchmark
“Ruby positional argument method call takes 0.176s real time for 1,000,000 iterations”
github_gist / tobi / Jul 31
Tobi Lütke's 2012 Gist demonstrates a scanning error in Go's database/sql with the go-mysql-driver when querying a MySQL DATETIME column into a time.Time variable. The driver returns []uint8 instead of a scannable time.Time, causing "unsupported Scan pair" error. This highlights early limitations in Go MySQL driver type conversion for temporal data.
go-programmingmysqldatabase-errordatetime-parsingsql-scantobi-lutkegolang-mysql
“go-mysql-driver returns []uint8 for MySQL DATETIME columns when scanning into *time.Time”
github_gist / tobi / Mar 22
Forever is a lightweight Ruby class that schedules recurring tasks via Thread.new loops checking elapsed time against a timespan, executing blocks only when due. It supports multiple independent timers through an array of threads and blocks on all joins in run() until an external INT signal sets $done. Handles clean shutdown via global trap("INT") { $done = true }, with 1-second sleep granularity for low CPU usage.
ruby-programmingbackground-jobsthreadingtobi-lutkeshopify-codeperiodic-tasksdaemon-script
“Forever class schedules periodic execution of blocks at intervals of at least the specified timespan”
github_gist / tobi / Jul 14
This CoffeeScript function generates start and end timestamps for common reporting periods like Yesterday, Last 7 days, This Week, Last Week, This Month, and Last Month. It resets the current date to midnight, computes boundaries using millisecond offsets for days, and derives month starts/ends by manipulating day-of-month offsets. The output is an object mapping period names to [start, end] timestamp arrays, enabling quick access to standardized timespans.
javascriptdate-rangesreporting-utilstobi-lutkegithub-gisttime-spans
“Resets current date to midnight by setting minutes, hours, and seconds to 0”
github_gist / tobi / Jul 9
Provides a concise JavaScript implementation of JSONP using dynamic script element insertion to bypass same-origin policy for cross-domain API calls. Generates unique callback names, appends them to the request URL, defines global callback handlers that process responses and self-cleanup, then fetches and logs recent tweets from Twitter. Demonstrates practical usage with Twitter's user_timeline endpoint returning JSON arrays processed via forEach.
jsonpjavascriptweb-developmentdynamic-scriptingtwitter-apicode-snippet
“Generates unique callback function names using random hexadecimal strings”
github_gist / tobi / Apr 9
In JavaScript, functions created inside a for loop share the same lexical scope for the loop variable `c`, so all closures reference its final value rather than individual iterations. This behavior occurs because JavaScript has function-level scope, not block-level, causing unexpected outputs when invoking the functions. Fixes include using `forEach`, `map`, or shadowing the variable inside each closure with `var c = ary[i]`, though traditional loops may be faster for performance-critical code.
javascriptvariable-scopeclosuresfor-loopfunctional-programmingruby-comparison
“All three functions log 'c' because they share the same `c` variable reference, which holds the final value after the loop.”
github_gist / tobi / Mar 6
Tobi Lütke prototypes a lightweight stats server using Redis for Shopify, aggregating metrics like hits, visits, and traffic in time-based keys from year down to hour granularity per shop. The incr method supports counters across hierarchies and optional set collections for unique items like referrers or search terms. Usage tracks request objects, new sessions, and categorizes traffic sources via a mock Request object.
redisrubyshopifyweb-analyticsstats-trackingecommerce-techbackend-engineering
“Stats are incremented in four hierarchical Redis keys: year/shop/term, year/month/shop/term, year/month/day/shop/term, and year/month/day/hour/shop/term”
github_gist / tobi / Jan 27
Tobi Lütke published a minimal Ruby class, SmartMta, leveraging HTTParty to interact with SmartMTA's SendLabs REST API. The sole method, add_sender, posts an email address to the /senders endpoint using an API key for authentication. It raises an error unless the API returns 'OK', enforcing strict success validation.
ruby-codehttpartyemail-sendingapi-wrappergithub-gisttobi-lutkesmartmta
“SmartMta class uses HTTParty and targets base_uri 'http://smartmta.sendlabs.com/rest/json'”
github_gist / tobi / Dec 29
Tobi Lütke's GitHub Gist provides a Ruby module extending ActiveMerchant with PaypalExpressRecurringNvGateway for handling recurring payments using PayPal's Express Checkout NVP API. It supports key operations like setting up billing agreements, creating/managing recurring profiles, updating details, and billing outstanding amounts with options for trials, shipping, taxes, and failure handling. The implementation leverages PaypalNvCommonAPI and includes both live and sandbox redirect URLs for seamless integration into Rails applications.
active-merchantpaypal-expressrecurring-paymentsruby-on-railsbilling-integrationtobi-lutke
“The gateway supports setup of customer billing agreements via 'SetCustomerBillingAgreement' API call”
github_gist / tobi / Dec 28
Tobi Lütke's GitHub Gist captures a failing RSpec test in money_spec.rb for the Money gem's allocate method. The test expects Money.ca_dollar(0.05).allocate([1]) to return [Money.ca_dollar(0.05)], verifying currency preservation across interest parties. Failure stems from a private method `pretty_print` invoked on an RSpec::Mocks::ErrorGenerator instance, likely during inspection or output formatting.
rspecrubymoney-gemtest-failureunicode-issuegithub-gisttobi-lutke
“The Money gem's allocate method test fails when allocating 0.05 CAD to a single proportion [1]”
github_gist / tobi / Nov 3
In REE 1.8.7, requiring 'json' allows Time.now.to_json to produce a string representation, which JSON.parse deserializes back to String rather than Time. Loading the 'json/add/core' mixin afterward fixes deserialization to restore Time objects. This reveals JSON's core extensions for native types like Time are not automatically included on initial require.
rubyjsontime-parsingreeserializationunicode-warning
“JSON.parse([Time.now].to_json)[0] returns String after requiring only 'json' in REE-1.8.7-2010.02”
github_gist / tobi / Aug 3
Tobi Lütke's Gist presents a compact, self-contained JavaScript test runner that executes in a browser environment. It defines a TestCase constructor that iterates over an object of test functions, invoking assertions like assertEqual and assertNotEqual, which track success and failure counts via console and document output. The example demonstrates one passing and one failing test, printing real-time progress dots and 'f's before a final summary.
javascripttesting-frameworktest-runnerunit-testingtobi-lutkegithub-gist
“TestCase constructor processes an object of test methods by calling each as a function on its instance”
github_gist / tobi / Jun 30
This Ruby on Rails controller action fetches paginated products for a shop using dynamic includes and conditions from params. It computes total count separately for pagination, applies fixed sorting by title and vendor, and preloads associations like images, variants, and options based on response format. Supports HTML (with vendors/types), XML, JSON, and CSV exports, demonstrating efficient querying and format-specific optimizations in pre-ActiveRecord 3 era.
ruby-on-railsshopifyecommerceproducts-controllerpaginationactive-recordcode-snippet
“Product count query uses separate :include and :conditions for efficiency”
github_gist / tobi / Jun 30
Tobi Lütke's accelerate.rb defines an accelerated_belongs_to method that dynamically generates an optimized belongs_to association for Rails models. It requires the associated class to implement a 'current' class method, then aliases the original association and redefines it to return the cached 'current' instance if its ID matches the foreign key, avoiding redundant database queries. This pattern accelerates frequent lookups of the "current" related record, such as the active shop or user in a session.
ruby-programmingrails-activerecordperformance-optimizationtobi-lutkeshopify-codebelongs-to-associationmemoization-pattern
“The associated class must implement a 'current' class method for accelerated_belongs_to to function.”