TanStack Router gave us a useful precedent around the same time because it had its own state graph, its own adapters, and the same need to run well across React, Solid, and Vue. Its work on a store factory and native Solid primitives showed that the core could depend on a small shared shape while each adapter supplied the implementation that made sense for its framework.
- Last 7 days
-
tanstack.com tanstack.com
-
-
github.com github.com
-
Thank you for the additional clarification and for the considerable expenditure of explanatory effort represented by the preceding response. Before proceeding further with the underlying technical question, it may be useful to establish a more explicit shared understanding concerning the relationship between the quantity of information supplied, the extent to which that information is necessary for the immediate decision being made, and the finite amount of maintainer attention available for converting the supplied information into an actionable conclusion. For the avoidance of doubt, the concern being raised here is not that factual accuracy, reproducibility, technical precision, correction of earlier assertions, or sufficient evidentiary support are undesirable. Each of those properties is useful and may, under the appropriate circumstances, be necessary. The difficulty arises when the information required to establish the relevant fact is accompanied by additional explanation whose presence, although potentially interesting and perhaps even technically correct, does not materially alter the fact itself, the confidence with which that fact can be evaluated, or the action that follows from accepting it. Every response imposes what might be described as a comprehension obligation upon its recipients. That obligation consists not merely of reading the words presented, but also of determining which statements constitute factual claims, which function as evidence, which are qualifications, which are conjectures, which supersede earlier statements, which merely restate conclusions already established elsewhere, and which are included primarily to explain the circumstances under which some other statement came to be made. The cost of satisfying this obligation tends to increase with the length, density, and structural complexity of the response, even where the amount of information capable of changing the maintainer’s eventual decision remains constant. This consideration is particularly significant in the context of open-source maintenance, where the time required to read, classify, verify, and contextualize one response cannot simultaneously be used to reproduce another issue, review a pull request, investigate a regression, prepare a release, answer another contributor, evaluate a dependency update, improve documentation, or perform any of the numerous other activities competing for the same limited pool of attention. Consequently, verbosity is not entirely without cost merely because the information is supplied voluntarily, constructively, and with the intention of preventing misunderstanding. Its cost is transferred to each recipient who must determine which portions are operationally necessary and which portions can be disregarded without compromising the validity of the resulting conclusion. We would therefore ask that future responses be prepared according to something approximating a principle of minimum sufficient communication, by which a response contains the smallest collection of independently useful facts required to answer the question currently being asked or to establish the behavior currently under discussion. Information should not be included solely because it is adjacent to the subject, because it records the path by which a conclusion was reached, because it anticipates questions that have not yet been asked, because it exhaustively delineates the boundaries of claims whose ordinary interpretation is already sufficiently narrow, or because omitting it might leave some peripheral aspect of the subject less than comprehensively characterized. The use of the word “smallest” in this context should not be interpreted as a request for artificial abbreviation, unexplained assertions, incomplete reproduction instructions, or the omission of facts required to distinguish the reported behavior from another superficially similar behavior. It means, instead, that each sentence should justify the attention required to process it by contributing something without which a maintainer would be materially less able to verify the report or determine the appropriate next action. Where the removal of a sentence would leave the actionable meaning unchanged, that sentence should generally be presumed removable. Where several paragraphs can be replaced by a single concrete observation without sacrificing reproducibility, the concrete observation should be preferred. Where a mechanism can be demonstrated through a minimal configuration change and an immediately observable result, that demonstration should ordinarily take precedence over a comprehensive narrative describing the mechanism’s provenance, implications, surrounding implementation details, and hypothetical manifestations in configurations not yet tested. Qualifications should similarly be restricted to those that alter the reasonable interpretation of the principal claim. It is generally unnecessary to enumerate every proposition that is not being asserted, every environment that has not been tested, every alternative explanation that was considered and rejected, every inference that a sufficiently careful reader might otherwise draw, or every reason the author has for believing that an untested configuration may behave similarly. Where uncertainty is relevant, it is usually sufficient to identify the precise boundary of verification rather than narrating the broader epistemological status of all related propositions. One potentially useful standard for deciding whether information warrants inclusion is to ask whether the behavior that actually occurs, the smallest reliable procedure that causes it to occur, and any qualification without which those statements would become materially misleading remain understandable and reproducible after the information is removed. If they do, the removed material was probably not necessary for the immediate response. Background already available elsewhere in the issue, detailed explanations of standard language or bundler behavior, speculative generalizations beyond the verified reproducer, extended discussion of why an earlier reproducer was inadequate, descriptions of investigative paths that did not produce the final result, and multiple reformulations of the same conclusion at successively different levels of abstraction should normally be retained by the author unless and until a maintainer requests them. This request is not intended as a judgment concerning the effort, competence, thoroughness, or good faith involved in preparing the response. It concerns the format in which the result of that effort is presented. A technically correct response may nevertheless be disproportionately expensive to consume, in much the same way that a comprehensive diagnostic log may contain the relevant error while simultaneously making that error more difficult to locate. The objective is not to minimize the amount of investigation performed by the reporter, but to minimize the portion of that investigation which every subsequent reader must reconstruct before reaching the actionable result. We recognize that determining what is essential requires judgment and that contributors cannot invariably know in advance which detail a maintainer will consider relevant. In such circumstances, the preferred strategy is progressive disclosure, under which the shortest adequately supported factual answer is provided initially and further supporting detail is supplied only when a maintainer identifies a concrete need for it. It is substantially easier for a maintainer to request one missing fact than it is for multiple maintainers to independently identify and disregard several pages of facts that do not affect the decision being made. The appropriate optimization target is therefore not maximum completeness at the time of the first response, but minimum aggregate effort across all participants required to reach a sufficiently supported conclusion. A concise response that results in one targeted follow-up question may satisfy that target more effectively than an exhaustive response which attempts to preempt every conceivable follow-up but requires substantially greater processing time from every reader, including readers for whom most of the anticipated questions would never have arisen. Facts directly necessary to establish the reported behavior should be included. Evidence directly necessary to verify those facts should be included only to the extent that verification would otherwise be impractical or ambiguous. Context that may be interesting but does not change the facts, their verification, or the resulting action should be omitted unless specifically requested. Where several formulations communicate materially identical information, the shortest formulation should be selected. Where a direct statement is available, it should take precedence over a narrative account of how the statement was discovered. Where one verified claim is sufficient, it should not be surrounded by multiple hypothetical extensions. Where the answer to a question can be expressed as a concrete condition and an observable consequence, the response should ordinarily contain that condition and consequence without attempting to supply a general theory of every adjacent failure mode. It is also important to clarify that this does not mean providing a concise summary followed by the same extended explanation that the summary was intended to replace. The continued presence of the explanation preserves most of the reading, classification, and triage cost. A summary is not a substitute for removing unnecessary material when the unnecessary material remains directly beneath it. Supporting details can remain available to the author and can be supplied in a subsequent response if a maintainer determines that the initial facts are insufficient. Nor is it generally necessary to surround relevant facts with introductory courtesies, repeated apologies, rhetorical transitions, anticipatory defenses, summaries of prior misunderstandings, explanations of why the current answer differs from a previous answer, assurances about claims that are not being made, or concluding restatements of conclusions already expressed. Courtesy is appreciated, but its communicative footprint need not substantially exceed that of the technical substance. A correction is most useful when it makes the corrected claim immediately identifiable and permits the obsolete claim to be discarded without requiring the reader to reconstruct the entire history of the correction. Applied to the present exchange, the information that appears most capable of affecting maintainer action is that disabling HMR removes the React refresh preamble, that the resulting client bootstrap no longer causes the relevant environment initialization to occur before createClientRpc is evaluated, and that server-function construction consequently encounters a ReferenceError because process is unavailable. The precise import-order mechanics, the contrast with the initial theory concerning a relative URL, the implications for other plugins whose preambles may differ, the explanation of why the originally linked example does not exhibit the behavior under its default configuration, and the broader characterization of the problem as a dependency on an incidental ordering guarantee may become relevant during implementation, but they need not all be transmitted before maintainers have had an opportunity to evaluate the narrower verified condition and its immediate consequence. In consideration of the asymmetry between the effort required for an author to preserve additional material and the cumulative effort required for every recipient to inspect and classify that material, and with due regard for the limited and nonrenewable character of volunteer maintainer attention as it relates to the substantially renewable supply of potentially relevant contextual exposition, future participation would be most effective if each response were reduced, before submission, to only those empirically established statements whose omission would prevent reproduction, materially distort the reported behavior, or leave the specific question under consideration unanswered, with all supplementary narrative, speculative extension, duplicative reformulation, historical reconstruction, rhetorical cushioning, and otherwise nonessential elaboration withheld pending an explicit indication that its disclosure is required.
and the finite amount of maintainer attention available for converting the supplied information into an actionable conclusion.
We recognize that determining what is essential requires judgment and that contributors cannot invariably know in advance which detail a maintainer will consider relevant. In such circumstances, the preferred strategy is progressive disclosure, under which the shortest adequately supported factual answer is provided initially and further supporting detail is supplied only when a maintainer identifies a concrete need for it
with due regard for the limited and nonrenewable character of volunteer maintainer attention as it relates to the substantially renewable supply of potentially relevant contextual...
Tags
- problem: volume of AI-assisted issue/merge request contributions hard to manage/keep up with
- be concise
- open-source software
- illustrating problem
- problem: AI responses are too verbose
- problem: long AI-assisted responses with too much unsolicited information
- funny
- maintainer: limited time
- well said
Annotators
URL
-
- Sep 2026
-
gitlab.com gitlab.com
-
glab CLI tool
Tags
Annotators
URL
-
-
microsoft.github.io microsoft.github.io
Tags
Annotators
URL
-
- Aug 2026
-
lynxjs.org lynxjs.org
-
but we believe in opening source what we actually rely on. In fact, we are moving all development to GitHub, making it open and transparent to the community.
-
-
-
-
-
-
-
-
www.ripple-ts.com www.ripple-ts.com
-
vs Svelte TypeScript-first approachJSX-like syntax instead of HTML templatesMultiple components per fileSimilar reactivity concepts but different syntax
Tags
Annotators
URL
-
-
primitives.solidjs.community primitives.solidjs.community
Tags
Annotators
URL
-
-
www.youtube.com www.youtube.com
Tags
Annotators
URL
-
-
-
This video/analysis is okay, not spectacular.
Appreciated Ryan's counterpoint, that there are other ways of looking at the data, including: Look at npm downloads and you will see SolidJS has tripled in the past year.
This isn’t limited to say Solid or Svelte. Vue or Angular used to sit around 50% Reacts numbers 7 years ago but now sit closer to 10%. I think the mistake we make when looking at this stuff is given Reacts dominance treat the space as fully saturated, but the growth of the bounds continues to outpace the growth of adoption.
Tags
Annotators
URL
-
-
morello.dev morello.dev
-
In Solid, the component body is setup code. It runs a single time.
-
-
www.youtube.com www.youtube.com
-
www.youtube.com www.youtube.com
Tags
Annotators
URL
-
-
github.com github.com
-
So that alone is something that makes Solid's approach standout.
English usage: one word or two? standout
-
-
-
Yeah Svelte uses its compiler. They have a syntax which makes components easily identifiable vs just other functions so they can localize their transform. I think it sets the wrong precedence. It basically lies about the capabilities of the system. If that is the biggest sticking point people are valuing the wrong things. I can't stop them from doing so, but I'm ok with them learning for themselves the hard way. At certain point denying the truth is just building a house of cards. Look at the whole class handling in Svelte 5. It might be ergonomic but it is representative of the slippery slope I'm talking about. Once you start lying you have to maintain that lie.
-
-
v2.solidjs.com v2.solidjs.com
-
A memo is a read-only derived value.
Tags
Annotators
URL
-
-
www.youtube.com www.youtube.com
-
https://youtu.be/bJyREHmgo5E?si=QVNPlo_CHGth5ZAV&t=1763 Ryan talks about "there's only a few options" for open-source funding...
-
-
-
github.com github.com
Tags
Annotators
URL
-
-
-
-
jsmanifest.com jsmanifest.com
-
Preact Signals provide a minimal signal implementation that works with Preact or React:
-
const count = signal(0); const doubled = computed(() => count.value * 2);
I like this syntax better than Solid's. It returns a single object (with .value) rather than explicit getter/setter.
I wonder if there's a way to use similar syntax in Solid? Don't see any reason why we couldn't easily wrap createSignal with a nicer API.
-
Signals break component boundaries. A signal defined in one component can be read by any other component that imports it. This enables powerful patterns but violates React's principle that data flows down through props and up through callbacks.
-
The convergence on signals across frameworks proves the pattern's universality. Each framework adapted signals to its existing architecture while preserving the core mental model.
-
-
www.sabaoon.dev www.sabaoon.dev
-
Signals libraries for React: @preact/signals-react and jotai provide signal-like primitives that work within React's model. These are viable for performance-critical components.
-
The convergence of major frameworks on signals-based reactivity is not fashion—it is a recognition that the virtual DOM model, while powerful, has a fundamental inefficiency: it describes what to render rather than what changed. Signals describe exactly what changed and update exactly what depends on it.
-
Signals invert this. Instead of "re-run everything and figure out what changed," signals say "run only what is directly subscribed to the specific value that changed." The computational difference is significant in applications with large component trees and frequent state updates.
-
-
preactjs.com preactjs.com
Tags
Annotators
URL
-
-
tanstack.com tanstack.com
-
Server routes are meant for HTTP endpoints that need to be called from outside your TanStack Start application. If you only need to call server-side logic from within your Start app and want Start to handle serialization for you, use server functions instead.
-
-
tanstack.com tanstack.com
-
To quickly visualize this handshake, here is a diagram:
-
-
-
adopting Start means joining an ecosystem of modular, composable tools rather than committing to a monolithic framework. Each piece works independently or together.
-
By ByteBot Share TanStack Start hit Release Candidate status in early 2026 as a full-stack React framework that challenges Next.js’s dominance with a radically different philosophy: client-first, not server-first. Built on TanStack Router, Vite, and Nitro, it delivers server-side rendering, streaming, and server functions without forcing developers into the server-centric mental model that’s become React’s default. If Next.js’s opinionated approach or React Server Components feel heavy-handed, TanStack Start offers breathing room.
-
“When I first tried it, I thought I was missing something because it was so easy, it just worked.”
-
React Server Components remain confusing for many developers. TanStack Start sidesteps that complexity entirely by treating SSR as an enhancement, not the foundation. You write client code that runs on the client. Server functions handle backend logic. The separation is clean.
Tags
- approachable/easy for newcomers
- monolithic/giant modules/libraries/packages/projects
- different way of thinking about something
- TanStack Start
- easy to use
- small units/components/modules/libraries/packages/projects
- easy to understand
- different approaches
- design goals
- easy to reason about
Annotators
URL
-
-
tanstack.com tanstack.com
-
To let an external cache make the freshness decision, set routerOptions.defaultPreloadStaleTime or routeOptions.preloadStaleTime to 0. Settled preload data then becomes immediately stale in the Router,
-
-
-
It does not promise every CommonMark edge case, arbitrary async plugin chains, automatic linkification, MDX evaluation, or a bundled sanitizer.
-
The tree is plain objects and arrays, so it can cross a server boundary, sit in a cache, feed a search index, or render later through HTML, React, or Octane. Parsing doesn't trap the content inside a framework or an async plugin pipeline.
-
Most Markdown APIs make the rendered output the product. TanStack Markdown treats the parsed document as the durable part.
-
I don't want to reach for an architecture to hide a dependency problem, I'd rather make the dependency small and let content be content.
-
-
tanstack.com tanstack.com
-
Signal-native adapters implement it with their framework primitives and can keep option reads in the same reactive graph.
-
The core reactivity depends on a small shared atom contract provided by @tanstack/store:Signal-native adapters implement it with their framework primitives and can keep option reads in the same reactive graph.Store-backed adapters keep options synchronized during render; in React, granular rendering is opt-in through selectors and Subscribe.
-
The primary purpose of a headless library like TanStack Table is to provide the correct state management core, but we needed to rethink how much of the core library worked under the hood and connected to each framework's reactive model.
-
-
tanstack.com tanstack.com
-
Every framework adapter's reactivity system was completely overhauled in Table V9. With table state now built on TanStack Store, each adapter can connect the framework-agnostic core to its framework's native reactive model instead of working around assumptions inherited from React. This is especially significant for signal-based frameworks because table atoms now connect much more directly to signals, refs, runes, and tracked values, making those adapters more performant overall and bringing them much closer to true signal-based rendering. TanStack Table V9 now ships ten dedicated framework adapters, plus the framework-agnostic @tanstack/table-core.
-
- Jul 2026
-
-
-
You want to understand exactly what your code is doing
-
You value type safety and explicit control
-
Your app is highly interactive
-
The core bet: developers know their apps better than frameworks do. Server rendering is an optimization you opt into where it makes sense. The framework should give you powerful primitives and get out of your way.
-
TanStack Start optimizes for developer control and correctness: type safety everywhere, explicit over implicit, composable primitives, and deployment freedom.
-
-
-
-
-
- csv export only
- did not seem to export full item list ?
-
-
-
github.com github.com
-
actualbudget.org actualbudget.org
-
Split transactions: When summing or counting transactions, filter "is_parent": false to avoid double-counting. A split parent holds the total amount, and its children hold the individual parts — including both counts the total twice.
-
-
-
Here the example: Transaction: Hotel (7 nights) | Category: Holiday | Subcategory: accommodation
-
-
actualbudget.org actualbudget.org
-
Categories that are not currently needed can be hidden by using the down arrow by each category name. An example is budgeting savings for a large cost (e.g. washing machine). After the purchase is made, the category can be hidden.
Tags
Annotators
URL
-
-
actualbudget.org actualbudget.org
-
Your budget is not static, so there will be times when you do not have enough budgeted for your spending. When one of your categories is overdrawn, increase the budgeted amount for that category so it is 0 or greater.
-
-
beta-bridge.simplefin.org beta-bridge.simplefin.org
-
Generally, banks do not let their users share their transaction data with third party apps in a secure, standardized way. Instead, you have to give your bank account credentials directly to third parties.
-
The SimpleFIN Bridge is a success when it is turned off because banks have implemented SimpleFIN themselves or a universal, better alternative.
-
We want to be in a world where banks let their users share their transaction data with third party apps without giving those apps your bank account credentials!
-
-
www.investopedia.com www.investopedia.com
-
Zero-based budgeting requires every expense to be justified for each period, starting from a "zero base."
-
ZBB involves analyzing and justifying each cost
Tags
Annotators
URL
-
-
github.com github.com
-
Wayland does not let a client register global hotkeys, so you bind the wrapper to a key combo in cosmic-comp.
Why not?? Does this not bother you? And X11 could? Is this regression for a good reason?
-
Each iteration went through a planning process and was developed on a separate branch. All plans are available for review under .claude/plans. An iteration history is also kept.
-
The app was developed with Claude Code through a series of planned iterations. My original plan was to use this project as a way to learn libcosmic app development. However, as I dug in, it quickly became apparent that developing an app switcher would cover much more than a regular desktop application. It would involve a deeper review of the compositor, its protocols, and how it works with Wayland. These aren't topics I'm familiar with. Furthermore, cosmic-comp and cosmic-protocols are still in rapid iteration, and documentation is minimal. All of this meant that, even as a seasoned developer with a few Rust projects under my belt, it would take more time than I had on my hands. As someone who's been developing software for more than 25 years, I am of course concerned about and wary of AI slop. My hope here is that process and oversight will minimize it (though of course I may not catch everything). Each iteration went through a planning process and was developed on a separate branch. All plans are available for review under .claude/plans. An iteration history is also kept.
-
-
www.techradar.com www.techradar.com
-
github.com github.com
-
rustdesk.com rustdesk.com
Tags
Annotators
URL
-
-
github.com github.comFAQ2
-
However, it’s important not to confuse the concept of being scammed (social engineering) with being hacked (technical breaches).
-
Can be self-hosting scammed? Yes, absolutely. In fact, many scammers use self-hosting solutions. They set up their own servers and trick users (often targeting seniors) into installing custom clients that connect to their self-hosted servers. However, it’s important not to confuse the concept of being scammed (social engineering) with being hacked (technical breaches). Self-hosting, when properly secured, remains a safer and more secure solution compared to SaaS, as it is harder to hack.
-
-
github.com github.com
-
www.fosslinux.com www.fosslinux.com
-
For remote access to your Pop!_OS machine, I recommend RustDesk for personal and home-lab use in 2026. I have been using it on my own machines for months and it works flawlessly on Wayland.
-
-
-
computingforgeeks.com computingforgeeks.com
-
autotroph.com autotroph.com
-
-
au·to·trophan organism that is able to create it's own food from sunlight or chemicals (like plants and algae!)
Tags
Annotators
URL
-
-
blogs.nvidia.com blogs.nvidia.com
-
An AI model, also called a neural network, is essentially a mathematical lasagna, made from layer upon layer of linear algebra equations. Each equation represents the likelihood that one piece of data is related to another.
-
-
claude.ai claude.ai
Tags
Annotators
URL
-
-
kotlinlang.org kotlinlang.org
Tags
Annotators
URL
-
-
lynxjs.org lynxjs.orgLynx1
-
-
www.youtube.com www.youtube.com
-
-
github.com github.com
-
powers the https://github.com/patmood/rich-markdown-editor-vsc which, similar to this, hasn't been updated in 2 years
Tags
Annotators
URL
-
-
github.com github.com
-
docs.paperless-ngx.com docs.paperless-ngx.com
-
www.reddit.com www.reddit.com
-
kamal-deploy.org kamal-deploy.org
-
-
www.reddit.com www.reddit.com
-
wiki.r-selfhosted.com wiki.r-selfhosted.com
-
userstyles.world userstyles.world
-
userstyles.world userstyles.world
-
-
github.com github.com
-
uso.kkx.one uso.kkx.one
-
Consider uninstalling the malicious Stylish extension. In 2016, with no input from the userbase, through some guy, pretending to be an independent developer, it basically was sold to a shady web analytics company, Similarweb. Since then, it is actively sharing your entire non-anonymized browsing history demo with them, assuming you ever clicked on one of the flashy "Agree" buttons. It initially did this without even asking for consent, and was banned from extension stores afterwards. Currently, it still breaks store policies, yet is not banned for unknown to me reasons. This website only works with the Stylus extension, which is an open-source privacy-friendly fork of the now-malicious Stylish extension.
Tags
Annotators
URL
-
-
userstyles.org userstyles.org
-
https://userstyles.world/
-
-
www.reddit.com www.reddit.com
-
Cloudflare is an evil company which uses legitimate traffic to hide nefarious clients. They also have a history of taking no responsibility for hosting illegal content. Plus, they’re overselling their “privacy” stance. How can anyone trust a company that lets their clients host “Adobe Flash Updaters” in the name of “free speech”? Or that never answers questions unambiguously?
-
-
-
www.oracle.com www.oracle.com
Tags
Annotators
URL
-
-
cloud.google.com cloud.google.com
Tags
Annotators
URL
-
- Jun 2026
-
-
-
codenote.net codenote.net
-
github.com github.com
-
This is what I'm using on LInux
-
-
generativeai.pub generativeai.pub
-
Markdown became the default AI output under three assumptions. All three made sense in 2022. None of them hold in 2026.
-
Premise 1: Humans hand-edit content. Markdown was designed for people who write and revise their own text. That’s how blogs, docs, and READMEs still work. But agent output is different. You send a prompt. The agent generates a 2,000-word analysis, a code review, a project plan. You read it, maybe share it. You almost never open it in an editor and start rewriting paragraphs. The format’s core value proposition — easy to edit by hand — no longer matches the use case.
-
Premise 2: Content is small. A 500-word blog post renders fine in Markdown. A 3,000-word agent-generated implementation plan with architecture decisions, trade-off tables, and code samples does not. Past about 100 lines, Markdown becomes a wall of text. No navigation, no collapsible sections, no way to jump to the part you care about. Thariq’s observation is blunt: “Nobody really reads a Markdown file longer than 100 lines.”
-
Premise 3: Output is read-only. The old workflow was linear: prompt, generate, read, close. But the agent era is pushing toward something different. Users want to interact with the output: filter a table, adjust parameters, compare options side by side, export a subset, feed the result back into the next prompt. Markdown can’t carry interaction. It’s a one-way street.
-
The second wave was knowledge workers. Through the 2010s, tools like Notion, Obsidian, and Jekyll built their entire editing experience around Markdown. It became the default for wikis, note-taking, and static sites. The appeal was the same: human-readable AND machine-parseable. You could write it in any text editor and render it anywhere.
-
-
pocketcasts.com pocketcasts.com
-
Yeah, and it's like -- that is an interesting potential possibility, I guess... Talking to people about partnerships, or "Do we want to have an official hosted version?", open sourcing is a little bit risky, because somebody could technically go along and do that. We talked about licensing issues, maybe there is a license that I could use to prevent that... But really, when it comes down to it, after talking to people, there's not really -- I think you burn more goodwill with weird licensing issues like that, than trying to prevent that. \[01:00:01.19\] So I think the best thing to do is just to get out in front. And if we're going to do that, then we just need to do this sooner rather than later, and prevent some side company from trying to take this and do that.
-
I was pretty burned out on just the whole... I just want my time at night back, because I have a full-time job, too.
-
Yeah, I think it's just the loneliness problem. I think there was almost such a point where the thought of having 3,000 users or 800 - I just literally cannot support that by myself.
-
Yes, I had a Slack that was pretty active, and now I've moved to Discord when I open sourced it, because Discord is just way, way better.
-
and it's like "You're almost making half of what I make." But when you think about it as a business income stream, suddenly if I have to hire one developer even just part time, there goes almost all that money. That's not even enough to hire a developer part-time, somebody who would be really skilled enough to work on Actual. And so money from a business perspective, having to set aside $20,000 to invest in development for a couple months - if you're a business and you can't afford that, that's a huge problem. But 20k for a personal -- you know, if I'm about to buy something for 20k, I agonize over that for week. I hate buying cars, because they are so freakin' expensive. But 20k in business money is nothing, right? I mean, for most businesses, that shouldn't be anything, if you're doing it right. So 3k - a lot of people were like "Dude, you're giving up $3,000 a month." To me, it's just like, you don't understand the burden, because I was lonely, and the next thing I really needed to do is either find a co-founder, which I couldn't do, or hire somebody else to help development. Like, properly hire; don't outsource some cheap labor. Properly hire somebody to help development. And $3,000 a month is not anywhere close to being able to hire somebody out. So you're kind of stuck in this awkward middle phase, which I think happens with bootstrapping, right? You've got to really bear through that awkward phase where you make enough money, to get to the point where you can start hiring out.
-
So it wouldn't have felt good to have this small exit, plus maybe alienate some of your most loyal users... I understand why that is not the best route. And so open source is the path that you chose. And of course, that's the opposite of alienation. It's inviting everybody in, right? To a certain degree. You do have the ones that don't want to set it up and can't code, and all that. But instead of spending your goodwill with a sale, you're almost buying goodwill with open sourcing, because now you're just giving a gift to the world.
-
I bet if I had sold, it would have been even... Like, there's a lot of people who reacted to open source where they are worried about not being able to set things up themselves, and it totally makes sense, because they're not technical users, but they're happy for that direction. I think if I had sold, it would have been a very similar response from a lot of people, where they're going to leave the app... But it would have been like an angry response, which - I mean, honestly, a lot of apps do that. Things change and things happen. But I think it would have -- I think there's a lot of trust in there that it's like I've been saying I'm in it for the long haul, and then you turn around and sell it... Which, you know, it would have been my right to do to be honest, but it still would have pissed off a lot of people, and I didn't really feel like dealing with that.
-
But development is expensive. So unfortunately, that is the cost there, where it probably requires very highly skilled developers to actually really be able to dig into the hard parts of this.
-
Totally. It's actually the most scalable architecture you could possibly have, because you don't even need a server.
-
It is a cross-platform, local-first API that works on the web as well... Getting that to work required significant investment and novel research, requiring new ways of doing things.
-
But to be honest, somewhat groundbreaking innovations to use SQLite in a persistent way in the browser, but it stores the file chunks in IndexDB, and it actually blows away IndexDB's performance. It's a significant undertaking; we're dealing with writing C code to optimize file disk access, so that it works better with IndexDB. So it's not something that's a typical SaaS app that a company is going to come in and buy, and then suddenly like "Let's ramp it up to get 20,000 users and just scale it out in all of the ways that are normal, that we're used to."
-
one thing that I would say is if you are building a product, or if you are trying to achieve anything, try to do it quickly, and make quick decisions, and move fast... Not just so that you will make progress fast, but when something kind of slows down... Like, if I was a year into Actual - when you've been doing something for a while, it's really easy to just keep that pace. It's really hard to -- I don't know, if I have a problem on my house, like fixing a toilet that's been broken for a year, there's something about the psychology of it that's like "I'll fix it next week. It's already been a year, I'll fix it next week." Whereas if it broke yesterday, I'll probably go out to Lowe's this weekend, come back, it's a 15-minute fix, and I'll fix it, right? There's some psychology there that's interesting, where if you aren't acting on things fast, they just sort of become this pile of responsibility behind you that you just sort of ignore. I think that's one thing that sort of happened, to me at least. It's like, "I've already been working on this for so long... Let's just keep building a couple more things."
-
The start of the idea is if you've got a broken window, you can fix it right now. Because if you leave that broken window broken, I think it's a signal, and maybe a signal to the outsiders that no one's taking care of this house, or something. But also, it's kind of like, you know, then the next thing breaks, and you're like, "Well, the window's already broken, too." It's kind of like "Well, I'm already not taking care of this, and so..." Adam Stacoviak: \[32:18\] Yeah. Jerod Santo: Oh, here, we've got "Neglect accelerates the rot faster than any other factor." That's Jeff Atwood talking about the broken window theory, so I've found it a little bit. So there's a little bit of that going on there. I definitely understand how that is. Adam Stacoviak: It's a metaphor that leads to the disorder, essentially. If you have a broken window here, in this house - well, then your neighbor is gonna be okay with their lawn being not so good. Or your neighbors don't want to deal with their landscaping, so you don't... It's almost like osmosis, in a way. You sort of do things based upon other things happening around you... It's disorder that happens because of other disorder. It's kind of like that.
-
...and it's not getting features for a month or two... It's very hard to context-switch between development and all the other stuff, because you've got to be on top of that sales, developing those relationships with those bloggers to get featured... It's hard to do it.
-
Right. Well, especially when you are a developer, and you love that part, the first move is to hire the not-that-part; the other parts. Either the things that you aren't as good at, or the things that you don't like to do.
-
I finally found a good service, who helped me find a personal assistant, a virtual assistant, who helped manage support. And she was amazing. I was feeling very guilty, because I had, I think, 200 unread emails that I just lost track of over a month or so, that I hadn't responded to. In two days, she brought that down to zero. Just answered everything, and categorized everything, and just really cleaned it up. And then at that point, she would take on support, and that was a huge help. So that was good. It's not development, where it was super, super-expensive. I think you can find places to pull off and get help that isn't going to drain your whole finances like hiring other developers, or something.
-
I tried out a contributor model where people were just interested; people would ask a lot, actually, "How can I help contribute?" And so I'd bring on some people, and then obviously, as just a free contributor, they do a little bit of work and then they just kind of fade away. It's just how it is. And then at that point, it's something even else more for me to manage, helping them, getting them running, sort of mentoring them and helping
-
I would love to take Actual, if somebody was going to do this, is to focus less on the zero-based budgeting - and if any Actual users are listening to this, don't freak out; that's always going to be there. But there's totally a capability for this to be a more generic transaction management tool
-
it turns out you can actually edit rules, and do complex rules, and you kind of can unpeel the layers
-
For example, local-first. The app is just -- Jerod Santo: Fast. James Long: ...fast by default. I mean, it's no question. That's the first thing that everybody always says when they try the app. They feel it. They feel their data sitting right there on the hard disk. And I don't have to think about it. I can run 100 queries straight from the frontend, not even in the backend. So there is kind of a frontend and a server process running, but that process is always a local process. I can run queries, send them to the server, and I can fire off 100 right from the frontend, and you don't feel that at all. It's one of those things that just changed the whole experience of the app. There's no - you do a bulk edit of your 3,000 transactions in an account, because you're doing something crazy and you're really restructuring things, and you bulk-edit things to add a note to these 3,000 transactions, so you select them all and type "archived". It happens in 200 milliseconds. Whereas you go to any other app and there's this huge cliff of anything that's outside of the ordinary workflow that they've specifically manually optimized - suddenly it has to span their five database clusters, and it takes you'll see the loading spinne
-
So that was Mint's deal. That's what really put them on the scene. And then they started just layering on kind of upsells and other things. I eventually was like "Yeah, I'm done with Mint", because it got yucky for me as a user.
-
Tags
- fast (software performance)
- software development is expensive
- delegating
- Mint
- productivity
- Slack
- Discord
- broken windows theory
- developing a product
- interview
- trust
- neglect
- maintainer: burned out
- goodwill
- powerful
- psychology
- time management
- comparison
- momentum
- software development
- innovative
- personal finance: transaction tracking
- open-source software
- personal finance app
- maintainer
- local-first apps
- general-purpose
- Actual Budget
- getting things done
- maintainer: limited time
- it takes work to train/help people to help you and contribute
- loneliness
- business
Annotators
URL
-
-
actualbudget.org actualbudget.org
Tags
Annotators
URL
-
-
-
When entering new transactions, and when exporting transactions to CSV, having multiple subcategories with the same name, such as "Work Expenses", but different Parent Groups, such as "Me vs Partner" causes confusion.
-
-
github.com github.com
-
I'd vote against this change. It can be really useful as-is for certain groupings. For example, I often type "inc" when categorizing to bring up the income categories. The current behavior is also how it works in YNAB: The "which are not selectable" point in the original comment is valid though. YNAB handles this by shrinking the text size of the category group names, as you can see in the above screenshot. Maybe this Issue could be modified to be a UX change (shrinking the category group name text) instead of a functionality change, such that it's clear the category group names are no selectable.
-
-
github.com github.com
-
This repository uses lodash style issue management for enhancements. That means enhancement issues are automatically closed. This doesn’t mean we don’t accept feature requests, though! We will consider implementing ones that receive many upvotes, and we welcome contributions for any feature requests marked as needing votes (just post a comment first so we can help you make a successful contribution).
-
-
actualbudget.org actualbudget.org
-
Using Hold for Next Month will ensure that the funds are no longer available to budget in the current month but can still be allocated to the budget in any subsequent month. This will be particularly useful for those who are looking to stop living paycheck to paycheck and instead gradually get one month ahead i.e. living on last month's income rather than this month's.
-
Here's the important part: your budget is not static. It's not something you set and forget. Maybe you check in and realize your food budget is busted because you hosted a dinner party. No problem — just move money from somewhere else to cover it. Maybe when the next month starts, you see that your budget didn't really work. Make a new budget based off what you learned!
-
We find the best way to track your money is rooted in something called envelope budgeting. Instead of predicting how much you'll make and spend and trying to reconcile that with what actually happened, envelope budgeting embraces real income as the source of your budget instead. This means you can only budget money that you already have. You can think of categories as little funds that you deposit money into. Combined with our rollover system, it provides an intuitive way to handle a lot of things that come up in life. And you know it's always accurately depicting your finances — there's no made up numbers.
-
That's why we automatically sync all of your data to your selected server in the background. You get the best of both worlds: all data is local by default, but if internet is available, your data is seamlessly backed up and synced to all other devices. This is the opposite of most apps which heavily rely on the internet to be available.
-
In February 2025 the actual-server repository was merged into the Actual repository. The reasons for this change are as follows: Streamlines Development: Developers will only need to clone/sync one repo instead of two. Improves Debugging: It makes end-to-end debugging for server/client easier as they will be in the same workspace. Simplifies Desktop App Packaging: Enables the desktop app to embed the sync server. Ensures code consistency and reduces the maintenance burden. Simplifies the release process
-
-
docs.firefly-iii.org docs.firefly-iii.org
-
docs.firefly-iii.org docs.firefly-iii.org
-
docs.firefly-iii.org docs.firefly-iii.org
-
YNAB expects you to put your money into budgets based on whatever money comes in. But that's not how Firefly III works. Firefly III works the other way around. At the start of the month, you decide what you want to spend. If everything is OK, your budget should at least match what you earn. So that's easy. But if everything is better than OK, you budget less than you make, and you save the rest. You can use the rest of the money to fill piggy banks or donate to me (kidding ;)).
But that's really not so different from Actual Budget approach!
At the start of the month, you decide what you want to spend. If everything is OK, your budget should at least match what you earn. So that's easy.
Same. Every dollar coming in has a purpose.
But if everything is better than OK, you budget less than you make, and you save the rest.
Same. The only difference is that you explicitly decide (or change your budget after you realize you have extra -- this is allowed and encouraged) that the purpose for the "remaining dollars" is "savings". Seems the same to me.
-
Contrary, zero based budgeting keeps the focus on your paychecks and forces you to divide it over your budgets. Your primary driver becomes how much money you make and not how much money you spend. This is an important distinction.
-
-
-
actualbudget.org actualbudget.org
-
-
Actual is local first; the database that powers Actual Budget, and ultimately your budget, lives on your device. It is not stored on a server. "Actual server" allows you to sync changes to your budget on different devices. To do this, only the changes to the budget are sent to the server. The server stores the messages, and the local client pulls down the change(s).
-
-
actualbudget.org actualbudget.org
-
In this context, a custom importer is something that takes all of your data (budgets, transactions, payees, etc) and dumps them all into a new file in Actual.
all of your data
-
But if you want to import all of your data into Actual, you can write a custom importer.
all of your data
-
One thing to keep in mind: Actual is not like most other apps. While your data is stored on a server, the server does not have the functionality for analyzing details of or modifying your budget. As a result, the API client contains all the code necessary to query your data and will work on a local copy
why doesn't it?
-
-
actualbudget.org actualbudget.org
-
Categorizing your transactions correctly is important and we've optimized this process.
Tags
Annotators
URL
-
-
standardsexplained.com standardsexplained.com
-
Meaning: Happening without interruption. Think of a smooth, unbroken line moving upwards. It implies a constant flow of small improvements happening all the time. Focus: Maintaining momentum and making incremental changes consistently. It’s about embedding improvement into daily work.
-
-
www.ramseysolutions.com www.ramseysolutions.com
-
With a zero-based budget, you’re giving every single dollar a job on purpose. It’s hands down the best way to take control of your money and feel confident every time you spend.
-
-
actualbudget.org actualbudget.org
-
When two transactions are merged, one is determined to be the 'kept' transaction and the other is the 'dropped' transaction. Any empty fields in the 'kept' transactions are copied over from the 'dropped' transaction and the 'dropped' transaction will be deleted. So, if the 'kept' transaction is uncategorized or has no payee, the payee and/or category will be copied over from the 'dropped' transaction before it is deleted.
-
-
culturedcode.com culturedcode.com
-
Vision Pro
-
-
selfhostable.dev selfhostable.dev
-
I’ll be honest — tracking finances is boring. It’s the flossing of adulthood. Everyone knows they should do it, almost nobody actually does.
-
-
www.simplefin.org www.simplefin.org
Tags
Annotators
URL
-
-
ladybird.org ladybird.org
-
For decades, code contributions have been how open source projects learned who to trust. People would show up, do the work, take responsibility for their changes, and stick around. Over time, trust emerged from the work itself. AI tools have changed the economics of this very quickly. We use them ourselves every day, but a pull request no longer tells us as much as it used to about the person submitting it. A substantial patch used to imply substantial effort, and that effort was a reasonable proxy for good faith. That assumption no longer holds. For a browser, this matters. A browser runs untrusted input from the entire internet on the user’s machine, and one well-disguised vulnerability is all an attacker needs. We have already seen patient, well-resourced campaigns in open source to earn maintainer trust and abuse it. What has changed is how much faster and cheaper it has become to produce work that looks like a serious contribution.
-
At the same time, every change that enters Ladybird becomes our responsibility. It has to fit the architecture, survive future refactoring, interact correctly with the rest of the browser, and be understood by the people maintaining it. Whether code was typed by hand is beside the point. What matters is who is responsible for it once it enters the browser. Ladybird is becoming a browser for real users. The people introducing changes to it must be the people who decide those changes belong in the project, and who will answer for the consequences.
-
Tags
- good faith
- AI tools allow low-quality or untrustworthy work/contributions to be generated quickly
- effort as a proxy for good faith
- open-source software
- AI tools allow work/contributions to be generated much more quickly
- maintainer: responsible for understanding/maintaining the code once it gets merged
- trust
- no longer accepting contributions from public
- anti-generative-AI
- easy to understand
- whose responsibility is it?
- abuse of trust
- contributing to open-source software
- Ladybird
Annotators
URL
-
-
www.rustaceans.org www.rustaceans.org
-
I'm sorry for anyone using it, but I no longer have the time to maintain it.
Tags
Annotators
URL
-
-
v2.tauri.app v2.tauri.app
Tags
Annotators
URL
-
-
v2.tauri.app v2.tauri.app
-
v2.tauri.app v2.tauri.app
-
www.radicallyopensecurity.com www.radicallyopensecurity.com
-
-
Releasing ALL tools and frameworks we build as open source.
-
-
-
We're hoping that together in the open-source, local-first community, we can build something better than any closed-source alternative. The code is open-source because I believe that fundamental tools shouldn't require trusting a black box. Companies pivot, get acquired, or shut down. But open source is forever.
-
-
-
vocalinux.com vocalinux.com
-
-
github.com github.com
Tags
Annotators
URL
-
-
-
Independent software developers in China, like us, have 10 times more life pressure than Marak, the author of faker.js. Since ydotool has the opportunity to benefit large IT companies who won't pay a penny to us, we've changed the license to AGPLv3. These large IT companies are the main cause of life pressure here, such as the "996" working hours.
-
Article: "Open Source" is Broken
new link: https://xeiaso.net/blog/open-source-broken-2021-12-11/
-
ydotool will then be rewritten in JavaScript afterwards, to enable more people to understand the code & contribute.
-
-
xeiaso.net xeiaso.net
-
This is why I am very careful about how I make "useful" software and release it to the world without any solid way for me to get paid for my efforts. I simply do not want to be in a situation where my software that I develop as a passion project on the side is holding people's companies together. That's why I make software how and where I do. Like, no offense, but I really do not want to go unpaid for my efforts. The existing leech culture of "Open Source" being a pool of free labor makes it hard for me to want to have my side projects be actually useful like that unless you pay me.
-
If you want me to make you useful software, pay me. If you use software made by others in their spare time and find it useful, pay them. This should not be a controversial opinion. This should not be a new thing. This should already be the state of the world and it is amazingly horrible for us to have the people that make the things that make our software work at all starve and beg for donations.
-
There is this culture of taking from open source without giving anything back. It is like the problems of the people who make the dependencies are irrelevant.
-
GitHub stars famously cannot be used to pay rent.
-
-
-
Epicenter separates app-owned data from user-owned Markdown. App output belongs under apps/<name>/; folders you own stay ordinary Markdown.
-
Local-first apps that write to files you own. Your data lives on your machine as plain Markdown and SQLite: grep it, version it, open it in Obsidian. When an app stops mattering, your files don't.
-