Understanding ChatGPT Work(simonwillison.net) |
Understanding ChatGPT Work(simonwillison.net) |
- Pepole figure out that having a general purpose not-just-coding agent actually works with newer models, openclaw and its buddies spawn
- How do you get this to the general consumer? Offer integration with services even stronger than before and give the chat a cloud vm with persistent storage as one path, claude computer use as the other.
- - Perplexity computer releases, and they slowly start nudging users from plan-included chat usage to more stongly limit using or even extra credit usage billed computer tasks
- - chatgpt and other main labs do the same with work, but they can afford to subsidize it a bit more still by just having it use codex quota
We'll see where it goes from here, but i do see the general trend of pushing people towards strongly billed features without explicitly taking away the previous chat experience because that'd make them look bad
That's what the Library is for. You can use GitHub to keep it outside ChatGPT. GitHub also provides a Chat-based option for sites.
Some people have an agent-driven browser that controls the ChatGPT web UI and exposes it as a chat view in a custom harness or pi for normal chats (with image generation, file input capability).
So if I'm looking to get serious work done, I might want to reach for a less intelligent LLM? What's the idea here?
Luna can also be quite a bit faster.
Also follows the Grok Bot of an advanced computer use. OpenClaw for normies.
Mm, yes, normies who hang out in terminals and run curl|bash scripts to install services on their computer and such, typical "normie" activity...
"normies" don't know what OpenClaw, "AI assistant" or what anything else than "ChatGPT" is, and point them to the landing page of Grok/Claude and they'll say "Yeah, that's ChatGPT".
Claude app struggles in its UX navigation, they moved code/cowork/design a couple of times in app ui, but never confusing for users to understand what each of these three non-chat pieces does.
ChatGPT sub is so confusing, OpenAI must either hate users or don't have a real product manager.
—
My opinion is: We now have AI, this new amazing flexible tool. We can throw it at any problem. But in terms of document creation we have a choice between old fashioned siloed document formats (.pptx, .pdf, .xlsx, .docx, etc.) and a freshly rendered - slightly randomly styled - html site with some basic javascript within it. I think these combinations are odd and do not maximise the powers of AI.
I've been building something called SmallDocs [0][1] which is a new take on work documents. It's all Markdown, but it always renders (100% privately) on the SmallDocs site. This means the SmallDocs renderer can convert recognised Markdown combinations into powerful traditional document formats [2]. For example, we convert a ```cells block into an in-line spreadsheet you can export to Excel.
This gives an agent the ability to express itself with a great deal of depth and flexibility. For example, your agent can produce a single data analysis "SmallDoc" with text, charts, spreadsheets, etc. [3] I find that combining formats quickens the speed I can understand a topic.
I also believe a pre-determined rendering engine has a lot of advantages over a freslhy built HTML artifact. It allows you to build in lot's of useful defaults that the agent doesn't have to code from scratch. These can be small things, for example, every time your agent renders a Markdown table in SmallDocs you can instantly copy it as a CSV or a PNG. And these can be bigger things, such as a rich slides DSL with solid styling defaults, which saves your agents a lot of tokens and results in consistently attractive HTML slides [4]. (Slides can also be automatically exported to .pdf and .pptx.)
I've been at it for a few months, and am still working on the project. I am looking for feedback and open source collaborators. Thanks for reading!
[1] https://github.com/espressoplease/smalldocs
[2] https://smalldocs.org/blogs/what-is-a-smalldoc
[3] https://smalldocs.org/s/46fWiAyF77T9c7tqYwAQqp#k=j78ZEOOrgo8...
[4] https://smalldocs.org/s/QrmeWMsULGS871nXQYOacB#k=ubOHH9QtTWp...
(And something totally different, your agent can also use SmallDocs to walk you through code files: https://smalldocs.org/s/JsI_-tWSH0UpSd_YXxVLPm#k=G5jLCYA4JUX...)
> OpenAI could make this a lot less confusing
> Figuring this all out took way more work than it should have.
Welcome to a generic large corporation, where they spend billions on making a product, and $0 on checking if the product makes any sense to a real user.Exciting times.
I suppose people like me will be rarer and rarer as the years pass by.
Thankfully I am going to FIRE (by my own choice) soon.
For all the youngsters and people still in the rat race. Godspeed to you. Take control of your future. Shape it as much as you can, don't let others dictate it.
It gets the task done in 5-10 minutes. It's it bit slow since I'm not paying extra for ultrafast mode, but it gets the job done. Frees up the brain to do other tasks.
It's exactly like vibe coding but for computer tasks.
My experience feels like I'm in an Iron Man movie. I get up in the morning, I turn on the voice chat mode, and while I'm making my coffee I ask it to highlight any important emails I received overnight. I then babble to it a bit with my initial reactions to those emails, and tell it to draft responses based on my thoughts, which it does.
By the time I start work I've got draft emails to review and I've had time to think about the ideas a bit more, the upshot is that I'll get a day's worth of email done in 20 minutes and probably make better decisions than I would have otherwise. By no means does this eliminate my job, just make me better at it and more productive. I can get into the day's deep work sooner now.
Going into that two-way voice mode with all your Connectors available is a big part of the gain here, sometimes you just want to walk and talk through something. It seems you can't get both of those simultaneously in the mobile app yet and when you can that'll be a huge gain, like go take a walk in the garden, talk through your thoughts, the appropriate drafts and other artifacts are ready for you to finalize when you return to your desk. This stuff is honestly space age.
I don't have much experience with Claude so if it also has that two way voice mode and can use its version of Connectors on mobile while that's turned on, I should give it another shot.
IMO these tools introduce faux productivity while taking away your free time and making you work more.
The site uses Astro to hot load edits and so the exceptional Live voice model would use some filler words in response to me asking for an edit and before I knew it, the page had refreshed with the fix.
When people talk about things like OpenClaw and Hermes being a new operating system paradigm this is the sort of UX that comes to mind.
And simply conversing with it with my phone in my pocket and air pods on its the closest I've felt to a live conversation with AI ever.
Kudos to the voice mode and Live voice model teams.
Looking forward to seeing what Apple cooks up with their Private Cloud Compute and if anyone else takes up the same approach.
“very controlled” is disinformation.
One of the root causes most people are "sleeping", is most probably why we're here now: the feature is marketed in such a confusing way to the general public, that it takes a post on a personal blog to actually explain it.
ChatGPT has been suggesting Work in the middle of some intense working sessions. Finally, I took some spare 30mn to research exactly this on ChatGPT, no later than this weekend: what does Work have that Chat doesn't have?
It should be simple enough for someone using it for work. They say it's great, and I still need to set time aside (from my real work) to research how great it is?
Contrary to its name, "ultrafast" isn't faster than the rest, and many times slower than "max", as it'll "fork out" to a bunch of sub-agents and wait for them, + does extra "red-teaming" and more.
I think "ultrafast" is not referring to the speed of the "model" (harness in reality, as it's all the same model as "max") but rather how fast it consumes your usage limits.
I believe you refer to the "Ultra" mode that does what you say and it is also mentioned in the blog post, but I don't think the two modes are related.
He said "ultrafast" which has nothing to do with subagents. It's a new API tier where it runs on a different inference backend to get you faster token/s.
Or Codex from the ChatGPT app.
If you have supplied tooling on your system, you have access to all of this and more.
I think the idea is most people don’t have a machine up and available, nor maintain skills for interacting with their core services?
One thing that keeps me from adopting codex more deeply is the architecture around mobile access.
Claude Code makes this trivial /rc and you are done.
Codex requires you run the desktop app and additional authentication requirements. The result of this has been codex is almost always relegated to fleet worker rather than orchestrator.
I wonder if the emphasis on this work feature has something to do w the persistent hurdles to remote control if codex sessions.
> Codex requires you run the desktop app and additional authentication requirements. The result of this has been codex is almost always relegated to fleet worker rather than orchestrator.
I’m often using my MBP but also the Mac Studio remotely via the mobile app. What’s missing in your mind?
It also doesn't work at all in my experience. Same Wi-Fi, different network, screen on or locked with "prevent sleep", I just get randomly disconnected all the time.
It's both awesome and scary at the same time to realising that most AI these days can work on something like this that's official and tedious, and probably not screw up too much (or do better at it than some people with fat fingers).
That’s precisely why I don’t use it. LLMs are still not reliable enough for me to trust them with my actual system.
> people are sleeping on the ChatGPT Work/Codex
just in general. I find it to be far superior (imo) for all tasks atm. Claude just overdoes things in writing, coding, architecture, etc
OpenClaw demonstrated that there was enormous existing demand for general agent functionality, such that people would buy a whole Mac mini just to get access to this shape of tool.
If a botted reply is OK, why do they email you instead of the bot?
I get fantastic mileage of regular ChatGPT Plus chat connected to all of my public and private Github - I have about 900 repos - probably about 100 relevant ones. I can work from any computer/phone.
This workflow sort of happened over the last few months. Until now I was very hesitant to grant commit rights.
However, I am still afraid to give OpenAi full read/write access to my gmail.
Is there a way to give read and say draft only access to OpenAi? I do not want OpenAi sending emails on my behalf.
So yeh, is Work much better for that kind of thing?
So many tasks I need to do once, or just a few times ever, but they build up. While I'm not sure I'd use it for immigration forms specifically, that's the kind of task that's tedious and done rarely, so a dedicated tool doesn't help because who would be familiar with that tool and have it handy?
I would never send my passport details to OpenAI. That's a lot of trust you have on the tech and the company behind it.
I have no words seeing someone on a software engineering site recommend using it for personal data.
Which I created using this prompt in a fresh Work session:
> Build a site that lists every one of your tools - nearly grouped into categories - and for each one explain what it does. Try to exactly duplicate arguments and tool descriptions where possible. Design aesthetic should be technical docs, minimal flare
UPDATE: I had it add all of the available skills too. This solved a mystery: I didn't see a tool for controlling the headless browser. It turns out that's handled by a skill that tells is how to run the browser via its Node.js REPL tool: https://codex-tool-reference.simonw.chatgpt.site/skills/cont...
> ChatGPT Work combines all three!
The ChatGPT Work model would actually feel safer to me if they created a privacy boundary between the container-managing agent (browser operator/VM manager/code runner/etc) and the chatbot agent. Instead of me not typing privacy-sensitive things to the chatbot to avoid having them in my history, the chatbot would keep my history private from the container agent except on a need-to-know basis. That would remove the "access to private data" from the container's trifecta.
Not perfectly safe of course, just safer. Particularly if I could review the logs between the two agents.
ChatGPT Work is trying to reclaim some of that magic that Claude Cowork affords its users that is so hard to explain succinctly.
I have been of the opinion for the last 6 months that this product category* is going to be something that sticks. I really think that OpenAI and Anthropic have totally dropped the ball on getting their respective desktop apps in front of the enterprise business user cleanly. Both jumped early, and tried to retroactively fix their jump by combining MVP (Work, Cowork) into their existing app.
By now, my suspicion is that the business user has baked into their mind 'that claude thing is just the chat app I copy-paste stuff out of, it was kinda annoying'. OAI+Ant really need to reset, and shamelessly relaunch ChatGPT/Claude Desktop as a new product- and market the hell out of it as some shiny new solution to everything.
I'll also say that MCP was (considering stateless now) a massive mistake. Not that MCP doesn't have it's niche, but it completely dominated the airwaves of AI for enterprise. People found it confusing, and it wasn't adopted by biglabs in a low-friction way. I recall distinctly late last year, neither had a client that would support local MCP servers- even though the buzz was peaking. And now, Anthropic still doesn't have great support- their OAuth flow is straight up broken, and they even collide with MCP using their own terminology (connectors)- which overlaps in a very weird way with built-in and 3rd party connectors. It's all very weird, and very anti-enterprise. I don't know where OAI is positioned on MCP support, because my userbase is 99.5% Anthropic rideordie, and I don't want to live with a client I can't manage**.
* That being desktop app for harness with shell tool + scheduling + agent-per-project/directory. At some point within that 6 months I've also lumped in browser use, and to a lesser extent, computer use, as must-have features.
** Referring to the MCP client ChatGPT Desktop uses. It's probably fine, but if I hit API direct, I can actually control how the harness facilitates the calls. Look how many GH Issues there are for MCP client things on OAI's end.
The right fix is to set real boundaries and limit agents access. We should never trust it won’t touch forbidden places.
Basically I find this naming work local vs work cloud confusing, users won’t know if it’s touching their files in the sandboxed cloud or a local one
It IS true of ChatGPT Work (Local), accessed via the ChatGPT desktop app.
I agree with you: Expecting non-devs to understand that distinction - especially when these features are visually indistinguishable from each other - is entirely unreasonable!
On this principle I’ve built Codexify[1], a connector that provides a Codex environment to ChatGPT Chat. This enables unlimited 5.6 Sol high/xhigh usage on the Plus and Pro plans as well as access to the 5.6 Sol Pro model (which is not available in official Codex).
Maybe the Sol Pro is not that great anymore, considering the token vs output balance.
Once you have started working seriously with these tools, it stops being so easy to switch. What are the open-source alternatives to this? How usable are they for non-technical users?
Another comment I have about this is that unfortunately, there is always an LLM in the loop for each prompt. I feel LLMs should automate themselves away, meaning that for repetitive tasks, user prompts should go directly to deterministic, previously built scripts. This would be both a better user experience (more predictable), and a lot cheaper to operate.
OpenClaw, Hermes, and a dozen other Claw-like tools.
They aren't trivial for non-technical users to setup, hence the demand for systems like Claude Cowork and ChatGPT Work and Grok Bot.
Having both a "Codex" vs "ChatGPT" and a "Chat" vs "Work" split, with some conversations appearing in multiple of these places, really doesn't help.
Also, there's still "Codex Cloud", much older and entirely separate from all of this (I think it might even predate Codex the local app?), and this also seems to live in the "Codex" parent tab on a project by project basis.
None of this seems to be documented either. I literally had to start a "Hello World" project in each category to figure out what's going on.
The things it can't do is use the embedding or TTS models as a part of its quota, which is sad. It also cannot read a video.
Perhaps they’ve updated this since the author last checked, but the allowlist in Claude cloud environments is fully customisable and there is also an unrestricted option. There are a few restrictions you can’t seem to get around - eg all traffic via http, no connecting to port 5432.
I'm a bit confused. Why not just Codex...?
ChatGPT Work Cloud gives you that computer as part of your existing subscription.
fyi Claude Desktop lets you add additional domains in Settings, which are then available to Claude Code.
For that reason, I've switched from using CC in the CLI to use the Desktop app. (there's probably a way to configure CC CLI as well but I haven't looked for it).
So it's not completely headless.
But when I tried it, the remote control completely froze after a few seconds.
Why did it even need to be a separate thing?
So this seems more like a branding thing to me? Oh if you want to do serious work you need the paid subscription!
You can wire such things up to an agent yourself in a bunch of alternative ways if you like - run OpenClaw, Hermes, or leave a computer running somewhere with Codex Remote.
For a lot of people though the Work that comes with their existing paid ChatGPT subscription is a more convenient option... if they can figure out what Work does and how to use it.
What surprised me the most was, when I tried uploading a book into the "project context" on Claude, the RAG indexer crashed, but Claude used a bunch of Unix commands to reverse engineer the file format and grep the book manually...
That's correct, and also why ChatGPT Work is DOA for me personally.
I need 100% of my Codex budget for Codex.
Too bad, it would have been nice to have a few extra features for the chat interface.
I still might try ChatGPT Work sometime if there was some feature I couldn't get from Shelley.
You can get it to run scripts direct from the prompt.
Try...
Run the script below in your sandbox
message="I'm running in a bash sandbox"
printf '< %s >\n' "$message" printf ' \ ^__^\n' printf ' \ (oo)\_______\n' printf ' (__)\ )\/\\\n' printf ' ||----w |\n\n'
printf 'User: '; whoami printf 'Host: '; hostname printf 'System: '; uname printf 'Folder: '; pwd printf '\nWorkspace:\n' tree
I have some more examples here -> https://bionic-gpt.com/architect-course/ai-computer/sandboxe...
- *9 top-level orchestration tools*: the `functions.` and `collaboration.` calls available directly to the model. - *83 operations inside `functions.exec`*: these appear on its global `tools` object. - *92 callable tools/operations total* under that counting method. - *10 execution helpers* inside `functions.exec` documented separately at the end. They are helper functions, not independent tool calls.
The non-vomit version of it is my (entirely human written) OP: https://simonwillison.net/2026/Aug/30/understanding-chatgpt-...
The same reason that one would want to know how an LLM works or what the Win32 API looks like.
Either to make better use of a tool, to build our own tools that follow design patterns we learn when we look at the work done by others, or even to learn what not to do.
Those are just some of the numerous reasons a person might be interested to peek under the hood.
If anything, I'd guess OpenAI is going to clamp down this transparency in the future.
So this may end up being a final rare glimpse into how a tool like this works for those of us who want to understand how the sausage is made and learn from it.
I don't really understand what Claude Cowork is. Sometimes I use it instead of plain Claude Chat for tasks that "feel big"? And when I've done that I've felt this was the right choice. But until I actually had that session up and running I would not be able to articulate what Cowork is or enumerate any specifics of how I expected it to behave. I just thought "maybe this is a Cowork task?"
(I have only used the cloud one. My understanding is the the local app is essentially Claude Code but for non-coders, which matches the description of the OpenAI equivalent).
Even as someone who's now used it a few times I wouldn't have been able to articulate as many details as Simon W does in this article, it's a weirdly shaped product structure.
Cowork is like crack cocaine to nearly every exec I've seen use it from the moment they put in an email search / summary query.
I see it first had across all my non-tech friends: their companies already used Teams/Sharepoint or Google Suite. Those added AI capabilities with some minimal vetting/setting by the org. Data retention and contracts, the hard parts, were already handled because those are new features/extensions of the same products they had.
Comments like yours seem to be screaming "HN bubble". The real world doesn't care and will wait for Microsoft/Google to offer the same stuff, hell, even HN apparently barely knew what Claude and OpenAI work offerings did till today.
Today I learned that you only need two words to open up a new circle of hell.
2. Open it and start a session in "Work" mode.
3. Prompt something like "Create an Android app that does XYZ, provide it as APK".
4. Download and install the APK.
5. Keep on iterating on the app by prompting stuff like "Now add feature XYZ" or "XYZ doesn't work, fix it.". It then always creates a new APK which you can download and update your installed app with.
Amusingly, I started walking recently at a local track. One day while I was walking, I thought, "I should create a little web app for a counter to keep track of my laps." So I asked Claude Code and it whipped up a nice little mobile app with a big "+1" button, a reset, the whole deal, all within less than a lap and a half. Great! A lap later I think, "I should have it keep track of the time it takes me to walk each lap."
As I'm typing out the description, I realize, "You dumbass, you're describing the built-in chronograph feature of the Clock app!" So I just switched to that.
If something in the UI of the app looks weird, you simply take a screenshot and ask ChatGPT to fix it. Or what I also like to do is add a logging functionality to the app. If something goes wrong, I then just upload the log to ChatGPT so that it can fix it.
Personally I can't remember the last time I needed an app and there weren't already several options to choose from.
Also Big +1 that they need to do a clean launch, marketing push, etc. Even if it is just a reskin, having dedicated branding, a strong privacy promise, random vague-posted fluff around "enterprise-ready", and a "Contact Us" pricing that gets you SSO for $150/u/mo. There is too much baggage with the chat app.
I feel the same using Claude Code on mobile. Or Claude Design, which has to go through mobile safari. Give me an app whose interface is optimized for product/dev. Yes, I should be able to do anything on each, but I have specific needs in different contexts. That's what "products" are.
Data, contracts, procurement are the blockers for enterprise, not features.
Big companies will use whatever AI tools Google or Microsoft because they are already on the Microsoft/Google suite.
No amount of shiny new tool can compensate here, by the time somebody to buys it, months pass and those two companies will have it anyway.
OpenAI really is the worst at naming stuff.
Ah yes, I guess the portmanteau confused me and I assumed they were talking about "Ultra" the "reasoning effort" (which it isn't), rather than the "fast mode" which supposedly gives you priority over "non-fast mode requests". Although in practice, counter-intuitively, sometimes being in non-fast mode gives you faster replies than fast-mode, haven't got a feeling for why/when though.
the providers are actually still training on data, using a concept called Generate Data Refinement that thye've publisehd: https://trustedrouter.com/blog/they-are-still-training-on-yo...
I agree with your comment, but I'm curious about this term as it seems anachronistic but maybe there is a new use?
Do you know if free tier gets ChatGPT desktop app access to Codex and Work? And if that Work access is local-only or includes Work Cloud?
We'll see how it goes, but the product in question (Conveyor) is a downloadable tool that's got deliberately unobfuscated bytecode in it, with lots of detailed logging. AI is perfectly capable of reverse engineering it and in fact this bug report contained such a reversing. So even if someone tricks it into revealing source code or similar, they won't get anything that isn't already obtainable via other methods. This isn't a SaaS where security through obscurity might conceivably help, or where the codebase might contain credentials by mistake.
It's a developer tool and this level of trust helps customers debug their own problems quickly. If someone wants to break the law, they'll get a legal answer, but it's never been a problem.
The bot in question cannot write to master though, only open up pull requests from its own isolated repository.
It's a bet on modern models being more resistant to confusion attacks than they were before. The harness setup also makes it very clear to the model where input comes from. This might be a bad bet, but if it's not, then it's helpful for customers to get help right away.
OpenAI Codex = Claude Code
OpenAI Work = Claude Cowork
For example, say you deal with 100 emails a day. 90 of those are pointless busy-work and 10 are meaningful. It takes you all day. Now you begin using an LLM. You still have to separate the 90 from the 10 but then have the LLM reply with the 90 and leave the 10 for yourself because they are important and you have to make sure they’re done right. It now takes you a fraction of the day, so what happens is you start taking on more and more email¹. You’re now at 300 a day, with 270 busy-work and 30 meaningful (same ratio as before). Then one day your LLM breaks (ran out of tokens; a model was retired; bad connection; your powerful local machine broke down) and now you’re flooded by email and don’t even have time to separate the bad from the good, let alone prioritise and reply. If you had instead fixed the busy-work problem, you’d have been fine.
¹ Let’s be real: Work expands to fill the allotted time (Parkinson's Law). Those selling increases in productivity always promise more free time but what always happens is more work.
Good luck trying to bring this through your typical bigco process management. Either your initiative dies, having gotten caught in a spider web of red tape, or it succeeds but now half your colleagues are angry at you to the point there's a non-zero chance of you getting beaten up, because now they have to do actual work or leave the niche they have made themselves comfortable coasting in for 20 years.
Office politics is even worse than actual politics.
Not everyone works for big corporations, and of those who do some work in departments with sensible bosses where they can make some change.
As an exaggerated example, we could also say “one way to resolve issues in a community is to gather the people involved and have them talk through their issues in a room with an experienced impartial mediator to help guide the discussion” and then have someone reply “good luck trying that at a maximum security prison where inmates are constantly confined to solitary and beaten by the officers”. Yeah, no shit. You have to adapt your solutions to your environment, but that’s no reason to dismiss a general starting concept.
Half of her organization has just a calendar filled with meetings.
And without meeting the organization would find that you only really need a third of the people, and you would even likely increase the overall output.
Many time wastes are just designed to make people busy, not productive.
This gent can Minesweep his extra free time and not tell his bosmang "I finished my day in 20 mins, what else you got?"
I appreciate your comment honestly, the
Those selling increases in productivity always promise more free time but what always happens is more work.
But the real is real, so now what? Better faster AI? Just curious, replying in good humor. Cheers.
Imagine you could get Elon to answer your emails. Is that perfectly interchangeable with any other human?
We're in the "fuck it we ball" era.
Not even the many reports of prompt injection and takeover due to IA misfeatures can cheer me up anymore.
It is all incredibly sad.
Oh hey, I know this one! It’s humans and a phishing test, they’ll click on all the links and enter information without checking the domain properly!
Personally, I’d like systems that aren’t open to attack and can be depended upon. But it seems like nowadays NOTHING can be trusted - not OSes (recent Qubes OS exploit, not even mentioning others), not any software written in languages without memory safety, not even the ones with (Log4j comes to mind), not the packages in many package managers, not other humans and sure as hell not the token prediction machines. What a world.
We all probably live with a 0.XX% chance of getting pwned any given day.
Clearly you feel alarmed, but it's important to base these "alarm" feelings on actual evidence and real concrete proof of something being bad. You clearly don't have a proper understanding of the exploit, so please take a moment to re-read what actually happened and how it would be exploited in practice, particularly the "the scope of this attack is smaller than it sounds" comment chain: https://news.ycombinator.com/item?id=49496918
Overall, I agree with you though, and it's a healthy perspective to be safer rather than sorrier, so living with the assumption that getting pwned any day is a non-zero chance/risk is probably the best approach and what I personally do too.
It makes sense as humans that we do many things to simplify things or even eliminate them in order to save energy and avoid stress, and we should be careful to recognize a need for balance while still working towards some greater goal, purpose, or good.
Even so, much like kerning, once you are aware of it, it is painfully difficult to ignore.