Board

Board

2272 bookmarks
Newest
artima - The Simplest Thing that Could Possibly Work
artima - The Simplest Thing that Could Possibly Work
Now, what is simplicity? Simplicity is the shortest path to a solution.
A friend of mine once said that there are problems and there are difficulties. A problem is something you savor. You say, "Well that's an interesting problem. Let me think about that problem a while." You enjoy thinking about it, because when you find the solution to the problem, it's enlightening. And then there are difficulties. Computers are famous for difficulties. A difficulty is just a blockage from progress. You have to try a lot of things. When you finally find what works, it doesn't tell you a thing. It won't be the same tomorrow. Getting the computer to work is so often dealing with difficu
I think that that's a breakthrough, because you are always taught to do as much as you can. Always put checks in. Always look for exceptions. Always handle the most general case. Always give the user the best advice. Always print a meaningful error message. Always this. Always that. You have so many things in the background that you're supposed to do, there's no room left to think. I say, forget all that and ask yourself, "What's the simplest thing that could possibly work?"
Coding up the simplest thing that could possibly work is really about this: If you can't keep five things in your head at one time and make a decision, try keeping three things in your head. Try keeping just one thing in your head, and see if you can make a decision. Then you can think of the next thing. And amazingly, when you write some of this dumb, straight-ahead code, it often turns out that it was all that was required. It works great. When a second programmer comes back later and reads the code she might say, "The people who wrote this are morons. They just wrote a simple linear search here. This thing's ordered, so they could have done a binary search. They could have used a hash table here. Why are they doing a linear search?" Well, because a linear search worked. And when the other programmer looked at the linear search, she understood it in a minute.
·artima.com·
artima - The Simplest Thing that Could Possibly Work
The simplest thing that could possibly work
The simplest thing that could possibly work
I'm a programming child of the agile software movement. Just as I was starting out, Kent Beck published Extreme Programming Explained in 2000. It was a revelation. I had just enough exposure to Big Upfront Design and waterfall methodologies to appreciate what a monumental shift this was. Beck's methodology x-rayed the ills of the tradi...
Two expressions of that was the simplest thing that could possibly work and you aren't gonna need it.
What I've later also come to appreciate is how well these mottos pair with a cultivated strain of ignorance, if you want to tackle existing problems from first principles. It took being an outsider to J2EE to pursue Ruby on Rails. And being an outsider to JavaScript to chase Hotwire. And now, again, being an outsider to Kubernetes to sail with MRSK. It's easier to break the paradigms if you're not enmeshed in them on the daily.
·world.hey.com·
The simplest thing that could possibly work
Compute-Storage Separation Explained | Nile
Compute-Storage Separation Explained | Nile
Last week, I saw Gunnar Morling post a good question on Twitter:
With predicate pushdown, you send the query "where" clause down to the storage cluster. Each storage node filters the data and only sends a subset over the network to the compute layer. The difference in network traffic is meaningful and allows the system to avoid the network bottleneck. This solution is extra nifty because use the pros of the architecture, the fact that storage has its own compute, to solve the bottleneck that the architecture created. A bit of a Judo move.
So, hopefully you learned about the different meanings of compute/storage separation, why storage still has compute and why storage/compute separation doesn't conflict with predicate pushdown - in fact they are better together!
·thenile.dev·
Compute-Storage Separation Explained | Nile
Introducing MRSK
Introducing MRSK
It's finally time to talk about the technology we've been building at 37signals to leave the cloud with HEY and many of our legacy applications. We already run Basecamp on our own hardware, but we deploy it using an old tool known as Capistrano. This is the deployment tool we originally wrote at 37signals all the way back in 2005, when...
·world.hey.com·
Introducing MRSK
AI, ChatGPT, and Bing…Oh My
AI, ChatGPT, and Bing…Oh My
And Sydney too. Consolidating some thoughts on an exciting two weeks of surprises, advances, and retreats in AI.
5/ First, in the next 6–12 months every product (site/app) that has a free form text field will have an “AI-enhanced” text field. All text entered (spoken) will be embellished, corrected, refined, or “run through” an LLM. Every text box becomes a prompt box.
8/ This reminds me of the mundane example of how spell-checking moved from a stand alone feature to integrated into word processing to suites and then 💥 it showed up in the browser. All of a sudden it wasn’t an app feature but every text box had squiggles.
PS/ Some will immediately want to ban the use of a tool that is “wrong” or “removes humans”. You might think spell checking is trivial, but I had to get permission to use it frosh year to write papers. In High School I had to ask the principle to use it. just like calculators.
Consumers acquire productivity tools for the “worst case” not the simple or only case.
16/ Critically, the winning product is one that does the most *important* work, not the most mundane work. Ex, typewriters were good at filling out forms, but word processors were not. It took years before forms were a WP thing, but books, manifestos, etc. → WORD!
17/ What matters is doing important work, not simply automating cheap or easy work. The tools that win will generalize to the most important problems people face. The cost of adding additional tools or “point solutions” is much higher than savings.
where
19/ Better tools bring creation closer to where “human in the loop” adds most value. PowerPoint is an example of that. We all might bemoan “slides” but with a great tool (for *important* work) the most skilled/knowledgable will use the tools to do what was previously “support” work.
23/ Many seem to think LLMs will “eliminate” jobs or wipe out whole swaths of creative work. I think what will transpire will happen in two phases. First, all creation tools used will be augmented with LLM, and very quickly. Everyone will use these enhancements — human in the loop.
26/ Why things evolve this way is subtle. In the work environment, there is no shortage of “important” — everyone thinks their work is importnt. Every department. Every creative task. There are endless requirements or “needs” that will be thrown up as barriers to change.
This shows that even in highly domain specific and advanced tooling, that massive improvements do not simply make everyone’s job easier (or vanish) but add work for people — for experts — to do more, to create more, and most of all to be humans in the loop.
New tools don’t simply automate, they create work too
LLMs meet an important & necessary but not sufficient criteria for platform shifts. They don’t yet work all the time, boundary cases are plentiful. Recall from “Hardcore Software” first decade of PCs was literally “making them work”. The Internet? security, broken links, etc.
The winters keep happening because the technologists and punditry tend to take a single advance and generalize it. Like advances in programming languages, AI can indeed make one scenario easier and doesn’t need to make all scenarios easier/possible.
If LLMs simply use the crawling side of the internet without returning links then the incentives to permit crawling and ultimately linking go away.For the largest content sites that have subscriptions or can afford this it is ok. But as we saw with news, almost none can.
The browser *not* having the rendering power of Word was a feature. Lacking a security model was a feature. Lacking centralization was a feature. Broken links led to a whole series of inventions. The fragility of the PC compared to “IBM” unleashed innovation. And on and on.
·medium.learningbyshipping.com·
AI, ChatGPT, and Bing…Oh My
More Art than Science
More Art than Science
When I hear something referred to as "more art than science," I get excited. That means one of two things to me: 1. There's alpha in mastering it, or 2. There's even more alpha in formalizing it. First, there's alpha in mastering it. Mastery of a "more art than science"
·matt-rickard.ghost.io·
More Art than Science
Commoditization of Large Language Models: Part 3
Commoditization of Large Language Models: Part 3
Meta just open-sourced the weights of LLaMa, a foundational, 65-billion-parameter large language model. I wrote part one of "Commoditization of Large Language Models" (July 2022) when EleutherAI challenged GPT-3 with open-sourcing GPT-J. I noted that GPT-3 was likely trained with mostly public datasets. The LLaMa model by Meta is trained
·matt-rickard.ghost.io·
Commoditization of Large Language Models: Part 3
Taxonomy of Startup Risk
Taxonomy of Startup Risk
A few different looks at the dimensions of risk in early-stage startups. Not a sufficient framework for evaluating an idea (from the founder or venture capitalist perspective), but a good start in categorizing major risk vectors. Startups are high-risk and have a corresponding risk-return profile to show for it. But
·matt-rickard.ghost.io·
Taxonomy of Startup Risk
When prophesy fails
When prophesy fails
Remember back in November, when seemingly every pious public persona and their coteries announced final farewells on Twitter? All in the clear expectation that the service would sink any moment? Like they had seen the iceberg, and was sure – just sure! – that impact was imminent. Except, there was no iceberg, no impact, no sinking ship...
·world.hey.com·
When prophesy fails
Defensibility & Competition
Defensibility & Competition
Are early SaaS or AI companies ever defensible early? What is the basis for competition for a startup?
·blog.eladgil.com·
Defensibility & Competition
M&A as R&D in Technology
M&A as R&D in Technology
How tech companies have used acquisitions as a form of R&D
When doing these acquisitions, more so than really buying the existing “business”, these companies are buying a mix of:A talented team Experience, know-how, and passion in a specific areaA product that is unreleased or in its early stages but has not quite taken off as a business
While these days, it may seem that this form of acquisition is less valuable if they don’t come with networks of users since every product can be “replicated”, it still serves as a valuable way to acquire new technologies, knowledge, and personnel and short circuit the time to enter a new market and get up to speed in a new area.
·tanay.substack.com·
M&A as R&D in Technology
Which Customer Segments are Healthiest During the Downturn? by @ttunguz
Which Customer Segments are Healthiest During the Downturn? by @ttunguz
In CloudFlare’s latest earnings report, the management team highlighted the strength of enterprise buyers within their customer base. I wondered if this were broadly true. Do public software companies with largely enterprise customer bases benefit from superior growth to their peers with mid-market or SMB focuses? Enterprise & Mid-Market public companies have seen a relatively constant decline in growth rates through the last six years. SMB businesses benefited from a post-Covid surge when the US re-opened - a phenomenon that seems to abate with time.
·tomtunguz.com·
Which Customer Segments are Healthiest During the Downturn? by @ttunguz
How Rust went from a side project to the world’s most-loved programming language
How Rust went from a side project to the world’s most-loved programming language
For decades, coders wrote critical systems in C and C++. Now they turn to Rust.
It’s enjoyable to write Rust, which is maybe kind of weird to say, but it’s just the language is fantastic. It’s fun. You feel like a magician, and that never happens in other languages,” he says. “We definitely took a big bet—it’s a new technology.”
·technologyreview.com·
How Rust went from a side project to the world’s most-loved programming language
Behind the Scenes with React.js: the Documentary
Behind the Scenes with React.js: the Documentary
The first-ever documentary about the story of React has premiered on YouTube. I sat down with the movie’s creator, Ida Lærke, for a behind-the-scenes look at how the movie was made.
·newsletter.pragmaticengineer.com·
Behind the Scenes with React.js: the Documentary
We stand to save $7m over five years from our cloud exit
We stand to save $7m over five years from our cloud exit
Since declaring our intention to leave the cloud in October, we've been busy at work making it so. After a brief detour down a blind alley with an enterprise Kubernetes provider, we found our stride building our own tools, and successfully moved the first small application out of the cloud a few weeks ago. Now our sights are set on a t...
·world.hey.com·
We stand to save $7m over five years from our cloud exit
Amdahl's Law and Optimization
Amdahl's Law and Optimization
Amdahl's Law is a formula that helps to estimate the maximum speedup that can be achieved by parallelizing a program. It's intuitive and practical. The equation is fairly simple: Speedup = 1 / ((1 - P) + (P / N)) Where: * Speedup is the improvement in performance that can be achieved by parallelizing the
·matt-rickard.ghost.io·
Amdahl's Law and Optimization
Why Python Won't Be the Language of LLMs
Why Python Won't Be the Language of LLMs
Python has long had a monopoly on data workflows — everything from data analysis to data science to machine learning. Anything that can't be done in SQL is done in Python. But Python won't be the language for LLMs. Why did Python become the language for data workflows? * Cross-platform. Data analysts
·matt-rickard.ghost.io·
Why Python Won't Be the Language of LLMs
Nix Is Fighting The Last War
Nix Is Fighting The Last War
Nix solves the problem of hermetic Linux environments. Your tools and configuration are deterministically sealed and packaged – always giving the same result. This was a real issue in the time of golden image machines when Linux distributions were hand-crafted to perfection. But that was the last war. Just as Nix
·matt-rickard.ghost.io·
Nix Is Fighting The Last War
Interfaces for Uncertainty
Interfaces for Uncertainty
The last public data point for Google's "I'm Feeling Lucky" button was in 2007 (less than 1%). On the search engine results page (SERP), around 28.5% of users click the first result (source). Algorithms that aren't perfect, or problems where there isn't always a "right" answer need interfaces for
·matt-rickard.ghost.io·
Interfaces for Uncertainty
Carrying a Dozen Problems
Carrying a Dozen Problems
Richard Feynman was fond of giving the following advice on how to be a genius. You have to keep a dozen of your favorite problems constantly present in your mind, although by and large they will lay in a dormant state. Every time you hear or read a new trick
·matt-rickard.ghost.io·
Carrying a Dozen Problems
Blurring Language Boundaries
Blurring Language Boundaries
The advice goes: pick the programming language that you already use or the one that makes sense for your domain. If you were doing anything in data, you would probably choose Python for libraries like pandas and numpy. If you were doing something with containers or Kubernetes, you might choose
·matt-rickard.ghost.io·
Blurring Language Boundaries
3 Deno
3 Deno
Deno is a relatively new JavaScript runtime. I find quite interesting and aesthetically appealing, in-line with the recent trend to rein in the worse-is-better law of software evolution. This post explains why.
Although scripting and plumbing should be a way to combat complexity, just getting to the point where every contributor to your software can run scripts requires a docker container a great deal of futzing with the environment!
Deno doesn’t solve the problem of just being already there on every imaginable machine. However, it strives very hard to not create additional problems once you get the deno binary onto the machine. Some manifestations of that:
Deno comes with a code formatter (deno fmt) and an LSP server (deno lsp) out of the box.
Similarly, Deno is a TypeScript runtime — there’s no transpilation step involved, you just deno main.ts.
Deno does not rely on system’s shell. Most scripting environments, including node, python, and ruby, make a grave mistake of adding an API to spawn a process intermediated by the shell. This is slow, insecure, and brittle (which shell was that, again?). I have a longer post about the issue. Deno doesn’t have this vulnerable API. Not that “not having an API” is a particularly challenging technical achievement, but it is better than the current default.
directory with more indirection. In contrast, Deno runs the scripts in deno_task_shell — a purpose-built small cross-platform shell. You no longer need to worry that rm might behave differently depending on which rm it is, because it’s a shell’s built-in now.
These are all engineering nice-to-haves. They don’t necessary matter as much in isolation, but together they point at project values which align very well with my own ones. But there are a couple of innovative, bigger features as well.
The first big feature is the permissions system
The second big feature is Deno’s interesting, minimal, while still practical, take on dependency management.
·matklad.github.io·
3 Deno
A little bit of slope makes up for a lot of y-intercept
A little bit of slope makes up for a lot of y-intercept
A little bit of slope makes up for a lot of y-intercept - slope_vs_starting.md
Another example is hiring. Before I came back to academia a couple of years ago I was out doing startups. What I noticed is that when people hire they are almost always hire based on experience. They're looking for somebody's resume trying to find the person who has already done the job they want them to do three times over. That's basically hiring based on Y-intercept.
·gist.github.com·
A little bit of slope makes up for a lot of y-intercept