above 50k and the UI needs to change because 1) you can’t count the collection, and 2) the scrollheight becomes too unwieldy to use the mouse, slight adjustments to the handle will skip forward many pages. And if you try at some point you exceed the pixel height browser scroll bars can support, needing a custom non-native scroll bar. anyway well before that point, roughly at 50k records you need to switch to “search” UX (much smaller result sets) because there is no way to actually access page 99910 of your million record collection.
upvoted for visibility, quick reaction - not for $130k no way, is he self motivated enough to spend a year at home self of self study? i am a 39yo tech founder who also learned C++ at high school age, the world was different 20 years ago but 130k is a huge amount of debt, and my career was generated almost entirely from side projects. My actual degree is in computer hardware engineering despite the software career. It made no difference
2000ms isn’t network latency, it’s the db query. Moving a slow query from the cloud (high compute, fast network under your control) to the client (low compute, unreliable network, not under your control) is not going to make it faster and you’ve damaged reliability. All to save 50ms network latency.
as you point out so vividly, the speed of light is actually not a problem given you can ping across an ocean in sub 100ms (not a laser beam, actual packets through underwater pipes). 56ms is acceptable latency for realtime video
who said anything about designing for tight latency requirements? My argument is that, for Linear’s market - programmers and tech workers either in an office or working remotely near a city - the latency requirements are not tight at all relative to the baseline capacity. We live on zoom! I have little patience for someone whose 400ms jitter is breaking up the zoom call, I had better ping than that on AOL in 1999, you want to have a tech career you need to have good internet, and AI has just cemented this. I have cross-atlantic zoom calls with my team in europe every day without perceptible lag or latency. We laugh, we joke, we crosstalk all with realtime body language. If SF utilities have decayed to the point where you can’t get fast internet living 20 miles from the backbone, then the jobs are going overseas. Eastern europe has lower ping to Philly than jitter guy has to the edge. And people in this thread are lecturing me about privilege!
individual manager discretion produces widely variable outcomes at scale, a lot of (most?) managers are promoted “by default” because the company is growing quickly, or lost a key person, and there is no better choice available, and it would be hard work to go find and recruit a better choice and nobody wants to do that work. So we add process and structure to help underqualified personnel not totally screw it up, which produces fine results for a while until hierarchy and process gets too heavy and marginal returns start to decay, and viola. Leetcode and AI screening.
it is my actual numbers from my house in the Philadelphia suburbs right now, 80 miles away from the EWR data center outside NYC. Feel free to double them, you’re still inside the 60hz frame budget with better than e-sports latency
non-relational, document oriented pubsub architecture based on MongoDB, good for not much more than chat apps. For toy apps (in 2012-2016) – use firebase (also for chat apps), for crud-spectrum and enterprise apps - use sql. And then React happened and consumed the entire spectrum of frontend architectures, bringing us to GraphQL, which didn't, but the hype wave left little oxygen remaining for anything else. (Even if it had, still Meteor was not better.)
actually if you live near a city the edge network is 6ms RTT ping away, that’s 3ms each direction, so if e.g. a virtual scroll frontend is windowing over a server array retained in memory, you can get there and back over websocket, inclusive of the windowing, streaming records in and out of the DOM at the edges of the viewport, and paint the frame, all in less than 8ms 120hz frame budget, and the device is idle, with only the visible resultset in client memory. That’s 120hz network. Even if you don’t live near a city, you can probably still hit 60hz. It is not 2005 anymore. We have massively multiplayer video games, competitive multiplayer shooters and can render them in the cloud now. Linear is office software, it is not e-sports, we’re not running it on the subway or in Africa. And AI happens in the cloud, Linear’s website lead text is about agents.
addressing only paragraph 2: American VC funded startups mostly don’t hire overseas remote programmers for two reasons: 1) they don’t need to, they are overfunded and the culture/communication overhead tradeoff is not worth it; 2) they are california biased which has poor timezone overlap with overseas time zones. The companies that historically lean in on overseas workers are the bootstrappers, because they cannot afford market american salaries. The company I founded is one such company.
i would like to see deeper analysis of similar forces playing out in other countries. A weakening dollar implies a strengthening world, but European policy is even more messed up than American, there is still widespread talent export e.g. european programmers working for american companies, indian asian and russian programmers immigrating to Europe or working remote abroad, and China seems to face financial crises just the same as ours in the US. The US tech sector for all its faults and incompetencies still seems impregnable. So how does all this factor into the weak dollar narrative?
technical ICs actually trialing the AI tools think we’re in a bubble. Executives, boards, directors and managers are still tumbling head over heels down the mountain in a race to shovel more money into the fire, because their engineering orgs are not delivering results and they are desperate to find a solution
the answer is always yes but the org pays the costs not the manager, and the manager isn't accountable to those costs, and the manager IS accountable and vulnerable to political costs
Peter Principle for codebases - codebase will continue to grow until nobody understands it, and then it will tread water until enough key personnel leave and then suddenly eng capacity is below the cost of servicing the debt and this is the point at which all control is fully lost. Eventually a younger sharper competitor will acquire it for the users or it will go through M&A repackaging or some other way to extract the last drops of money before discarding it
you can negotiate in advance a buyout at the next fundraise event, like if he raises 2 mil you will get 200k in exchange for the 14. I will note that you should try not to anchor on the safe cap, it’s not an equity valuation, the company FMV is something like $900k even with the revenue, valuing your 15% at 135k which seems about right. The problem with this is the seed investor may not like it but maybe the remaining founder can dilute an extra 200k from angels to arrange the buyout w/o damaging perception of the round? idk, the right lawyer can help here
“The value of notation lies in how it enables us to work with new abstractions. With more powerful notation, we can work with ideas that would have been too complex or unwieldy without it. Equipped with better notation, we might think of solutions or hypotheses that would have been previously unthinkable. Without Arabic numerals, we don’t have long division. Without chess notation, the best strategies and openings may not have been played. Without a notation for juggling patterns called Siteswap, many new juggling patterns wouldn’t have been invented. I think notation should be judged by its ability to contribute to and represent previously unthinkable, un-expressible thoughts.”
This is pretty much the whole point of programming languages imo
98% sure each commit doesn’t corrupt the database, regress a customer feature, open a security vulnerability. 50 commits later … (which is like, one day for an agentic workflow)
in my opinion it is the events and state transitions that are where everything interesting and challenging happens, like server IO in mount/unmount/didUpdate lifecycle methods or event callbacks. For example, a typeahead component. You focus the input and start typing. The picklist unfolds and loads records from the server, we need to stream subsequent keystrokes to the server into the query for server filtering, we need to maintain the DOM gracefully as the query changes stream in, we need virtual scroll if the collection is large, the user then uses the arrow keys to select an item in the picklist and presses enter to submit, closing the picklist and returning the selection to the caller. It is a living, reactive process. Now "use the REPL" to get, like, any value at all?
UI is not just DOM it is also network connections, events from the user, and local state. React only datafies the DOM orchestration. The UI=f(state) composition model fails at all of these points, most vividly at the network boundary, but does not include answers for the other domains I listed as well.
a problem with a repl-centric approach to crud apps is that the repl is not reactive. It is a good fit for request/response pure function backend programming. But UIs are not pure functions, they have a deeply effectful nature, and being reactive all those effects are highly “situated” if you will (to use Rich Hickey’s word). IMO this is a severe impedance mismatch at the core of Clojure’s design. We simultaneously want to write small functions that can be explored in the REPL and we also want to write in-situ functions with complex dependencies in scope. ClojureScript users are running in circles for a decade trying to turn the latter into the former to make the REPL work again but it’s a mirage, the REPL is just not a fit for a deeply situated problem domain. An example of this impedance surfacing in backend programming is a nontrivial map/reduce pipeline. What is the shape of the document at stage six? How do I manifest one to play at the REPL? Clojure doesn’t have great answers to this.