Bill Atkinson...who was by far the most important Lisa implementor, thought that lines of code was a silly measure of software productivity. He thought his goal was to write as small and fast a program as possible, and that the lines of code metric only encouraged writing sloppy, bloated, broken code.
...He was just putting the finishing touches on the optimization when it was time to fill out the management form for the first time. When he got to the lines of code part, he thought about it for a second, and then wrote in the number: -2,000.
I'm not sure how the managers reacted to that, but I do know that after a couple more weeks, they stopped asking Bill to fill out the form, and he gladly complied.
What you are looking at is an scroll-locked iframe that links to a quote I picked out of my blog post “Notes on Comparative Psychology.” You can use Open Transclude anywhere you can drop an <a> tag on your own site.
Open Transclude:
Works anywhere on your own domain
Compatible with most static site generators / templating engines
12 lines of HTML, 80 lines of SCSS, 22 lines of JS (4.5 kb total)
Has 0 dependencies — this is native web technology
Open Transclude is extremely simple, and the heaviest part of the code is the CSS, which you can simplify at your whim. That’s why I am referring to it as a UX pattern. This is not a protocol. The code is really a commodity. What’s interesting about it is the idea and the design, and this is just one viable implementation! Feel free to adapt it however you like.
The principal improvement over a block quotation is sense of context.
No matter how fancy your Figma file is or how beautiful and lovingly well organized that Storybook documentation is; the front-end is always your source of truth. You can hate it as much as you like—all those weird buttons, variables, inaccessible form inputs—but that right there is your design system.
...being honest about this is the first step to fixing it.
A rule of thumb is that the importance of a blog in your feed reader is inversely proportional to their posting cadence. Prioritise the blogs that post only once a month or every couple of weeks over those that post every day or multiple times a day...Building up a large library of sporadically updated blogs is much more useful and much easier to keep up with than trying to keep up with a handful of aggregation sites every day.
Recently I’ve had a few opportunities to use code to create design. In two of my bigger projects at The Wall Street Journal, writing code has led to new ideas. Problems that typically plague early designs — e.g. “how does this look with real content?” — are easy to solve. By exploring visual ideas directly in code, I’ve started to see the amazing potential of code as a design tool.
A succinct way I’ve framed the split is that a front-of-the-front-end developer determines the look and feel of a button, while a back-of-the-front-end developer determines what happens when that button is clicked.
On one side, an army of developers whose interests, responsibilities, and skill sets are heavily revolved around JavaScript.
On the other, an army of developers whose interests, responsibilities, and skill sets are focused on other areas of the front end, like HTML, CSS, design, interaction, patterns, accessibility, etc.
So much about [Gerhard Richter's painting process] reminds me of designing and building for the Web: The unpredictability, the peculiarities of the material, the improvisation, the bugs, the happy accidents. There is one crucial difference, though. By using static wireframes and static layouts, by separating design and development, we are often limiting our ability to have that creative dialogue with the Web and its materials. We are limiting our potential for playful exploration and for creating surprising and novel solutions. And, most importantly, we are limiting our ability to make conscious, well-informed decisions going forward. By adding more and more layers of abstraction, we are breaking the feedback loop of the creative process.
"If you develop a program for a long period of time by only adding features but never reorganizing it to reflect your understanding of those features, then eventually that program simply does not contain any understanding and all efforts to work on it take longer and longer.” — Ward Cunningham
macOS software that adheres to craft — Things or Carbon Copy Cloner or BBEdit or Sublime Text (which, despite not being “native native” feels so solid and so responsive you’re willing to overlook its quirks) or Bear or Alfred or iA Writer or Keynote (arguably one of the best pieces of macOS software of all time) or anything by Panic, heck, even Terminal or Quicken (which, against all rational expectations is just a joy to use)5 — exists in troves, the existence of such proves to the Slacks or Twitters or Adobes of the world that it’s not impossible nor rare to produce craft-oriented software in service to user fluency, and still make a profit.
In fact, there’s a business case to be made for being craft- and fluency-focused. We’ve seen entire companies with business models that could be summarized as “Bloat-Free X” emerge in recent years. Affinity is bloat-free Adobe. Install Adobe Creative Cloud on your laptop and marvel at the no fewer than a dozen processes whirling around in the background for unknown purposes. It’s no surprise Affinity Photo and Publisher and Designer have taken off. Sketch’s main feature for many years was simply: Not Adobe.
And the web! When you care — when you really give a shit — the web is awe inspiring. I still can’t believe Figma is web-native (also born from the Not Adobe camp). That an application can feel so powerful, so fast, so well-crafted and be fully web-based should be a kind of lighthouse-archetype for all other sites lost in a sea of complexity and muck and unnecessary frameworks.