10 interesting stories served every morning and every evening.
In May 2022, someone posted to Hacker News Bartosz
Ciechanowski’s
blog post
explaining how mechanical watch movements work. Since then, his blog has been my absolute favorite corner of the Internet. His posts are not just well written and easy to follow, the accompanying interactive illustrations are magnificent.
The first illustration in his blog post about mechanical watch movements allows you to “explode” a ticking mechanical movement and rotate it to inspect its every component from any angle. I owe my foray into the hobby of watchmaking to Bartosz, but that’s not what this blog post is about. Instead, I want to scratch an itch I’ve had for years now: How cool would it be to hold an exploded view of a real mechanical watch in your hand?
Screenshot of the exploded view render from Bartosz
Ciechanowski’s
blog post.
I figured that surely, someone has had this idea and built it before. On eBay you’ll find cubes of resin embedding various random components from mechanical watches, but they are typically sold as “steampunk art” and bear little resemblance to the proper assembly of a mechanical watch movement. Sometimes, you’ll find resin castings showing every component of a movement spread out in a plane like a buffet–-very cool, but not what I’m looking for. Despite my best efforts, I haven’t found anyone who makes what I’m after, and I have a sneaking suspicion as to why that is.
Building an exploded view of a mechanical watch movement is undoubtedly very fiddly work and requires working knowledge about how a mechanical watch is assembled. People with that skillset are called watchmakers. Maker, not “destroyer for the sake of art”. I guess it falls to me, then, to give this project an honest shot.
…how do you build such a model?
Here comes my favorite part: jumping head-first into a project requiring a set of skills I don’t even know exist, let alone possess, following a process that develops as the project evolves. So how would one go about building a real-life exploded view of a mechanical watch movement?
The first thing to consider is what type of mechanical watch movement to “explode”. Although he doesn’t explicitly say, I think Bartosz Ciechanowski’s blog post is based on the ETA caliber
2824-2 mechanical watch movement (or one of its many clones, such as the Chinese PT5000). This is a very robust and popular automatic (self-winding) mechanical wristwatch movement found in many watches. It’s considered one of the all-time “workhorse” movements of the industry. I highly encourage the curious reader to check out this YouTube video
of a very skilled and equally witty watchmaker servicing a Hamilton watch featuring this exact movement. The video will also reveal how many absolutely miniscule components make up the ETA-2824, making it less than ideal for my initial prototyping. A larger and simpler movement would be much better.
Luckily, in the late 1800′s to early 1900′s, many people carried a pocketwatch about their person. However, as smaller wristwatches gained popularity among men, beginning around the first world war with trench watches, pocket watches lost their value as timepieces. Many were melted down to reclaim the gold used to case the movement. Today, you can find gorgeous, hand-engraved movements from the turn of the 20th century on eBay
for next to nothing.
Pocketwatches are the simplest mechanical watch movements out there: they typically don’t have any date complications, aren’t self-winding, and usually don’t even have a central seconds hand–-that’s a relatively modern feature. There’s a reason budding watchmakers start out practicing on pocketwatch movements.
Now for the hard part: How do you suspend 50-100 tiny components to form an exploded view of the assembly?
A beautiful early 1900′s pocketwatch movement from eBay. $20 for a piece of horological art.
The model I’m planning to build must stand up to being handled, which means it must be solid. In turn, that probably means that I need to cast my components in clear epoxy resin. My first idea was to build the exploded model up, layer by layer, letting the resin cure between each layer. To save time, I experimented with clear resin that cures when exposed to UV light. There are several reasons why this did not work:
The resin I purchased ended up with a heavy yellow tint after curing.
My puny UV flashlight took forever to cure a pour even 1 mm deep.
The seams between layers are very visible.
The first two problems can probably be solved by throwing money at the problem, but the last issue seems to be a problem with varying indices of refraction throughout my casting. The resin art community is well-aware of this problem, and the suggested solution is to pour the next layer of resin before the previous layer has fully cured. This supposedly helps the two layers fuse, and should make the transition between layers much less pronounced. Unfortunately, UV resin seems to cure from the outside in, meaning I needed to use “regular” two-part epoxy instead.
To achieve the effect I want, I need around 20 layers for a regular pocket watch movement. If I were to cast each layer in a transparent container, adding components and epoxy as the previous layer was half-cured, I would be doing nothing else for a solid week. Instead, I figured my best bet was to cast all 20-or-so layers at once, and stack them together once the epoxy was semi-cured. So, my next project was to order some casting silicone and cast myself a mold suited to casting thin disks of clear epoxy. A baking tray studded with poker chips formed the ideal mold for casting the silicone.
My resin disks solved problems 1 and 2 above, but problem 3 is still unsolved. In addition, this was a very messy and challenging way to cast resin: the half-cured disks are floppy, resin runs everywhere and bubbles get stuck between the layers. I bought a small vacuum chamber to combat the bubble issue, but escaping gas weaked havoc on the disks of resin. I learned enough about resin castings to finally realize that layered casting is not the way to go.
1st attempt: embedding some nails in layers of UV resin.
2nd attempt: Embedding more nails in disks of clear resin in a silicone mold…
It took a while to accept that the only hope I had was to cast the entire model at once. This is difficult because I need to somehow suspend each tiny component in a way that is robust enough for me to pour resin all over it and then pull out any air bubbles.
Scarred and burnt by resin’s index of refraction, I went looking for very thin rods of plastic or acrylic that I could cut to length and glue my components to. Fishing line fits the bill. Specifically, monofilament nylon leader used in fly fishing. It comes in many thicknesses, has an index of refraction very similar to epoxy resin, and is cheap. The only major challenge with using fishing line is that it “remembers” its spooled shape, so every segment I cut off has a slight bend to it. I was able to remedy this somewhat by stringing it repeatedly across the grill pan in my oven and baking it at 150°C (300°F) for an hour or so. When done, the middle segments are reasonably straight and significantly stiffer than what I started with.
The assembly process actually resembles “proper” watchmaking a lot. Of course, tweezer control and steady hands are important. But applying tiny drops of CA glue to components with a pinhead is a lot like applying oil to bearing surfaces and jewels. I just find it amusing to do it with glue instead of oil–-CA glue being the complete
opposite of a lubricant.
Armed with a pair of helping hands and a set of self-closing tweezers, I found the process of building up the exploded model of a scrap watch movement to be very satisfying.
Monofilament fishing line maintains the distance betwen components. A jig holds everything still while the CA glue hardens.
At this point I’ve tried a number of different epoxy resins claiming to cure crystal clear. As far as I can tell, they all turn out appreciably clear. Their main differences are viscosity, cure time and how much air they trap when mixing. Some resins claim to expel bubbles when curing. They manage this to some extent, but to get completely clear castings you either need a vacuum chamber to pull out all the air from your cast, or a pressure chamber to completely squash any pockets of air. I went for a vacuum pump because it’s a fun thing to have around (boiling water at room temperature doesn’t get old). Another benefit of the vacuum pump is that you don’t need to leave your cast in the chamber for the entire cure time. My castings have a lot of voids that love to trap air, and the vacuum chamber does a good job of pulling out the trapped air.
My casting method goes like this: Mix enough of part A and B of your resin to fill the mold plus 10–15 %. Mix thoroughly for 3 minutes. Pour the resin into another mixing container to ensure that no unmixed resin is stuck to the walls of your container. Use a fresh stirring stick, and mix for another 3 minutes. Pull the whole container under vacuum (I manage around -0.96 bar) and leave it there for 30 minutes. Depending on your resin, the froth may very well overflow your mixing container: cycle between pulling a vacuum and letting air back in a couple times to pop most of the bubbles.
Now pour the resin into the mold and go through the vacuum process again. This time, most of the bubbles you’re pulling out come from around the embedment, not from air trapped in the resin, which helps keep the frothing down.
Some resins froth up to several times the liquid volume under vacuum! Make sure there’s enough room to accomodate this.
My first somewhat promising cast was in a borosilicate class cylinder. I won’t dwell on the looks of this, because I mostly wanted to experiment and answer a few burning questions with this prototype:
Q: How visible is the fishing line in the final result?
A: Not very! It’s visible in the right light, but I don’t
think I’m able to do any better.
Q: Does CA glue interfere with the resin in any way?
A: Most resin datasheets say that CA glue can interfere with
the resin’s curing process, but I can’t tell from this test.
A: Definitely not. Light refracts on the curved cylinder
surface making it difficult to understand the geometry inside,
defeating the purpose of the model. Cast in a cube.
A week or so later, the cylinder shattered. Resin shrinks as it cures. On to the next prototype!
First prototype cast. Fishing line all but disappears in the resin.
At this point I have settled on a somewhat structured process.
Start with a clean, disassembled movement. For instructions on how to
properly disassemble and clean a watch movement, I highly recomment Mark
Lovick’s Watch Repair Course.
Assemble the train of wheels with their bridges and seize them by
depositing small amounts of CA glue on the pinions. Just like with the
watchmaker’s oil, a sewing needle with a flat spot is perfect for
picking up a small droplet of CA glue and depositing it where it’s
needed. Capillary action wicks it between the components. Less is more
when it comes to CA glue: the bond between surfaces is stronger when no
excess is used, and the cure time is around 30 seconds even without the
use of an activator.
I made a small jig for cutting pieces of fishing line accurately and
squarely out of a janky hand press tool.
Work starts on the train wheel side of the movement (often called the
watchmaker’s side) because that’s where most of the complexity lies.
While working here, the movement can rest in a movement holder. I attach
long strands of fishing line to the end of each of the bridge screws.
Self-closing tweezers hold the bridges in place above where they seat on
the mainplate, and the screw/fishing line combo is threaded through the
screw hole in the bridge into the corresponding holes in the mainplate.
More glue binds the bridges to the fishing line.
Subassemblies such as of the keyless works, motion works, balance
assembly, etc. can be constructed separately and fastened as a unit.
Small, flat components such as cover plates, intermediate wheels and cap
jewels each get their own short studs of fishing line. I dip the studs
in CA glue and place it near the center of mass of the component I’m
working on: the fishing line’s flat ends allows it to stand upright.
Before starting work on the dial side of the movement, it must be flipped
over. I transfer the assembly into the jaws of some tweezers and apply
closing force with a rubber band. The tweezers are clamped by “helping
hands” glued to a piece of cardboard which allows me to spin my work
around. Work continues similarly on the dial side. Finally, some thin
transparent nylon sewing thread attaches the mainplate to a pegwood stick
that allows me to suspend the whole assembly over a mold, ready for
casting resin.
Speaking of the mold: I bought some 2 mm thick 20x30 cm acrylic sheets.
Foamcore or wood could work as well, but I don’t want the vacuum pump to
pull air from the mold into the casting. I cut them into 7x10 cm
rectangles and lined them with “epoxy mold tape” (fancy packing tape
that epoxy resin does not bond to). Then I used some Tec7 construction
adhesive to form a cube.
Prototype #2 shows a lot of promise! It’s far from perfect, though. Here
are some of the things I’ll improve for prototype #3 in no particular
order:
I struggled with attaching subassemblies to the mainplate because I need to precisely control the distance between the subassembly and the target surface: too snug and the assembly ends up crooked, too far away and the glue doesn’t adhere properly. A proper lab jack (tiny scissor lift) might solve this, so one is on the way.
The resin shrunk a lot while curing, most likely because it overheated. I’ll focus on proper airflow for my next cast.
People noted that it’s difficult to see between the components, so I’ll “explode” the next model even more.
The hands are set to an invalid time. 10:10 is the way to go.
...
Read the original on fellerts.no »
I recently submitted my PhD thesis, and while waiting for the physical copies to get printed I thought I’d write about something you (hopefully) wouldn’t notice when reading it. I wrote it in Typst, not LaTeX. In this post I will talk a bit about what went well and what didn’t.
Typst (https://typst.app/) is a modern take on a typesetting language that I think has a real shot at dethroning LaTeX. I would describe the language as a mix of markdown and dynamically typed Rust, which may sound weird but is a really nice fit. Day-to-day document writing being markdown-like is very comfortable (certainly much nicer than littering your writing with \). The scripting language is powerful, well thought out, and makes it very easy to jump between code and typesetting. For example
This is bold text. The sum of [1, 2, 5, 8] is 16
In the rest of this post, I will talk about some of the things I liked and disliked about Typst while writing the thesis.
The thing that pushed me over the edge to try Typst for my thesis was a friend telling me his LaTeX thesis took 90 seconds to compile towards the end. I am far too easily distracted to tolerate 90 second compile times when I’m making small changes. The Typst compiler is fast, on small-medium sized documents it compiles fast enough to do live writing in the PDF preview. As my thesis grew beyond 150 pages, compile times dropped a bit. Clean builds take about 15 seconds, but it also does incremental compilation so for content changes, it is still nearly instant, for local layout changes it takes a second or two. Even for large global template changes, 10 seconds is a whole lot better than 90 seconds, and I am confident that being able to iterate on layout and style 9 times faster produced a nicer looking result in the end.
The Typst language is amazingly well thought out. Markdown syntax is nicer than Tex syntax for general writing, but what really shines is the scripting language. My biggest complaint with LaTeX as a language is that nothing is consistent. Every package defines their own little utilities for even basic things like if-statements. It feels like you don’t learn LaTeX, you learn each package individually. Typst on the other hand is a well-designed dynamically typed language. Being Rust inspired and me being a Rust user meant that it barely feels like I had to learn the language at all, I can just assume that I’m writing Rust. That’s not true as you get into more advanced things of course, but it feels like I know Typst in a way that I don’t think is possible with LaTeX.
This isn’t just philosophical, being able to script Typst is extremely useful. For example, a central part of my thesis is that there are a lot of hardware description languages out there, and I wanted to come up with a way to categorize them. Over a few years, I have collected them all with some metadata in a toml file (https://gitlab.com/TheZoq2/list_of_hdls/). Since Typst can parse toml, I could simply use that data to generate a figure to put the languages into my taxonomy:
Sure, it would be possible to do this in many other ways, but having it self-contained in the document is nice, and at this point Typst is one of my favourite scripting languages, so using it here is a no-brainer and something I did for pretty much all my data processing.
A modern language of course also comes with modern tools, a compiler with dependency management, a working language server protocol integration for editors etc. All that makes it even nicer to work with.
A few times I have tried to understand latex templates, and every time it has ended in frustration. I believe it took me longer to remove a header from our university presentation template than it did for me to write a new presentation template in Typst. Again, this comes down to the language being well-thought-out and consistent. This was also hugely advantageous when tweaking my thesis template the way I want it. Naturally, this is something of a double-edged sword, had I used LaTeX I would not have had to make a template in the first place, but at the same time, modifying anything in that template would have been much more difficult. This way I ended up with everything right where I wanted it without the frustration of figuring out how to get the results I wanted.
My thesis has a lot of code in it, and I hate reading code without good syntax highlighting. LaTeX’s syntax highlighting systems leave a lot to be desired, but Typst’s certainly does not. It does have built in support for textmate grammars, the same system used by sublime text for syntax highlighting, but for various reasons I decided not to use them. Instead, I just used Typst’s show rules with regex. For example,
will syntax highlight Spade conditionals. My syntax highlighting definitions¹ are… more more complicated but produce results that I am very happy with. At some point, I even ended up parsing a subset of Spade in Typst with a recursive descent parser because I really wanted to highlight named arguments. Was that a good way to spend my time? Debatable, but it certainly was not something I would have dreamt of doing in LaTeX.
LaTeX error messages are awful. Typst is generally much better with errors that point to the right place, gives accurate information about what is wrong, and doesn’t fill the terminal with garbage. No more “Missing $ inserted!”.
Typst’s bibliography management leaves some things to be desired when writing a whole thesis. The first roadblock I encountered was that you can only have one bibliography section and file per document. One per document is a deal breaker because I need one for the introduction, and one per included paper. My master bib file makes heavy use of Bibtex variables which are included from other sources, this does not work in Typst. I ended up solving it with a Makefile that merges my files into one before going to Typst, but that’s not ideal ²
The multi-bibliography problem was worse, but luckily https://typst.app/universe/package/alexandria came along as I was working to save the day. It requires a little bit of work per bibliography so I would absolutely have preferred an automated system where I just do #bibliography(…) and would insert all the citations I’ve used since last time, but Alexandria did the job.
Then there is the style of the bibliography… At first glance, it looks fine but when you have an advisor that is very picky about bibliography styles, things start to go wrong. For example, paper titles should be written in sentence case with quotes around them, for example:
[1] F. Skarman and O. Gustafsson, “Spade: An expression-based HDL with pipelines,” in Proc. Workshop Open-Source Des. Automat., Apr. 2023.
But in the Bibtex file it is very common for the titles to appear in their original title case form (Spade: An Expression-Based HDL With Pipelines). By default, Typst does not seem to do this conversion, but it can be turned on with a custom .csl file. However, then it will not do it quite right. “Expression-Based” turns into “expression-Based” for example. In the end, I did the conversion to sentence case manually.
The system is also kind of strange about what information it includes in references. For example, the @TechReport class in Bibtex has an institute field. This does not get included, but changing it to publisher (which AFAIK is not a standard field in Bibtex) makes it work.
I also found out that book titles should not be written with quotes, but with italics. I set a rule to match on book in my CSL field but it did not have an effect on @Book, only on @InCollection. In general, the bibliography management is death by a thousand papercuts, and a lot of them are caused by a very opaque translation from Bibtex fields to CSL…
Wait, didn’t I say that the error messages are good before? I did,but they are only good in simple cases. For example, with the Alexandria library, a bibliography that fails to compile only says “failed to parse bibliography” and does not give further errors. Errors in stateful show rules also do not give any breadcrumbs back to where the error was triggered which makes them hard to track down. In general, I would like to see a longer traceback for errors to avoid having feel like I’m writing latex again by binary searching recent changes.
My thesis also has the dreaded Layout did not converge in 5 attempts warning which is pretty much impossible to debug currently. In my case, things turn out fine, but it is a bit sketchy. I believe this is being worked on.
LaTeX is everywhere. My early papers were of course written in latex and I had to convert them to Typst. This was surprisingly easy with Pandoc which did 95% of the work with me just having to do a bit of final cleanup. Unfortunately, I also wrote a few new papers for the thesis that will be submitted later, and that’s a more complicated situation since journals demand LaTeX code. My workflow so far has been to write the initial version of papers in Typst, submit the PDF as generated by Typst, then for the final version submit a converted version.
For conversion, I don’t believe pandoc works (or doesn’t work the way I want it) so I had wrote my own tool ³. It lets me do 90% of the content and layout in Typst, use Typst for generating figures and code snippets, and then I can insert style tweaks with inline LaTeX. The Typst compiler being open source was of huge help here as I just hook into that. I will talk more about that tool in a future post once one of my papers compiled using it is made public
A big downside of this is that it generates latex with \includepdf for things like inline code. I am hoping publishers will not count those as figures and be weirded out by them…
Everyone also knows LaTeX, so if I want to use Typst in collaboration, I force everyone I want to work with to learn it. My advisor was not super pleased with that 😇
The Typst ecosystem is young. Being able to whip up a thesis template and doing all the tweaks to make it just the way I want it is great. On the other hand, since I am probably the first person at my university to do it meant I had to whip up a template. For submitting to conferences and journals, there are Typst templates, but they are not flawless. The IEEE template only has conference variant, not a journal variant. The LLNCS template I found on git looked OK but had the wrong margins, so our paper ended up being slightly longer when converted to latex.
With all this in mind, would I recommend using Typst for a PhD Thesis? If you are like me, absolutely probably. I like playing with programming languages, I’m easily frustrated by tools that bother me. I also much prefer a tool that I can tweak to get exactly the way I want over a tool that “just works” out of the box but where it is hard to tweak. In the end, I don’t think I compromised on the quality of the document, the quick iteration probably made things look better than they would have otherwise. It certainly took some effort to work around a few issues, and some extra work setting up a template, but that was fun work compared to having to suffer through LaTeX’s annoyances.
If you’re not like me and want a system that works out of the box, Typst today probably isn’t the right choice for a PhD thesis. But I would still recommend playing with Typst for smaller things but leave the big documents to LaTeX, for now.
Updated June 23 2025: Changed absolutely to probably in the conclusion and added the ‘advisors perspective section below’
My advisor had a somewhat different perspective on this and I think it is worth posting that here. This is essentially taken verbatim from a LinkedIn comment where we discussed it:
“The thing is that you HAD to tweak it to make things look the way they should. Not sure that is a benefit.
Would I, as a supervisor, recommend someone to use Typst if they are in a field where all manuscripts are written in LaTeX? No. The fact that Frans is clever and a good programmer helped for sure. But think twice. Thrice if you are not a good programmer. And ask Frans for the scripts he developed to move things between Typst and LaTeX.
It is simply not mature enough for most people to be used at this stage when you have to produce documents looking a particular way. Unless you are willing to spend much time on tweaking things etc. It may be mature for sure and someone will have to contribute to make it more mature for sure.
“Good” thing from a supervisor perspective is that I barely edited any text in the source at all, but had to let Frans edit the text (and format). Quite inefficient though.
Despite the disagreement on the procedure, I cannot stress enough that the end result was great though! Both technically and layoutwise.”
He certainly has a point here, especially needing to be interested in working around issues and needing some programming experience to get things working perfectly. The problem of having to spend time adjusting things is in my opinion hard to quantify since it trades easy fun upfront work for frustration over other aspects of the language.
...
Read the original on fransskarman.com »
Until I ran VaccinateCA my single most important career contribution might have been writing about salary negotiation. That essay has been read by millions of people. Of those people, a relatively small percentage send me email to tell me that the advice has worked for them. I previously kept a spreadsheet of the impact they shared with me, and it ticked over into eight figures of raises.
I thought I’d do a read of the essay, so people can share it with family and friends that might connect more with audio than they do with text. Also, I think there is a trust factor to exhortations that audio as a format achieves better than text does. And the essay is, in material part, an exhortation as much as it is simply advice.
For the benefit of people who just want the new bits, I’ve called them out with Patrick notes:, though they’re also spoken in the episode this time.
This episode is brought to you by Mercury, the fintech trusted by 200K+ companies — from first milestones to running complex systems. Mercury offers banking that truly understands startups and scales with them. Start today at Mercury.com
Mercury is a financial technology company, not a bank. Banking services provided by Choice Financial Group, Column N. A., and Evolve Bank & Trust; Members FDIC.
(00:00) Intro
(03:25) Why negotiation matters
(05:21) Shifting your mindset to embrace negotiation
(06:49) Your counterparty does not share your mental model of negotiation
(12:46) Your negotiation started before you applied to this job
(17:21) When does a salary negotiation happen?
(19:38) Sponsor: Mercury
(23:16) The first rule is what everyone tells you it is: never give a number first
(28:45) Listen to what people tell you. Repeat it back to them.
(33:22) Research, research, research
(37:13) New information is valuable and can be traded for things you want
(41:20) You have a multi-dimensional preference set. Use it.
(44:08:) For your further perusal
Welcome to Complex Systems where we discuss the technical, organizational, and human factors underpinning why the world works the way it does.
Patrick: Hi. Hello everybody. My name is Patrick McKenzie, better known as patio11 on the Internet. I’m here today alone in the studio to record an essay about salary negotiation, which I wrote a number of years ago and published at kalzumeus.com. This might have been the most single impactful thing I did in the course of my career. I’ve kept a folder in Gmail for people who write in to tell me that they actually got a salary negotiation bump as a result of this.
And I kept a spreadsheet about it until the low eight figures before keeping that spreadsheet was a source of stress. A couple hundred thousand people read it every year. And of course many of them have told me it worked out well for them. And someone suggested recently, you know, some people get a better experience from listening to things than they get from reading them.
And this in particular is an essay which includes quite a bit of exhortation. And I think hearing a trusted voice say that in your ear might be helpful for some job seekers. So, I will do a reading of this and then back on next week with a more typical topic.
Imagine something a wee bit outside your comfort zone. Nothing scandalous. Just something you don’t do often, don’t particularly enjoy, and slightly more challenging than totally trivial. Maybe reciting poetry while simultaneously standing on one foot. If I told you I would pay you a hundred thousand dollars if you did five minutes of poetry recital while standing on one foot, would you do it?
It’s an absurd image, but play it straight. There is no hidden gotcha here. You won’t be videotaped. Your friends will never see you make a fool of yourself. The revolution will not be YouTubed. The offer is exactly as simple as you think it is. Poetry, foot, a hundred thousand dollars. Would you read poetry for me?
Of course you would. You’d be screamingly stupid not to. In fact, not only would you read poetry, you’d probably take a poetry class to make sure you did it right or go to the gym to verify. Yep, sure enough, I can stand on one foot. Phew, pass me the Shakespeare. If you couldn’t stand on one foot, you’d fix that because you know that it is much easier than other things you routinely accomplish, and you suddenly have a hundred thousand wonderful reasons to learn it too.
What if you were talking about this at dinner with your friends and one of them said, “Oh no, I’d never do that. I just don’t do poetry. I’m an engineer and besides my father told me that people who stand on one foot look silly and what do I need a hundred thousand dollars for anyhow?” You would not clap them on the back and say, “Damn straight! Man, poets always trying to tempt virtuous engineers into their weird poetry spouting, flamingo standing ways.”
You’d say, “Dude, it’s five minutes. Heck, I’ll help you practice.” This is pretty much how I feel every time I talk to my engineering friends about salary negotiation. We overwhelmingly suck at it. We have turned sucking at it into a perverse badge of virtue. We make no affirmative efforts to un-suck ourselves and to the extent we read about it at all, we read bad advice and repeat it, pretending that this makes us wise.
Dude, it’s five minutes. Let’s un-suck your negotiation.
New to the site? Hiya. I generally write as an engineer for engineers. Non-engineers can benefit from many of the same techniques, though the hiring market isn’t nearly as in your favor at the moment as it is for engineers in most major US metro areas.
Patrick notes: As an aside, 10 years later, people say, would I change the advice in this essay given the current hiring market for engineers? I would not change a word. So I’m saying that explicitly.
Your salary negotiation, which routinely takes less than five minutes to conclude, has an outsized influence on what your compensation is.
Compensation can include money or things which are more or less fungible replacements for money, but it can also include interesting things which you value from more time with your family to opportunities to do tasks you find fulfilling to perks which make a meaningful difference in your day-to-day quality of life.
That makes your negotiation five very important minutes. You generally can’t do a totally bang up job on any five minutes of work this year and have your boss give you an extra $5,000. You can trivially pick up $5,000 in salary negotiations just by sucking less. Since salaries are shockingly durable over time, particularly if one is not good at negotiating, you can expect a $5,000 increase in salary to compound with your standard annual read-the-HR-chart percent raise, cause a similar increase in your 401k contribution, which also compounds, and establish a higher peg for any further jobs you take if you’re unsavvy and allow those other jobs access to your prior salary history, at any rate. Accordingly, over the next 10 years, the value of $5,000 a year extra salary is close to a hundred thousand dollars gross, and the value of $15,000 a year extra, very achievable if you are, for example, a young engineer who doesn’t realize that the hiring market is on fire right now, even outside of tech epicenters like Silicon Valley, is over a hundred thousand dollars even net of taxes.
Patrick notes: As an aside, over the course of the last decade, I know people who quite routinely got $25,000 or more and not infrequently got more than a hundred thousand dollars from negotiating well for mid-career tech professionals. But I actually knew that was achievable before I wrote this essay. As a bit of author’s commentary, one of the reasons I chose $5,000 rather than quoting $25,000 was I felt more people would believe it and therefore attempt to put the advice into practice. But you should trust me on this topic, I think, anyhow.
We’ll discuss tactical advice in a moment, but let’s talk about the psychology of negotiation first. I think that middle class Americans are socialized from a very young age to view negotiation as something that is vaguely disreputable and engaged in only by poor people. Think of the associations you have with the word haggling.
Do you think of a successful young professional talking about thousands of dollars in a brightly lit office? No. You probably think of an old woman arguing over a trivial sum of money in a dirty flea market. If I were a little more paranoid and a little more Marxist, I’d honestly think that you’re so misinformed about reality that it is almost prima facie evidence of a conspiracy to keep you in the dark about this, to the advantage of people who A) you won’t negotiate with, and B) who will feel absolutely no compunctions about negotiating with you.
Principally, this will be your employers. People say that your house is the biggest purchase you’ll ever make, but it won’t be the most consequential negotiation. If you’re sane only about 25% or so of your gross income is subject to the results of real estate negotiations. Close to 100% is subject to the results of salary negotiations.
Thus, your salary negotiations are probably going to be the most important financial decisions you will ever make. We socialize middle class Americans to go into them unprepared, demotivated, and fearful of success. The reality is that rich, successful people negotiate. This is one important way in which they get and stay rich.
It is an all-day-every-day thing in much of the business world, which is where most rich people get their money.
Salary negotiations are very asymmetrical. Companies know this and routinely exploit it. Job seekers don’t, perhaps because they think doing so would be unfair, and the word exploit makes them acutely uncomfortable.
So we often default by pretending that the employer is evaluating the negotiation like we would. This is not true and acting like it is true will harm both your interests and the interests of your future employer. For example, many people’s mental model of employment is that an employee with a $60,000 a year salary costs about $60,000 a year to hire.
If they negotiate $65,000 instead, that’s $5,000 extra which has to come from somewhere. If the negotiation breaks down, then that is $60,000 saved. This mental model is broken. First, get into the habit of seeing employees like employers see them: in terms of fully loaded costs. To hire someone you need to pay for their salary, true, but you also have taxes, a benefits package, employer contributions to retirement, healthcare, that free soda your HR department loves mentioning in the job ads, and what have you.
Patrick notes: A bit of trivia: for a US employer of professionals, the largest component after salary/stock-based compensation is usually healthcare, followed by payroll taxes.
The fully loaded costs of employees are much higher than their salary: exactly how much higher depends on your locality’s laws, your benefits package, and a bunch of other HR administrivia. But a reasonable guesstimate is between 150% and 200% of their salary.
Patrick notes: As an aside, lower than that outside the tech industry and engineering professions. But if you’re ballparking at 140% across most of the populace, you’re not in a crazy place.
The fully loaded cost of an engineer receiving market salaries these days in California or New York is close to $20,000 a month. It is only $10,000 a month if they’re receiving a heavily below market salary, such as if they’re working for a startup.
If you have a kid brother who majored in Flemish dance and got a modest full-time job at a nonprofit, his fully loaded cost is still probably $4,000 a month or more.
Patrick notes: As an aside, those quotes for market salaries are very stale at this point. Also the quote for the value of a Flemish dance major’s salary is unfortunately stale 10 years later, less because the value of Flemish dance has increased and more because the value of a dollar has decreased.
This is a roundabout way of telling you that companies are not sensitive to small differences in employee wages because employees are so darned expensive anyhow. You see $5,000 and think, “Holy cow, even after taxes, that’s a whole new vacation. $5,000. $5,000. It would be so very, very greedy of me to ask for 5,000 whole dollars.”
The HR department sees $5,000 and thinks “Meh, even after we kick in the extra taxes, that’s only about 3% of their fully loaded cost for this year anyhow, or seven hundredths of 1% of that team’s hiring budget. I wonder if the cafeteria has carrot cake today.”
Patrick notes: As an aside, if you actually join the corporate world and do budgeting for teams, you will not be budgeting in dollars. You will be budgeting in—and goodness, I hate this word in the depths of my soul—headcount. Because headcount A and headcount B, meaning person A and person B, are close enough in wages and close enough in costs that at a department level rather than having your abstraction being, well, we spent 2 million and $20,000 on salary and related expenses this year, it’s much easier to communicate: Okay, you previously had budget for 20 headcount. You have gone to your boss and asked for more budget for the next year, and they have given you two additional headcount. And again, as long as you’re within the salary bands for your company, nobody cares what those two additional quote unquote headcount get from you in the negotiating room.
Virtually any amount of money available to you personally is mouse droppings to your prospective employer. They will not feel offended if you ask for it. I received a comment that this is untrue for startups by someone today. For a funded startup which has enough engineers to warrant a foosball table, the company payroll is well north of a hundred thousand dollars a month.
Making a new hire is a big commitment, but they still have a lot of flexibility on the details because the details do not shave months off their runway. We’ve been talking about your employer as an abstraction, but in the instant case you’re talking to an actual person. Let’s call him Bob. It’s Bob’s job to get you signed with the company as cheaply as possible, but Bob is not super motivated to do so because Bob is not spending Bob’s money to hire you.
Bob is spending Bob’s budget. Bob generally does not get large performance incentives for shaving money off of his hiring budget. You get a new MacBook if you convince Bob to give you $5,000 extra, but Bob gets, if he is anomalously lucky, a dinner at TGI Fridays if he convinces you to take $5,000 less.
In fact, there are many organizations and many Bobs for whom power, status, and money come from asking for more budget every year. If you turn out to be on the expensive side, that is great for Bob because A) he manages a high powered peon, so he must be a high powered manager, and B) this will help Bob get more budget next quarter.
So if you’re worried about what Bob will think of your moral character, or if you want to compensate Bob because you feel you owe him for this job opportunity, do Bob a solid and negotiate in a spirited fashion with him. You don’t owe Bob for giving you this job opportunity, by the way. Please internalize this.
Everyone in this discussion is a businessman. Some might call themselves regular employees, which just means they’re businessmen with self-confidence issues and poor business skills. If the deal makes economic sense, it will happen. If it doesn’t, firm handshakes will be exchanged, non-specific promises will be uttered, and everyone will forget about this discussion in a matter of hours. You will not be blackballed for negotiating. Bob couldn’t care less, and even if he did care, he has better things to do with his time than worry about a candidate he didn’t hire. Bob is working through a list of a dozen people right now, and his manager Dave is being such a hard case about that project schedule, and he’s not sure he can make his daughter’s piano recital, and the cafeteria’s carrot cake was a little dry. Bob is far, far less invested in this negotiation than you are.
Your negotiation doesn’t happen in a vacuum. Generic career advice is a little outside the scope of this post, though I’ve previously written a bit with engineers in mind that folks from many walks of life tell me was useful.
But to make a long story short, many people think job searches go something like this: You see an ad for a job on Monster.com or wherever. You send in a resume. You get an interview. You get asked for salary requirements. You get offered your salary requirement plus 5%. And then you try to negotiate that offer if you can bring yourself to do it.
This is an effective strategy for job searching if you enjoy alternating bouts of being unemployed, being poorly compensated, and being treated like a disposable peon. I served three years as a disposable peon in a Japanese megacorp and might be projecting a tad bit here. Regardless, my loss is your gain.
You will have much, much better results if your job search looks something more like:
(Optional but recommended) Establish a reputation in your field as someone who delivers measurable results vis-a-vis improving revenue or reducing costs.
Have a hiring manager talk with you specifically about an opening that they want you specifically to fill.
Talk informally (and then possibly formally) and come to the conclusion that this would be a great thing if both sides could come to a mutually fulfilling offer.
Let them take a stab at what that mutually fulfilling offer would look like.
Suggest ways that they could improve it such that the path is cleared for you doing that voodoo that you do so well to improve their revenue and/or reduce their costs.
(Optional) Give the guy hiring you a resume to send to HR for their records. Nobody will read it because resumes are an institution created to mean that no one has to read resumes. Since no one will read it, we put it in the process where it literally doesn’t matter whether it happens or not, because if you had your job offer contingent on a document that everyone knows no one reads, that would be pretty effing stupid now, wouldn’t it?
You might think that desirable jobs at well-managed companies (Google, Microsoft, hot startup FooWithTheWhat.ly, etc) have layers and layers of bureaucratic scar tissue (a great image from 37signals) to ensure that their hiring will conform to established processes and that offers will not be given to candidates sourced by using informal networks and interpersonal connections.
If you believe this, you have a dangerously incomplete mental model of how the world operates. I have a specific recommendation for you to make that model more complete: start talking to people who actually work for those companies and who have hiring authority. Virtually no company has a hiring process which is accurately explained by blog posts about the company.
No company anywhere has a hiring process which is accurately explained by their own documents about how the hiring process works. I won’t give names, but all of the following are companies you’ve heard of:
* Ironclad non-compete with an IP assignment provision of major multinational… struck from the contract with four sentences of discussion.
* Major popular tech employer offered desirable employee $X as a salary because “it was the max the HR department allows for that position.” He got hired that week at $2X. All parties — hiring organization, HR, and employee — think they pulled one over on the other participants.
* [Deleted funny story]. I now can’t tell you the funny story, because literally two hours before publication someone emailed me for advice about a situation that he believes is incredibly unjust at his company, and it is exactly the funny story to the letter. Now if I tell you the funny story he might think “Dang, I write Patrick in confidence and it ends up on the blog.” So, no funny story today. Suffice it to say that in my old age I treat Dilbert less as farce and more as documentary.
Patrick notes: As an aside, people do occasionally come to me 10 years later and say, “So can you tell the funny story now?” And I don’t remember what the specific funny story was, although I have an inkling of the genre that it was.
* “We can’t hire engineers fast enough through our standard processes so, meh, I guess we’ll circumvent them by just tossing $1 million per employee at whomever they currently work for. Who cares, it isn’t my million.”
Patrick notes: I’ve heard that subsequently explained by the M&A team, which is the team that is being spoken of here obliquely, that because of various felicities within the company, the M&A team has a large budget directed from on high to make sure that the company is able to route around its own processes for getting smart people into the company and sometimes getting projects off the ground. And different organizations would have different preferences as to which of the two was M&A’s larger priority.
Only negotiate salary after you have agreement in principle from someone with hiring authority that, if a mutually acceptable compensation can be agreed upon, you will be hired.
This is really, really important because it has direct implications for your negotiating strategy. First, the company is going to spend a lot of time and effort on getting you to the point of agreement-in-principle. Pretend you’ve gone through six rounds of interviews. (You probably won’t if you get hired on informal networks, because all barriers vanish when important people want a deal to get done, but let me give some advice to someone a little less well-situated.) Do some quick mental math on what that actually cost the company, with reference to “one man-month of an engineer’s time costs $20k” like we discussed earlier. You’ll quickly reach the conclusion that the company has spent thousands of dollars just talking to you, and that doesn’t even count the thousands they spent deciding to talk to you instead of whoever isn’t in the room right now. Walking away from the negotiation means that they lose all that investment. (Yeah, sunk cost fallacy and all, but since people predictably act in this fashion you should, well, predict that they will act in this fashion.) They really want to reach an agreement with you.
Patrick notes: As an aside, I think I would say 10 years later, as someone who has been under the gun for a number of weeks and trying to find a candidate for a position, you pay an ongoing tax to your productivity at the other parts of your job when you have an open role that you are actively interviewing people for, trying to suss out candidates on LinkedIn, asking people for recommendations, etc., etc. Your business needs that person to progress or at least believes it does. And you would like to get to the other parts of your job, which are for most hiring managers things that you are scored for much more directly than your performance in actually hiring. And so, if you have a candidate who is so close to the finish line and who you are happy with in terms of their likelihood of being the appropriate fit, you really don’t want to lose on the last day over a trivial amount of salary. And so, you become very incentivized to just say yes. In the same way that a person who is desperate for a job becomes very incentivized to just say yes if they feel like, “Oh no, if I don’t say yes to the first thing that is said out of the counterparty’s mouth, I’ll be unemployed again for the next three or six months.”
Patrick: The second implication is that the inner serf worrying “If I even attempt to negotiate this, the deal will fall through” is worrying for nothing. They’ve got thousands invested in this discussion by this point. They want you. The absolute worst outcome of negotiating an offer in good faith is that you will get exactly the contents of that offer.
Let me say that again for emphasis: negotiating never makes worthwhile offers worse. This means you need what political scientists call a commitment strategy: you always, as a matter of policy, negotiate all offers. (In this wide world I’m sure you can find a company who still makes exploding offers, where you get one yay-or-nay and then the offer is gone. You have a simple recourse to them: refuse them and deal with people who are willing to be professionals. You’re not a peasant. Don’t act like one.)
This also means you do not start negotiating until you already have a Yes-If. (Yes-If we agree on terms.) Do not start negotiating from No-But. (No-But we might hire you anyway if you’re really, really effing cheap.) You don’t want to work for a No-But for the same reasons that smart employers hate hiring candidates who are a No-But (No-But maybe if not on my team, etc). If they’re leaning to not hiring you, you will compromise excessively on negotiation to get them to hire you. Compromising excessively is not the point of the exercise. It is a seller’s market for talent right now: sell to someone who is happy to buy.
This means that any discussion of compensation prior to hearing Yes-If is premature. If you’re still at the job interview and you’re talking price, you are doing something wrong. (Read the room: it is entirely possible that you came for a job interview, finished it, and proceeded directly to a salary negotiation. That’s probably suboptimal, but it is OK. Just don’t give the employer the option of having the schedule be job interview, salary negotiation, and back to job interview if they discover that you have a spine.) The ideal resolution to the job interview is for both sides to be optimistic about the arrangement, and then you close with a warm handshake and “I look forward to receiving your offer by, oh, would tomorrow be enough time for you to run the numbers?”
You then have a high likelihood of doing your salary negotiation over email, which is likely to your advantage versus doing it in real time. Email gives you arbitrary time to prepare your responses. Especially for engineers, you are likely less disadvantaged by email than you are by having an experienced negotiator talking to you.
Every handbook on negotiation and every blog post will tell you not to give a number first. This advice is almost always right. It is so right, you have to construct crazy hypotheticals to find edge cases where it would not be right.
For example, if your previous salary was set during the dot-com bubble and you are negotiating after the bubble popped, you might mention it to anchor your price higher such that the step down will be less severe than it would be if you engaged in free negotiations unencumbered by the bubbilicious history.
Does this sound vaguely disreputable to you? Good. This vaguely disreputable abuse of history is what every employer asking for salary history, salary range, or desired salary is doing. They are all using your previous anomalously low salary—a salary which did not reflect your true market worth, because you were young or inexperienced or unskilled at negotiation or working at a different firm or in another line of work entirely—to justify paying you an anomalously low salary in the future.
Never give a number. “But Patrick,” you cry. “I don’t want to be difficult.” You’re not being difficult. You’re not doing anything immoral. You’re not being unprofessional. They’re businessmen, sometimes they don’t have all the information they would love to have prior to making a decision. They’ll deal. They already deal with every employee that they’ve ever had who was not a doormat at negotiations, which includes essentially all of the employees they really value.
Ramit Sethi (more on him later) introduced me to a concept that he calls Competence Triggers: basically, if you have to judge someone’s skill based on a series of brief interactions, you’re going to pattern match their behavior against other people who you like.
When people with hiring authority think of winners, they think of people like them who live and breathe this business thing. They negotiate things as a matter of course: that is a major portion of the value they bring to the company. Volunteering a number when asked says the same thing to people with hiring authority that flunking FizzBuzz says to an engineer: this person may be a wonderful snowflake in other regards, but on the thing I care about, they’re catastrophically incompetent.
It will also cause them to retroactively question competencies they’d previously credited you with. I have literally heard that feedback, in so many words, from folks with whom I’ve had successful business dealings. (A funny in hindsight story: I cost myself five figures with a single email. The particulars are boring, but suffice it to say I fairly recently made a wet-behind-the-ears-engineer error in quoting a client. He noticed. So did my bank statement. My bank statement kept quiet, but the client opined that it made him think less of me until we actually got to work together.)
So anyhow, you may well hear reasons why you should give a number.
Objection: “I really need a number to move the process forward.”
What you should think: “You’re lying to me to attempt to get me to compromise my negotiating position.”
What you should say: “I’m more concerned at the moment with talking to you about discovering whether we’re a mutual fit. If we’re a great fit, then I can be flexible on the numbers with you and you can be flexible on the numbers with me. If we’re not a great fit, then the numbers are ultimately irrelevant, because your company only hires A players and I only work at roles I would be an A player at.”
What you should think: “You’re lying to me to attempt to get me to compromise my negotiating position.”
What you should say: “Give me git access and I’ll fix it in a jiffy! both people laugh No, seriously speaking, I’m more concerned at the moment with discovering whether we’re a mutual fit… Oh, it’s physically impossible? Put in $1 then to get the ball rolling, and we’ll circle back to this later.”
Objection: “We want to figure out whether you’re an appropriate candidate for the position.”
What you should think: “You’re lying to me to attempt to get me to compromise my negotiating position.”
What you should say: “It’s so important to me that this is a good mutual fit for us. Let’s talk about why I’m a great fit for this position: I know you’re concerned about $FILL_IN_THE_BLANK. In addition to my previous successes doing it, I have some great ideas for what I’d do about that if I was working at your company. Would you like to drill into those or is there another job area you’re more concerned about to start with?”
...
Read the original on www.complexsystemspodcast.com »
The internet is the bane of my existence. Ads, distractions, sponsored content, bad news, bad ideas, more ads, social media, antisocial media, even more ads.
Also, I’m a software developer, so the internet is basically indispensable for me, a central pillar of my income and a convenient way to communicate with friends, family, loved ones, associates, acquaintances, people from my sports club, superpositions of all previous groups and enemies alike. And I think my company runs ads, so in a way ads pay for my clothing and food and stuff. So I guess my current stance towards the internet would be somewhat neutral-ish, but that may still change.
But I can try to reduce or at least moderate some of the negative aspects of the internet, especially those that keep me hooked like some sad addict: social media. I’ve tried completely blocking it via my networks’ ad blocker, but the animal in me circumvented that blockage by turning off wifi on the cell phone and thus doom scrolling galore on my cell plan. Also, my wife needs some social media for work or research (and of course guilty pleasure) at least some of the time, but she’s as bad in moderation as me. So completely blocking is not viable, but allowing unrestricted internet access to two reasonable adults is somehow also out of the question.
Until today, when Neil Chen posted a simply genius idea to hacker news. Neil describes how a smart plug is used to dynamically rewrite some ublock Origin lists to allow unfetted access to all content distracting. The idea is fantastic, but the implementation not practical for my/our scenario, so I’m adapting it here.
I’m already using an network wide ad blocker via my gli.net router called “Adblock Home”. And for a smart home without internet access (see preamble) I’m using Home Assistant.
So we have:
Surely there must be some way to wire those together haywire-ly.
Just like Neil, I want some button to press to allow for access to social media, but only for a limited time (say 15 minutes). After that time has passed, my wife and me must endure a cool-down phase until we can push the button again (say one hour). So whenever we push the button, the filters will be disabled for 15 sin-filled minutes. A Zigbee enabled smart plug is adequately suited.
Adguard Home is very conveniently integrated into gli.net’s fork/customization of OpenWRT (formerly Lede, formerly OpenWRT). Frst, we set up the services we wish to block as custom rules. Sadly we cannot use the built-in services, because they don’t seem to count as “custom” and thus cannot be toggled on and off.
Adguard Home has a fantastic API, available in OpenAPI yaml. You login to that API with the normal user and password. But: The routers main interface somehow bypasses the authentication, which means Adguard Home has no user/password which we could use for API access. This forum link explains how one can be added without breaking the existing integration. Basically, we have to add them by hand to the /etc/Adguard/config.yaml file. Change:
This password is the bcrypt hash of admin, but of course thats not the password I’m actually using. Use cyberchef to generate the hash.
Home Assistant comes with a functional, but somewhat reduced integration. It can however do all we need.
Among the switches it exposes is “Filtering”, which enables or disables application of custom filter rules. We can flick this switch via automation.
After some trial and error, I’ve arrived at this automation, which as of now seems to work just fine and just like I intended.
So wait, can’t I still just disable wifi to continue the incessant pollution of my feeble brain with cat videos?
Well, yes. But this helps me exercise moderation, and like with any poison, social media is tolerable in small doses.
...
Read the original on www.romanklasen.com »
Recently, there has been a lot of talk about the “decline of the literary (straight) (white) male.” The marginal benefit provided by an additional take on this topic, some clever new angle walking the tightrope between edgy and politically correct, is rapidly approaching zero.
The problem with these articles—and the discourse as a whole—is that none of them go far enough. There is an impassable chasm between the stardom of Mailer, Updike, McCarthy, DFW, Franzen, etc and whoever is getting fellowships and is published in The New Yorker or Paris Review today. Yet the chief complaint from advocates for the literary men is that they are unfairly denied these fellowships and publications. I’m sure they’re being discriminated against, but you’re just replacing one group of people you’ve never heard of, with a different group of people you’ve never heard of with different sex organs.
This may well be a Title VII problem, but there’s a bait-and-switch happening: the rhetorical appeal of the conversation about literary men depends on the fall-off from The Greats—the juxtaposition between their success and the barren opportunities for literary men today. Yet no one seems willing to contend with the fact that this is not just an issue for literary men, it’s an issue for everyone. What non-identity quality do The Greats have in common that virtually all young contemporary literary fiction writers (Rooney aside), don’t? It’s obvious—people knew about them and bought their books.
The 21st century collapse in American literary fiction’s cultural impact, measured by commercial sales and the capacity to produce well-known great writers, stems less from identity politics or smartphones than from a combined supply shock (the shrinking magazine or academia pipeline) and demand shock (the move away from writing books that appeal to normal readers in order to seek prestige inside the world of lit-fiction)
To start, take a look at Publisher Weekly’s “list of best-selling novels of 1962:”
The Shoes of the Fisherman by Morris WestRaise High the Roof Beam, Carpenters, and Seymour-An Introduction by J. D. Salinger
It feels a little cruel to rub it in, but for comparison’s sake here’s 2023:
It Ends with Us by Colleen HooverIt Starts with Us by Colleen HooverDog Man: Twenty Thousand Fleas Under the Sea by Dav Pilkey
* Portnoy’s Complaint was the best-selling book of 1969
* James Jones’s From Here to Eternity (861 pages) was the best-selling book of 1951
* Lolita made it to #3 in 1958 and held on at #8 in 1959 (the #1 spot in 1958 belonged to Doctor Zhivago)
* Ragtime was the best-selling book of 1974
* The Corrections — #5 in 2001 — was the most recent work of literary fiction to make the yearly top ten best-sellers
* No work of literary fiction has been on Publisher’s Weekly’s yearly top ten best-selling list since 2001
* Percival Everett’s James is the most recent work of literary fiction to make the New York Times’s weekly bestseller list — it was the best-selling book in the last week of 2024
* Before James, the most recent one was Amor Towles’s The Lincoln Highway for one week in October 2021
In the mad rush for stability among a shrinking pool of resources (financial and cultural), authors and discourse-makers seem to have fallen into malaise bickering about how these resources should be divided up instead of why the pool is shrinking. It doesn’t matter that no white man born after 1984 has been published by The New Yorker, because I honestly doubt any serious reader of fiction could easily bring to mind a short story by any younger writer in The New Yorker at all. The gap between now and The Greats matters for all writers, not just men. So the real problem is literary fiction’s wholesale decline, not how the ever-smaller pie gets sliced up.
After reading some articles on the decline of American literary fiction, I came away with the sense that no one is particularly interested in why literary fiction’s relevance has plummeted, instead the authors of these pieces are intent on proving only whether or not salient issues like smartphones, discrimination, or woke publishers might have something to do with it. But while it’s not difficult to cobble together a story about why these issues might have had some effect, no one has bothered to ask whether these are really the drivers—if they drive the discourse, surely they’re the actual causes right?
Let’s look at two representative articles that touch on the general decline of literary fiction: Will Blythe’s The Life, Death—And Afterlife—of Literary Fiction from 2023 and ARX-Han’s more recent The decline of literary fiction and the principal-agent problem in modern publishing.
Han has a compelling thesis that fits in alongside the recent complaints about anti-male discrimination in publishing:
“Here’s one hypothesis behind the decline in modern literary fiction: I believe that the literary market has become less efficient because of an increased degree of principal-agent conflict between editors and their publishing houses. I suspect that the reason for this increased principal-agent conflict is increased status competition between literary editors driven by the culture war. To me, it seems like editors are competing on the axis of moral status.The overriding imperative behind “elevating diverse voices” in publishing is actually an axis of moral competition between literary editors.”
It’s quite clever: editors are competing on status and correctly (from their perspective) optimize for diversity instead of quality. This is an interesting theory, but it’s not a great explanation for the general decline in literary fiction’s quality, sales, and cultural capital for a fairly obvious reason—the timing doesn’t work.
It began, really, in 2010, 2012,” the award-winning author Lionel Shriver, best known for her novel We Need to Talk About Kevin, told The Free Press.”
This is simply too late in time to satisfactorily explain the decline of literary fiction; maybe it can speak to some of the quality and popularity decline post-2010, but a full explanation should be able to explain a steady decline in consumer popularity beginning in the 1980s & 90s until almost complete collapse in the early 2000s. Nothing about Han’s theory can explain, for example, why no work of literary fiction has been a yearly best-seller since 2001.
I’m also not fully convinced by the structure he sets up. I agree that there is a divergence between sales and editor status optimization, but I’m not sure why the mode of optimization should be moral status. Another mode of optimization that is orthogonal to monetary success is critical acclaim — if the book you edited or published won a Pulitzer/Booker it feels intuitively that you’ve out-statused some other publisher’s accrued diversity/identity status. Of course it’s much easier to accrue status by way of the ‘moral status’ Han talks about, but this cuts both ways because this sort of status that is easy to acquire won’t be worth as much as ‘connection to literary prestige’ which is much harder to get. And there is of course another related principal-agent problem at work here with authors themselves—literary fiction probably being unique among subgenres in that it feels like authors value awards and the opinions of critics far more than sales. More on that later.
No one can deny that publishing has ‘gone woke,’ but this alone is insufficient to explain literary fiction’s nosedive.
In the 2023 Esquire article, The Life, Death—And Afterlife—of Literary Fiction, Will Blythe offers up another explanation:
“In the past twenty-five or so years, the magazine industry has shrunk in the midst of this “dataism,” particularly in its rendition of literary fiction. Three years ago, Adrienne LaFrance, executive editor of The Atlantic, decided to help devise an online destination for such fiction, short stories in particular, beginning with one by Lauren Groff. “The thinning of print magazines this century,” she writes, “meant a culling of fiction.” The internet, in her estimation (and mine), “makes fairly efficient work of splintering attention and devouring time.” As a result, she concludes that literary reading is “far too easily set aside.”
Why did magazines go under, why does no one read literary fiction anymore? “The internet,” Blythe sternly replies.
People don’t read books or short stories in magazines anymore because they’re too busy scrolling? There’s data on this: according to the National Endowment of the Arts, the number of Americans who “read literature” has fallen from 56.9% in 1982 to 46.7% in 2002 to 38% in 2022. I’m not even going to bother pulling data on the percent of time people spend on their phones or on the internet. So the internet means people spend less time reading books and (presumably) less time reading literary fiction in particular because it’s weighty, boring, dense, etc. There are two problems with this theory: one is that the facts are wrong — the actual size of the fiction reading population has not shrunk a meaningful amount (population growth), and the second is that even if the facts were right, it couldn’t be correct: in 1955, the number of Americans who even read one book a year (39%) was lower than it is today (53%). And the 1950s and 1960s were supposedly the golden-age of American fiction. What’s actually going on?
It’s obvious that the “distraction” angle is untenable. It hasn’t directly impacted the number of readers enough to matter. Still there are other angles here, what about taste? Blythe’s piece can also be read as saying that phones, the internet, short-form content, etc have changed the way people consume books such that literary fiction is out and poorly written genre-fiction and steamy romance are in.
On face, this is a far more compelling theory: the fiction market is dominated by genre fiction, romance, and James Patterson. Literary fiction makes up something like 2% of the market. People are still reading books, they’re just reading worse books. Why? Ensloppification or something. We’ve explained the fall of literary fiction and it’s still the computer’s fault.
But there is some data that fits very strangely into this picture. For one, people still read plenty of literary fiction, what they don’t read is contemporary literary fiction. Books like Pride and Prejudice, War and Peace, The Brothers Karamazov, etc still sell many thousands of copies every year, more than even big hits in contemporary literary fiction. And look at any survey of contemporary audiences’ favorite books. Plenty of literary fiction there. So I think there’s a strong enough warrant here that the ‘taste-change’ hypothesis can’t be right either — unless the internet made people’s tastes magically shift away from contemporary literary fiction but not classics.
To understand what’s happened to literary fiction, then, perhaps it’s worth trying to disentangle two tightly linked problems: the commercial failure of literary fiction and the critical failure — the lack of a young Great writer. By now it’s obvious that the former problem exists, but you might be skeptical of the latter.
It’s hard to talk about “masterpieces” because the concept trades on a theory of aesthetics that is controversial when spelled out (aesthetic value realism; maybe even a kind of Platonism about beauty) and difficult to defend, but which we all nevertheless subscribe to intuitively.
Some books widely praised as classics and masterpieces in their time are forgotten soon after. Many books that a lot of people like are simply not any good. But far rarer than these cases are books that are forgotten in their time and “discovered” as masterpieces. For the last twenty years American literary culture has been unable to produce a writer we can describe as great without at least feeling a tinge of embarrassment about. We should be worried.
I first got the sense that something had gone wrong when, in high-school English class, we read One Hundred Years of Solitude followed by Jesmyn Ward’s National Book Award winning Salvage the Bones. It’s not that Salvage the Bones was not a serviceable book: well-plotted, believable characters, etc, but it was impossible to not deny that these two books could even be put on the same level.
“What about x, y, z? They’re really pushing the boundaries of fiction as a medium.” I don’t want to be mean, but I doubt it. At this moment, there are not even any famous literary fiction writers (much less geniuses) in the United States of America under the age of 65. If we can argue about it, you’re wrong. This was not the case in 2000, 1990, 1980, 1970, 1960, etc. Before we even get to the problem of sales, we need to know what’s gone wrong with the talent pipeline.
Blythe is right about one thing—the internet killed magazines, not because people’s brains turned to mush, but because of the loss of advertisement revenue. U. S. consumer-magazine ad spend almost halved from 2004 to 2024 as brands chased cheaper, better-targeted impressions on Google and Facebook. It was those magazines that didn’t rely primarily on advertising revenue which survived and are thriving today. The New Yorker, for example, is still profitable and currently has a paid circulation of 1.3 million, more than double what it had in the heydays of the 1950s and 1960s.
Still, the magazines that survived could no longer afford to give as much space to short stories or compensate their writers well — as crazy as it sounds it was possible to make a living writing short stories and publishing them in periodicals both in pulp publications and more prestigious magazines.
The collapse of the magazine ecosystem is important not because it meant less people were reading literary fiction, but because it thinned the talent pipeline — there were less opportunities to get published and less money for you if you did.
But the magazine-side is only part of the picture, the other problem was in academia. From US Doctorates in the 20th Century:
“Earning a doctorate during the first 70 years of the 20th century typically assured the graduate of a position in academe…Humanities Ph. D.s had the highest rate of academic employment—83 percent in 1995–99—but lower than the 94 percent level in 1970–74.”
Since a peak in open positions in 1984, the number of new English teaching positions has plummeted while the number of PHDs has held steady.
The same problem holds true for creative writing: in 2016 there were 3,000 MFA graduates and 119 tenure-track positions.
Writers can no longer make a good living writing freelance for magazines, and they’re unlikely to find solace in the academic job market either. Worse — even if they do get credentials and manage to find a publisher, most likely their book will have meager sales of a couple thousand copies. If they want to write and make a decent amount of money, where can they go?
From a financial perspective then, one attractor away from the pipeline into writing literary fiction comes from the rise of prestige-television over the last several decades. The showrunners of Mad Men, Game of Thrones, and True Detective all have creative-writing MFAs. Before the advent of prestige TV and the decline of magazines and academia, there was little risk that writers of literary fiction would turn from writing novels to the screen.
The talent pipeline for literary fiction has shrunk considerably over the past several decades. Anyone with a shred of care for financial success has essentially been filtered out. And even if literary fiction started to sell again this would still largely be true — Writing a book has always been a lottery ticket, even when the market was in a better condition — a small percentage of books drive almost all of the sales.
Imagine the pool of potential writers, people who, if they had the opportunity, would spend their entire lives writing literary fiction and a few of them even having the innate talent and capacity to go on and become “Great” writers after many years at work. The recent loss of two clear pathways to live such a life has shrunk this pool drastically. No wonder then that we haven’t seen any genius fiction writers in quite some time.
But this is only half the problem. The public used to gobble up literary fiction, and not just groundbreaking masterpieces: fiction that was just good. John O’Hara was a good writer. No one today remembers his book Elizabeth Appleton, but it was the fifth best-selling book of the year in 1963. No one has ever called Katherine Anne Porter’s Ship of Fools a masterpiece (she herself eventually dismissed it as ‘unwieldy’ and ‘enormous’), but it was the best-selling book of 1962. And so on with many of the lesser novels of the Greats and many middling works of literary fiction by authors that have been forgotten today. But from the 1970s onward, fewer and fewer works made it onto the best-sellers lists. Why is this no longer the case?
It can’t be because book readers have drastically changed their preferences: they still like to read literary fiction (including plenty of non classics/masterpieces — A Prayer for Owen Meany, The Outsiders, A Secret History, Rebecca, etc all sell very well to this day) and only seem to have a problem with contemporary literary fiction.
Something about literary fiction has changed in recent years that has put it off to mass audiences. Han locates the change in “wokeness,” but the timing doesn’t work — this shift was already in full swing before the 2010s when “woke” became a salient issue.
On her excellent blog, Naomi Kanakia notes the following:
Our literary culture has lost faith in ‘the general reader’
Since starting this newsletter, I have become very familiar with…intelligent people who read books and are interested in literature, but are not connected to lit-world discourse. However, I find that, in practice, it is very difficult to convince the literary world that folks like [this] actually exist. They believe readers exist, but they tend to think most readers are stupid and don’t like to read smart books. They think that readers of smart books are an endangered species, and that a critic’s primary role is to convince the readers of dumb books to read smart books instead.But, recently, literary people have started to lose faith even in this rather-condescending goal. Nowadays, literary people have started to conceptualize reading itself as being an endangered activity—they believe that the general public’s actual ability to read has somehow been diminished by the rise of smartphones.
The key here is the following thought: “it is very difficult to convince the reader that [intelligent people who read books and are interested in literature, but are not connected to lit-world discourse] actually exist.”
The principal reason self-conscious contemporary literary fiction sells no books is because it’s all insider-baseball so to speak. There’s nothing in most of these books for the general reader. The books are written for the critics. It’s easy to see how a vicious cycle could have arisen from the preoccupation with status, not sales:
Critics feel the need to differentiate themselves, both from other critics and from popular taste so they come up with increasingly baroque criteria to judge these booksReaders are understandably alienated when they pick up new books; total sales dropThe drop in literary fiction sales increases the allure of 1)
And so on in a circle until we’ve arrived at a place where literary fiction is 2% of the fiction market.
How exactly did this cycle start? I think there’s reason to believe it began in the 1970s. Here’s one hypothesis:
Consider the case of Philip Roth. Goodbye, Columbus was a best-seller and turned into a movie. Portnoy’s Complaint sold half a million copies and was the best-selling book of 1969. But no Roth novel in the 1970s appeared on any best-sellers list, and considering the brusque experimentation of the novels in question: The Breast, My Life as a Man, and The Ghost-Writer, this is no great surprise. And yet he received critical acclaim during the decade: The Ghost Writer was selected by the Pulitzer Committee in 1980 (though overruled by the board which selected The Executioner’s Song instead) and was a finalist for the National Book Award, The Professor of Desire was nominated for the Critics Circle Award, and all of these books were heavily praised by newspaper and magazine reviewers.
Who else was winning awards at this time? With Gravity’s Rainbow’s National Book Award in 1974 (and refused Pulitzer) it was increasingly postmodern authors like Pynchon, Barth, and Gaddis, none of whom ever sold a meaningful number of books. Their rise signaled the start of a complete decoupling of sales and critical taste. Authors who consciously shunned the ‘middlebrow’ mass audiences of mid-century America were rewarded by the critics. And authors like Roth, who were in ceaseless pursuit of literary status, readily changed their style to accommodate this new environment.
Of course the trends changed and so after postmodernism a kind of MFA minimalism came to dominate literary fiction, a style whose effects are still readily present in any contemporary works one might pick up today. But the broader point is that beginning in the 1970s, authors were willing to optimize for critical praise at the expense of sales to a degree they had not been before.
So from the 1970s onward, literary fiction was seen less and less on the best-sellers list, though the later collapse of the talent pipeline beginning in the 1980s and 1990s with the slowing academic job market and the widespread failure of print magazines, is what finally killed off its commercial prospects.
There are still some important open questions: the exact role of the critics in moving authors away from popular taste, the involvement of publishers, and the saliency of this essay for non-US authors and markets (the case of Sally Rooney is quite interesting). But I will conclude this essay here with some parting words.
I think the most important conclusion is that all of this is actually good news for aspiring writers: it’s not that the philistine dopamine-addled masses will never be capable of giving you the praise you deserve, it’s just that (1) basically no one is writing literary fiction and (2) the present-day norms of literary fiction mean that the general reader will never like anyone who is. Both of these problems are easier to fix than drastically changing the reading tastes of the entire population. But how will they be fixed? I’m not sure.
I don’t think magazines with short stories are ever coming back. The situation in academia will likely not improve. But I do suspect Substack will play a role in broadening norms and making it easier to write literary fiction. I think the advent of the internet, though it killed the magazines, will someday be seen as a godsend for writing. Although on the topic of technology, if LLMs or AI have any part to play in this story, it will likely not be a good one. But knowing that the fate of literature is still in the hands of writers, I’m optimistic.
...
Read the original on oyyy.substack.com »
Reporting idling commercial vehicles in NYC from start to finish with a single app. Idle Reporter makes the idling complaint process easy: five minutes from hitting record to hitting submit.
Features:
• Timestamp Camera: Record videos with time, date, and location. See how long you have left while you record.
• AI-Powered Form Filling: No more copying down addresses. Idle Reporter AI completes the report for you in one tap (subscription required).
• Easy Manual Editor: Prefer to DIY your report? Idle Reporter makes it quick and easy to fill out forms directly on your phone.
• Screenshot Generator: Automatically clip required license plate and owner info screenshots from your video.
• Status Tracker: Keep reports in Idle Reporter, then submit them to DEP as soon as you’re ready.
Idle Reporter is an unofficial utility for filling out idling complaint forms. It isn’t perfect. You alone are responsible for making sure that your reports are complete and accurate. Proof by Induction LLC is not affiliated with the Department of Environmental Protection or any other agency.
Terms of Use: https://www.apple.com/legal/internet-services/itunes/dev/stdeula/
- Timestamp now shows while you record
- Idle Reporter now always uses your device’s wide-angle camera, if available
- Reliability improvements for Import Timestamped Video
- Misc. bug fixes
The developer, Proof by Induction LLC, indicated that the app’s privacy practices may include handling of data as described below. For more information, see the developer’s privacy policy.
The developer does not collect any data from this app.
Privacy practices may vary, for example, based on the features you use or your age. Learn More
Requires macOS 14.0 or later and a Mac with Apple M1 chip or later.
...
Read the original on apps.apple.com »
Chris Lattner mentioned that Python can actually call Mojo code now. I love this idea (!) as I’m definitely in the market for a simple compiled language that can offer Python some really fast functions. So I gave it a quick spin
The setup is much simpler than I remember it, you can use uv for it now.
After that you can declare a .mojo file that looks like this:
# mojo_module.mojo
from python import PythonObject
from python.bindings import PythonModuleBuilder
import math
from os import abort
@export
fn PyInit_mojo_module() -> PythonObject:
try:
var m = PythonModuleBuilder(“mojo_module”)
m.def_function[factorial](“factorial”, docstring=“Compute n!“)
return m.finalize()
except e:
return abort[PythonObject](String(“error creating Python Mojo module:”, e))
fn factorial(py_obj: PythonObject) raises -> PythonObject:
# Raises an exception if `py_obj` is not convertible to a Mojo `Int`.
var n = Int(py_obj)
var result = 1
for i in range(1, n + 1):
result *= i
return result
And you can then load it from Python via:
# main.py
import max.mojo.importer
import os
import sys
import time
import math
sys.path.insert(0, “”)
import mojo_module
start = time.time()
print(mojo_module.factorial(10))
end = time.time()
print(f”Time taken: {end - start} seconds for mojo”)
start = time.time()
print(math.factorial(10))
end = time.time()
print(f”Time taken: {end - start} seconds for python”)
This was the output:
3628800
Time taken: 3.0279159545898438e-05 seconds for mojo
3628800
Time taken: 5.0067901611328125e-06 seconds for python
This all works, but at the time of making this blogpost I was able to spot some rough edges. If I increase the factorial number to 100 then the output changes.
0
Time taken: 2.7894973754882812e-05 seconds for mojo
188267717688892609974376770249160085759540364871492425887598231508353156331613598866882932889495923133646405445930057740630161919341380597818883457558547055524326375565007131770880000000000000000000000000000000
Time taken: 9.298324584960938e-06 seconds for python
This is probably because of some overflow issues on the modular side. The docs mention that this whole stack is pretty early, and I guess this is a sign of that.
Given that the overflow is probably the issue here, I figured I’d run one extra example just to see if we could measure a speed increase. So I went with a naive prime number counting example. This is the mojo code:
from python import PythonObject
from python.bindings import PythonModuleBuilder
import math
from os import abort
@export
fn PyInit_mojo_module() -> PythonObject:
try:
var m = PythonModuleBuilder(“mojo_module”)
m.def_function[count_primes](“count_primes”, docstring=“Count primes up to n”)
return m.finalize()
except e:
return abort[PythonObject](String(“error creating Python Mojo module:”, e))
fn count_primes(py_obj: PythonObject) raises -> PythonObject:
var n = Int(py_obj)
var count: Int = 0
for i in range(2, n + 1):
var is_prime: Bool = True
for j in range(2, i):
if i % j == 0:
is_prime = False
break
if is_prime:
count += 1
return count
This is the Python code, note that I also added a numpy implementation for comparison.
import numpy as np
import max.mojo.importer
import os
import sys
import time
import math
sys.path.insert(0, “”)
import mojo_module
def count_primes(n):
count = 0
for i in range(2, n + 1):
is_prime = True
for j in range(2, i):
if i % j == 0:
is_prime = False
break
if is_prime:
count += 1
return count
def count_primes_numpy(n):
if n < 2:
return 0
candidates = np.arange(2, n + 1)
...
Read the original on koaning.io »
Three years after construction began, it’s time to dump dirt on the project. Specifically, 6,000 cubic yards of a “super” soil followed by the planting of 5,000 native flora. I’m talking about the world’s largest wildlife crossing, which has reached another construction milestone as the bridge nears completion.
This prepared soil is the beginning of the end of construction for the Wallis Annenberg Wildlife Crossing, which broke ground on Earth Day in 2022. Located in Agoura Hills, California, the nearly one-acre overpass stretches over a 10-lane section of U. S. 101.
The physical bridge structure is essentially complete, having required 26 million pounds of concrete, Beth Pratt of the National Wildlife Federation (NWF) told KCAL. The NWF Regional Executive Director added, “We just put the soil on top, and then we start burying utility lines and extend it over the access road.”
Multiple layers of soil will be needed to create a wildlife habitat on the overpass, and the soil application alone will take several weeks. However, when the Annenberg Wildlife Crossing is done, the bridge will reconnect the bisected areas of the Santa Monica Mountains National Recreation Area. With more than 150,000 acres, SMMNRA is the country’s largest urban national park. But the freeways have long isolated the local fauna, from butterflies and cottontails to bobcats and mountain lions.
According to the project, as far back as the 1980s, researchers identified the Liberty Canyon area as a choke point for wildlife. However, it wasn’t until the National Park Service began a decades-long study of the region’s mountain lion population that the 101 freeway was deemed “the most significant barrier to the ecological health of the region.”
More than 300,000 vehicles travel along U. S. 101 daily. That’s enough traffic to give a driver anxiety—try being a local critter having to dart across the road just to find dinner.
P-22, arguably the most famous mountain lion in and outside of Hollywood, surprised everyone by crossing freeways on his own. He eventually became the poster cat for the “Save L. A. cougars” campaign. Unfortunately, he was euthanized in late 2022 after being found with severe injuries, likely due to a vehicle collision, and a myriad of other health issues.
Mountain lions are the main conservation focus of this wildlife bridge. The big cats are territorial, and being locked in by freeways limits their roaming range and biodiversity. Without the crossing to expand their habitat, SoCal cougars could be extinct within 50 years. They also continue to be killed by vehicles.
“In the Liberty Canyon area where we’re putting the crossing, within the last four years, we’ve had four mountain lions killed just in that general area,” Pratt said.
Not just providing access to more sources of food, shelter, and mates, but the bridge would also offer an escape route from wildfires and other disasters. The Annenberg Wildlife Crossing is expected to reach completion next year.
...
Read the original on www.thedrive.com »
This is an implementation of the classic 2048 game in your terminal:
Share your game state with friends by just sending them a number!
If the $STATE env variable isn’t set, it generates a fresh random seed.
Otherwise the board state and all future spawned cells will be deterministic.
...
Read the original on github.com »
I wrote a small script that runs in the background, polling for the state of an $8 smart plug.
It’s got a switch on the side to manually toggle the switch on and off. It connects to WiFi, so you can read the state of the plug via API.
When you turn the switch on, the script updates /etc/hosts to effectively block websites of your choosing:
127.0.0.1 www.twitter.com
127.0.0.1 x.com
127.0.0.1 instagram.com
127.0.0.1 youtube.com
127.0.0.1 reddit.com
You can plug the switch into any outlet, ideally one far away from you. Now, whenever I want to visit a website in my blocklist, I have to physically get up and turn off the switch. Alternatively, I could just manually edit /etc/hosts, but this additional step adds just enough friction to make me reconsider reflexively distracting myself.
...
Read the original on www.neilchen.co »
To add this web app to your iOS home screen tap the share button and select "Add to the Home Screen".
10HN is also available as an iOS App
If you visit 10HN only rarely, check out the the best articles from the past week.
If you like 10HN please leave feedback and share
Visit pancik.com for more.