10 interesting stories served every morning and every evening.




1 836 shares, 45 trendiness

Mechanical Watch: Exploded View

In May 2022, some­one posted to Hacker News Bartosz

Ciechanowski’s

blog post

ex­plain­ing how me­chan­i­cal watch move­ments work. Since then, his blog has been my ab­solute fa­vorite cor­ner of the Internet. His posts are not just well writ­ten and easy to fol­low, the ac­com­pa­ny­ing in­ter­ac­tive il­lus­tra­tions are mag­nif­i­cent.

The first il­lus­tra­tion in his blog post about me­chan­i­cal watch move­ments al­lows you to explode” a tick­ing me­chan­i­cal move­ment and ro­tate it to in­spect its every com­po­nent from any an­gle. I owe my foray into the hobby of watch­mak­ing 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 ex­ploded view of a real me­chan­i­cal watch in your hand?

Screenshot of the ex­ploded view ren­der from Bartosz

Ciechanowski’s

blog post.

I fig­ured that surely, some­one has had this idea and built it be­fore. On eBay you’ll find cubes of resin em­bed­ding var­i­ous ran­dom com­po­nents from me­chan­i­cal watches, but they are typ­i­cally sold as steampunk art” and bear lit­tle re­sem­blance to the proper as­sem­bly of a me­chan­i­cal watch move­ment. Sometimes, you’ll find resin cast­ings show­ing every com­po­nent of a move­ment spread out in a plane like a buf­fet–-very cool, but not what I’m look­ing for. Despite my best ef­forts, I haven’t found any­one who makes what I’m af­ter, and I have a sneak­ing sus­pi­cion as to why that is.

Building an ex­ploded view of a me­chan­i­cal watch move­ment is un­doubt­edly very fid­dly work and re­quires work­ing knowl­edge about how a me­chan­i­cal watch is as­sem­bled. People with that skillset are called watch­mak­ers. Maker, not destroyer for the sake of art”. I guess it falls to me, then, to give this pro­ject an hon­est shot.

…how do you build such a model?

Here comes my fa­vorite part: jump­ing head-first into a pro­ject re­quir­ing a set of skills I don’t even know ex­ist, let alone pos­sess, fol­low­ing a process that de­vel­ops as the pro­ject evolves. So how would one go about build­ing a real-life ex­ploded view of a me­chan­i­cal watch move­ment?

The first thing to con­sider is what type of me­chan­i­cal watch move­ment to explode”. Although he does­n’t ex­plic­itly say, I think Bartosz Ciechanowski’s blog post is based on the ETA cal­iber

2824-2 me­chan­i­cal watch move­ment (or one of its many clones, such as the Chinese PT5000). This is a very ro­bust and pop­u­lar au­to­matic (self-winding) me­chan­i­cal wrist­watch move­ment found in many watches. It’s con­sid­ered one of the all-time workhorse” move­ments of the in­dus­try. I highly en­cour­age the cu­ri­ous reader to check out this YouTube video

of a very skilled and equally witty watch­maker ser­vic­ing a Hamilton watch fea­tur­ing this ex­act move­ment. The video will also re­veal how many ab­solutely minis­cule com­po­nents make up the ETA-2824, mak­ing it less than ideal for my ini­tial pro­to­typ­ing. A larger and sim­pler move­ment would be much bet­ter.

Luckily, in the late 1800′s to early 1900′s, many peo­ple car­ried a pock­et­watch about their per­son. However, as smaller wrist­watches gained pop­u­lar­ity among men, be­gin­ning around the first world war with trench watches, pocket watches lost their value as time­pieces. Many were melted down to re­claim the gold used to case the move­ment. Today, you can find gor­geous, hand-en­graved move­ments from the turn of the 20th cen­tury on eBay

for next to noth­ing.

Pocketwatches are the sim­plest me­chan­i­cal watch move­ments out there: they typ­i­cally don’t have any date com­pli­ca­tions, aren’t self-wind­ing, and usu­ally don’t even have a cen­tral sec­onds hand–-that’s a rel­a­tively mod­ern fea­ture. There’s a rea­son bud­ding watch­mak­ers start out prac­tic­ing on pock­et­watch move­ments.

Now for the hard part: How do you sus­pend 50-100 tiny com­po­nents to form an ex­ploded view of the as­sem­bly?

A beau­ti­ful early 1900′s pock­et­watch move­ment from eBay. $20 for a piece of horo­log­i­cal art.

The model I’m plan­ning to build must stand up to be­ing han­dled, which means it must be solid. In turn, that prob­a­bly means that I need to cast my com­po­nents in clear epoxy resin. My first idea was to build the ex­ploded model up, layer by layer, let­ting the resin cure be­tween each layer. To save time, I ex­per­i­mented with clear resin that cures when ex­posed to UV light. There are sev­eral rea­sons why this did not work:

The resin I pur­chased ended up with a heavy yel­low tint af­ter cur­ing.

My puny UV flash­light took for­ever to cure a pour even 1 mm deep.

The seams be­tween lay­ers are very vis­i­ble.

The first two prob­lems can prob­a­bly be solved by throw­ing money at the prob­lem, but the last is­sue seems to be a prob­lem with vary­ing in­dices of re­frac­tion through­out my cast­ing. The resin art com­mu­nity is well-aware of this prob­lem, and the sug­gested so­lu­tion is to pour the next layer of resin be­fore the pre­vi­ous layer has fully cured. This sup­pos­edly helps the two lay­ers fuse, and should make the tran­si­tion be­tween lay­ers much less pro­nounced. Unfortunately, UV resin seems to cure from the out­side in, mean­ing I needed to use regular” two-part epoxy in­stead.

To achieve the ef­fect I want, I need around 20 lay­ers for a reg­u­lar pocket watch move­ment. If I were to cast each layer in a trans­par­ent con­tainer, adding com­po­nents and epoxy as the pre­vi­ous layer was half-cured, I would be do­ing noth­ing else for a solid week. Instead, I fig­ured my best bet was to cast all 20-or-so lay­ers at once, and stack them to­gether once the epoxy was semi-cured. So, my next pro­ject was to or­der some cast­ing sil­i­cone and cast my­self a mold suited to cast­ing thin disks of clear epoxy. A bak­ing tray stud­ded with poker chips formed the ideal mold for cast­ing the sil­i­cone.

My resin disks solved prob­lems 1 and 2 above, but prob­lem 3 is still un­solved. In ad­di­tion, this was a very messy and chal­leng­ing way to cast resin: the half-cured disks are floppy, resin runs every­where and bub­bles get stuck be­tween the lay­ers. I bought a small vac­uum cham­ber to com­bat the bub­ble is­sue, but es­cap­ing gas weaked havoc on the disks of resin. I learned enough about resin cast­ings to fi­nally re­al­ize that lay­ered cast­ing is not the way to go.

1st at­tempt: em­bed­ding some nails in lay­ers of UV resin.

2nd at­tempt: Embedding more nails in disks of clear resin in a sil­i­cone mold…

It took a while to ac­cept that the only hope I had was to cast the en­tire model at once. This is dif­fi­cult be­cause I need to some­how sus­pend each tiny com­po­nent in a way that is ro­bust enough for me to pour resin all over it and then pull out any air bub­bles.

Scarred and burnt by resin’s in­dex of re­frac­tion, I went look­ing for very thin rods of plas­tic or acrylic that I could cut to length and glue my com­po­nents to. Fishing line fits the bill. Specifically, monofil­a­ment ny­lon leader used in fly fish­ing. It comes in many thick­nesses, has an in­dex of re­frac­tion very sim­i­lar to epoxy resin, and is cheap. The only ma­jor chal­lenge with us­ing fish­ing line is that it remembers” its spooled shape, so every seg­ment I cut off has a slight bend to it. I was able to rem­edy this some­what by string­ing it re­peat­edly across the grill pan in my oven and bak­ing it at 150°C (300°F) for an hour or so. When done, the mid­dle seg­ments are rea­son­ably straight and sig­nif­i­cantly stiffer than what I started with.

The as­sem­bly process ac­tu­ally re­sem­bles proper” watch­mak­ing a lot. Of course, tweezer con­trol and steady hands are im­por­tant. But ap­ply­ing tiny drops of CA glue to com­po­nents with a pin­head is a lot like ap­ply­ing oil to bear­ing sur­faces and jew­els. I just find it amus­ing to do it with glue in­stead of oil–-CA glue be­ing the com­plete

op­po­site of a lu­bri­cant.

Armed with a pair of help­ing hands and a set of self-clos­ing tweez­ers, I found the process of build­ing up the ex­ploded model of a scrap watch move­ment to be very sat­is­fy­ing.

Monofilament fish­ing line main­tains the dis­tance be­twen com­po­nents. A jig holds every­thing still while the CA glue hard­ens.

At this point I’ve tried a num­ber of dif­fer­ent epoxy resins claim­ing to cure crys­tal clear. As far as I can tell, they all turn out ap­pre­cia­bly clear. Their main dif­fer­ences are vis­cos­ity, cure time and how much air they trap when mix­ing. Some resins claim to ex­pel bub­bles when cur­ing. They man­age this to some ex­tent, but to get com­pletely clear cast­ings you ei­ther need a vac­uum cham­ber to pull out all the air from your cast, or a pres­sure cham­ber to com­pletely squash any pock­ets of air. I went for a vac­uum pump be­cause it’s a fun thing to have around (boiling wa­ter at room tem­per­a­ture does­n’t get old). Another ben­e­fit of the vac­uum pump is that you don’t need to leave your cast in the cham­ber for the en­tire cure time. My cast­ings have a lot of voids that love to trap air, and the vac­uum cham­ber does a good job of pulling out the trapped air.

My cast­ing method goes like this: Mix enough of part A and B of your resin to fill the mold plus 10–15 %. Mix thor­oughly for 3 min­utes. Pour the resin into an­other mix­ing con­tainer to en­sure that no un­mixed resin is stuck to the walls of your con­tainer. Use a fresh stir­ring stick, and mix for an­other 3 min­utes. Pull the whole con­tainer un­der vac­uum (I man­age around -0.96 bar) and leave it there for 30 min­utes. Depending on your resin, the froth may very well over­flow your mix­ing con­tainer: cy­cle be­tween pulling a vac­uum and let­ting air back in a cou­ple times to pop most of the bub­bles.

Now pour the resin into the mold and go through the vac­uum process again. This time, most of the bub­bles you’re pulling out come from around the em­bed­ment, not from air trapped in the resin, which helps keep the froth­ing down.

Some resins froth up to sev­eral times the liq­uid vol­ume un­der vac­uum! Make sure there’s enough room to ac­co­mo­date this.

My first some­what promis­ing cast was in a borosil­i­cate class cylin­der. I won’t dwell on the looks of this, be­cause I mostly wanted to ex­per­i­ment and an­swer a few burn­ing ques­tions with this pro­to­type:

Q: How vis­i­ble is the fish­ing line in the fi­nal re­sult?

A: Not very! It’s vis­i­ble in the right light, but I don’t

think I’m able to do any bet­ter.

Q: Does CA glue in­ter­fere with the resin in any way?

A: Most resin datasheets say that CA glue can in­ter­fere with

the resin’s cur­ing process, but I can’t tell from this test.

A: Definitely not. Light re­fracts on the curved cylin­der

sur­face mak­ing it dif­fi­cult to un­der­stand the geom­e­try in­side,

de­feat­ing the pur­pose of the model. Cast in a cube.

A week or so later, the cylin­der shat­tered. Resin shrinks as it cures. On to the next pro­to­type!

First pro­to­type cast. Fishing line all but dis­ap­pears in the resin.

At this point I have set­tled on a some­what struc­tured process.

Start with a clean, dis­as­sem­bled move­ment. For in­struc­tions on how to

prop­erly dis­as­sem­ble and clean a watch move­ment, I highly recom­ment Mark

Lovick’s Watch Repair Course.

Assemble the train of wheels with their bridges and seize them by

de­posit­ing small amounts of CA glue on the pin­ions. Just like with the

watch­mak­er’s oil, a sewing nee­dle with a flat spot is per­fect for

pick­ing up a small droplet of CA glue and de­posit­ing it where it’s

needed. Capillary ac­tion wicks it be­tween the com­po­nents. Less is more

when it comes to CA glue: the bond be­tween sur­faces is stronger when no

ex­cess is used, and the cure time is around 30 sec­onds even with­out the

use of an ac­ti­va­tor.

I made a small jig for cut­ting pieces of fish­ing line ac­cu­rately and

squarely out of a janky hand press tool.

Work starts on the train wheel side of the move­ment (often called the

watch­mak­er’s side) be­cause that’s where most of the com­plex­ity lies.

While work­ing here, the move­ment can rest in a move­ment holder. I at­tach

long strands of fish­ing line to the end of each of the bridge screws.

Self-closing tweez­ers hold the bridges in place above where they seat on

the main­plate, and the screw/​fish­ing line combo is threaded through the

screw hole in the bridge into the cor­re­spond­ing holes in the main­plate.

More glue binds the bridges to the fish­ing line.

Subassemblies such as of the key­less works, mo­tion works, bal­ance

as­sem­bly, etc. can be con­structed sep­a­rately and fas­tened as a unit.

Small, flat com­po­nents such as cover plates, in­ter­me­di­ate wheels and cap

jew­els each get their own short studs of fish­ing line. I dip the studs

in CA glue and place it near the cen­ter of mass of the com­po­nent I’m

work­ing on: the fish­ing line’s flat ends al­lows it to stand up­right.

Before start­ing work on the dial side of the move­ment, it must be flipped

over. I trans­fer the as­sem­bly into the jaws of some tweez­ers and ap­ply

clos­ing force with a rub­ber band. The tweez­ers are clamped by helping

hands” glued to a piece of card­board which al­lows me to spin my work

around. Work con­tin­ues sim­i­larly on the dial side. Finally, some thin

trans­par­ent ny­lon sewing thread at­taches the main­plate to a peg­wood stick

that al­lows me to sus­pend the whole as­sem­bly over a mold, ready for

cast­ing 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 vac­uum pump to

pull air from the mold into the cast­ing. I cut them into 7x10 cm

rec­tan­gles and lined them with epoxy mold tape” (fancy pack­ing tape

that epoxy resin does not bond to). Then I used some Tec7 con­struc­tion

ad­he­sive to form a cube.

Prototype #2 shows a lot of promise! It’s far from per­fect, though. Here

are some of the things I’ll im­prove for pro­to­type #3 in no par­tic­u­lar

or­der:

I strug­gled with at­tach­ing sub­assem­blies to the main­plate be­cause I need to pre­cisely con­trol the dis­tance be­tween the sub­assem­bly and the tar­get sur­face: too snug and the as­sem­bly ends up crooked, too far away and the glue does­n’t ad­here prop­erly. A proper lab jack (tiny scis­sor lift) might solve this, so one is on the way.

The resin shrunk a lot while cur­ing, most likely be­cause it over­heated. I’ll fo­cus on proper air­flow for my next cast.

People noted that it’s dif­fi­cult to see be­tween the com­po­nents, so I’ll explode” the next model even more.

The hands are set to an in­valid time. 10:10 is the way to go.

...

Read the original on fellerts.no »

2 306 shares, 27 trendiness

I wrote my PhD Thesis in Typst

I re­cently sub­mit­ted my PhD the­sis, and while wait­ing for the phys­i­cal copies to get printed I thought I’d write about some­thing you (hopefully) would­n’t no­tice when read­ing it. I wrote it in Typst, not LaTeX. In this post I will talk a bit about what went well and what did­n’t.

Typst (https://​typst.app/) is a mod­ern take on a type­set­ting lan­guage that I think has a real shot at de­thron­ing LaTeX. I would de­scribe the lan­guage as a mix of mark­down and dy­nam­i­cally typed Rust, which may sound weird but is a re­ally nice fit. Day-to-day doc­u­ment writ­ing be­ing mark­down-like is very com­fort­able (certainly much nicer than lit­ter­ing your writ­ing with \). The script­ing lan­guage is pow­er­ful, well thought out, and makes it very easy to jump be­tween code and type­set­ting. For ex­am­ple

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 dis­liked about Typst while writ­ing the the­sis.

The thing that pushed me over the edge to try Typst for my the­sis was a friend telling me his LaTeX the­sis took 90 sec­onds to com­pile to­wards the end. I am far too eas­ily dis­tracted to tol­er­ate 90 sec­ond com­pile times when I’m mak­ing small changes. The Typst com­piler is fast, on small-medium sized doc­u­ments it com­piles fast enough to do live writ­ing in the PDF pre­view. As my the­sis grew be­yond 150 pages, com­pile times dropped a bit. Clean builds take about 15 sec­onds, but it also does in­cre­men­tal com­pi­la­tion so for con­tent changes, it is still nearly in­stant, for lo­cal lay­out changes it takes a sec­ond or two. Even for large global tem­plate changes,  10 sec­onds is a whole lot bet­ter than 90 sec­onds, and I am con­fi­dent that be­ing able to it­er­ate on lay­out and style 9 times faster pro­duced a nicer look­ing re­sult in the end.

The Typst lan­guage is amaz­ingly well thought out. Markdown syn­tax is nicer than Tex syn­tax for gen­eral writ­ing, but what re­ally shines is the script­ing lan­guage. My biggest com­plaint with LaTeX as a lan­guage is that noth­ing is con­sis­tent. Every pack­age de­fines their own lit­tle util­i­ties for even ba­sic things like if-state­ments. It feels like you don’t learn LaTeX, you learn each pack­age in­di­vid­u­ally. Typst on the other hand is a well-de­signed dy­nam­i­cally typed lan­guage. Being Rust in­spired and me be­ing a Rust user meant that it barely feels like I had to learn the lan­guage at all, I can just as­sume that I’m writ­ing Rust. That’s not true as you get into more ad­vanced things of course, but it feels like I know Typst in a way that I don’t think is pos­si­ble with LaTeX.

This is­n’t just philo­soph­i­cal, be­ing able to script Typst is ex­tremely use­ful. For ex­am­ple, a cen­tral part of my the­sis is that there are a lot of hard­ware de­scrip­tion lan­guages out there, and I wanted to come up with a way to cat­e­go­rize them. Over a few years, I have col­lected them all with some meta­data in a toml file (https://​git­lab.com/​The­Zoq2/​list_of_hdls/). Since Typst can parse toml, I could sim­ply use that data to gen­er­ate a fig­ure to put the lan­guages into my tax­on­omy:

Sure, it would be pos­si­ble to do this in many other ways, but hav­ing it self-con­tained in the doc­u­ment is nice, and at this point Typst is one of my favourite script­ing lan­guages, so us­ing it here is a no-brainer and some­thing I did for pretty much all my data pro­cess­ing.

A mod­ern lan­guage of course also comes with mod­ern tools, a com­piler with de­pen­dency man­age­ment, a work­ing lan­guage server pro­to­col in­te­gra­tion for ed­i­tors etc. All that makes it even nicer to work with.

A few times I have tried to un­der­stand la­tex tem­plates, and every time it has ended in frus­tra­tion. I be­lieve it took me longer to re­move a header from our uni­ver­sity pre­sen­ta­tion tem­plate than it did for me to write a new pre­sen­ta­tion tem­plate in Typst. Again, this comes down to the lan­guage be­ing well-thought-out and con­sis­tent. This was also hugely ad­van­ta­geous when tweak­ing my the­sis tem­plate the way I want it. Naturally, this is some­thing of a dou­ble-edged sword, had I used LaTeX I would not have had to make a tem­plate in the first place, but at the same time, mod­i­fy­ing any­thing in that tem­plate would have been much more dif­fi­cult. This way I ended up with every­thing right where I wanted it with­out the frus­tra­tion of fig­ur­ing out how to get the re­sults I wanted.

My the­sis has a lot of code in it, and I hate read­ing code with­out good syn­tax high­light­ing. LaTeX’s syn­tax high­light­ing sys­tems leave a lot to be de­sired, but Typst’s cer­tainly does not. It does have built in sup­port for text­mate gram­mars, the same sys­tem used by sub­lime text for syn­tax high­light­ing, but for var­i­ous rea­sons I de­cided not to use them. Instead, I just used Typst’s show rules with regex. For ex­am­ple,

will syn­tax high­light Spade con­di­tion­als. My syn­tax high­light­ing de­f­i­n­i­tions¹ are… more more com­pli­cated but pro­duce re­sults that I am very happy with. At some point, I even ended up pars­ing a sub­set of Spade in Typst with a re­cur­sive de­scent parser be­cause I re­ally wanted to high­light named ar­gu­ments. Was that a good way to spend my time? Debatable, but it cer­tainly was not some­thing I would have dreamt of do­ing in LaTeX.

LaTeX er­ror mes­sages are aw­ful. Typst is gen­er­ally much bet­ter with er­rors that point to the right place, gives ac­cu­rate in­for­ma­tion about what is wrong, and does­n’t fill the ter­mi­nal with garbage. No more Missing $ in­serted!”.

Typst’s bib­li­og­ra­phy man­age­ment leaves some things to be de­sired when writ­ing a whole the­sis. The first road­block I en­coun­tered was that you can only have one bib­li­og­ra­phy sec­tion and file per doc­u­ment. One per doc­u­ment is a deal breaker be­cause I need one for the in­tro­duc­tion, and one per in­cluded pa­per. My mas­ter bib file makes heavy use of Bibtex vari­ables which are in­cluded from other sources, this does not work in Typst. I ended up solv­ing it with a Makefile that merges my files into one be­fore go­ing to Typst, but that’s not ideal ²

The multi-bib­li­og­ra­phy prob­lem was worse, but luck­ily https://​typst.app/​uni­verse/​pack­age/​alexan­dria came along as I was work­ing to save the day. It re­quires a lit­tle bit of work per bib­li­og­ra­phy so I would ab­solutely have pre­ferred an au­to­mated sys­tem where I just do #bibliography(…) and would in­sert all the ci­ta­tions I’ve used since last time, but Alexandria did the job.

Then there is the style of the bib­li­og­ra­phy… At first glance, it looks fine but when you have an ad­vi­sor that is very picky about bib­li­og­ra­phy styles, things start to go wrong. For ex­am­ple, pa­per ti­tles should be writ­ten in sen­tence case with quotes around them, for ex­am­ple:

[1] F. Skarman and O. Gustafsson, Spade: An ex­pres­sion-based HDL with pipelines,” in Proc. Workshop Open-Source Des. Automat., Apr. 2023.

But in the Bibtex file it is very com­mon for the ti­tles to ap­pear in their orig­i­nal ti­tle case form (Spade: An Expression-Based HDL With Pipelines). By de­fault, Typst does not seem to do this con­ver­sion, but it can be turned on with a cus­tom .csl file. However, then it will not do it quite right. Expression-Based” turns into expression-Based” for ex­am­ple. In the end, I did the con­ver­sion to sen­tence case man­u­ally.

The sys­tem is also kind of strange about what in­for­ma­tion it in­cludes in ref­er­ences. For ex­am­ple, the @TechReport class in Bibtex has an in­sti­tute field. This does not get in­cluded, but chang­ing it to pub­lisher (which AFAIK is not a stan­dard field in Bibtex) makes it work.

I also found out that book ti­tles should not be writ­ten with quotes, but with ital­ics. I set a rule to match on book in my CSL field but it did not have an ef­fect on @Book, only on @InCollection. In gen­eral, the bib­li­og­ra­phy man­age­ment is death by a thou­sand pa­per­cuts, and a lot of them are caused by a very opaque trans­la­tion from Bibtex fields to CSL…

Wait, did­n’t I say that the er­ror mes­sages are good be­fore? I did,but they are only good in sim­ple cases. For ex­am­ple, with the Alexandria li­brary, a bib­li­og­ra­phy that fails to com­pile only says failed to parse bib­li­og­ra­phy” and does not give fur­ther er­rors. Errors in state­ful show rules also do not give any bread­crumbs back to where the er­ror was trig­gered which makes them hard to track down. In gen­eral, I would like to see a longer trace­back for er­rors to avoid hav­ing feel like I’m writ­ing la­tex again by bi­nary search­ing re­cent changes.

My the­sis also has the dreaded Layout did not con­verge in 5 at­tempts warn­ing which is pretty much im­pos­si­ble to de­bug cur­rently. In my case, things turn out fine, but it is a bit sketchy. I be­lieve this is be­ing worked on.

LaTeX is every­where. My early pa­pers were of course writ­ten in la­tex and I had to con­vert them to Typst. This was sur­pris­ingly easy with Pandoc which did 95% of the work with me just hav­ing to do a bit of fi­nal cleanup. Unfortunately, I also wrote a few new pa­pers for the the­sis that will be sub­mit­ted later, and that’s a more com­pli­cated sit­u­a­tion since jour­nals de­mand LaTeX code. My work­flow so far has been to write the ini­tial ver­sion of pa­pers in Typst, sub­mit the PDF as gen­er­ated by Typst, then for the fi­nal ver­sion sub­mit a con­verted ver­sion.

For con­ver­sion, I don’t be­lieve pan­doc works (or does­n’t work the way I want it) so I had wrote my own tool ³. It lets me do 90% of the con­tent and lay­out in Typst, use Typst for gen­er­at­ing fig­ures and code snip­pets, and then I can in­sert style tweaks with in­line LaTeX. The Typst com­piler be­ing open source was of huge help here as I just hook into that. I will talk more about that tool in a fu­ture post once one of my pa­pers com­piled us­ing it is made pub­lic

A big down­side of this is that it gen­er­ates la­tex with \includepdf for things like in­line code. I am hop­ing pub­lish­ers will not count those as fig­ures and be weirded out by them…

Everyone also knows LaTeX, so if I want to use Typst in col­lab­o­ra­tion, I force every­one I want to work with to learn it. My ad­vi­sor was not su­per pleased with that 😇

The Typst ecosys­tem is young. Being able to whip up a the­sis tem­plate and do­ing all the tweaks to make it just the way I want it is great. On the other hand, since I am prob­a­bly the first per­son at my uni­ver­sity to do it meant I had to whip up a tem­plate. For sub­mit­ting to con­fer­ences and jour­nals, there are Typst tem­plates, but they are not flaw­less. The IEEE tem­plate only has con­fer­ence vari­ant, not a jour­nal vari­ant. The LLNCS tem­plate I found on git looked OK but had the wrong mar­gins, so our pa­per ended up be­ing slightly longer when con­verted to la­tex.

With all this in mind, would I rec­om­mend us­ing Typst for a PhD Thesis? If you are like me,   absolutely   prob­a­bly. I like play­ing with pro­gram­ming lan­guages, I’m eas­ily frus­trated by tools that bother me. I also much pre­fer a tool that I can tweak to get ex­actly 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 com­pro­mised on the qual­ity of the doc­u­ment, the quick it­er­a­tion prob­a­bly made things look bet­ter than they would have oth­er­wise. It cer­tainly took some ef­fort to work around a few is­sues, and some ex­tra work set­ting up a tem­plate, but that was fun work com­pared to hav­ing to suf­fer through LaTeX’s an­noy­ances.

If you’re not like me and want a sys­tem that works out of the box, Typst to­day prob­a­bly is­n’t the right choice for a PhD the­sis. But I would still rec­om­mend play­ing with Typst for smaller things but leave the big doc­u­ments to LaTeX, for now.

Updated June 23 2025: Changed ab­solutely to prob­a­bly in the con­clu­sion and added the advisors per­spec­tive sec­tion be­low’

My ad­vi­sor had a some­what dif­fer­ent per­spec­tive on this and I think it is worth post­ing that here. This is es­sen­tially taken ver­ba­tim from a LinkedIn com­ment where we dis­cussed it:

The thing is that you HAD to tweak it to make things look the way they should. Not sure that is a ben­e­fit.

Would I, as a su­per­vi­sor, rec­om­mend some­one to use Typst if they are in a field where all man­u­scripts are writ­ten in LaTeX? No. The fact that Frans is clever and a good pro­gram­mer helped for sure. But think twice. Thrice if you are not a good pro­gram­mer. And ask Frans for the scripts he de­vel­oped to move things be­tween Typst and LaTeX.

It is sim­ply not ma­ture enough for most peo­ple to be used at this stage when you have to pro­duce doc­u­ments look­ing a par­tic­u­lar way. Unless you are will­ing to spend much time on tweak­ing things etc. It may be ma­ture for sure and some­one will have to con­tribute to make it more ma­ture for sure.

Good” thing from a su­per­vi­sor per­spec­tive is that I barely edited any text in the source at all, but had to let Frans edit the text (and for­mat). Quite in­ef­fi­cient though.

Despite the dis­agree­ment on the pro­ce­dure, I can­not stress enough that the end re­sult was great though! Both tech­ni­cally and lay­out­wise.”

He cer­tainly has a point here, es­pe­cially need­ing to be in­ter­ested in work­ing around is­sues and need­ing some pro­gram­ming ex­pe­ri­ence to get things work­ing per­fectly. The prob­lem of hav­ing to spend time ad­just­ing things is in my opin­ion hard to quan­tify since it trades easy fun up­front work for frus­tra­tion over other as­pects of the lan­guage.

...

Read the original on fransskarman.com »

3 303 shares, 19 trendiness

How to negotiate your salary package

Until I ran VaccinateCA my sin­gle most im­por­tant ca­reer con­tri­bu­tion might have been writ­ing about salary ne­go­ti­a­tion. That es­say has been read by mil­lions of peo­ple. Of those peo­ple, a rel­a­tively small per­cent­age send me email to tell me that the ad­vice has worked for them. I pre­vi­ously kept a spread­sheet of the im­pact they shared with me, and it ticked over into eight fig­ures of raises.

I thought I’d do a read of the es­say, so peo­ple can share it with fam­ily and friends that might con­nect more with au­dio than they do with text. Also, I think there is a trust fac­tor to ex­hor­ta­tions that au­dio as a for­mat achieves bet­ter than text does. And the es­say is, in ma­te­r­ial part, an ex­hor­ta­tion as much as it is sim­ply ad­vice.

For the ben­e­fit of peo­ple who just want the new bits, I’ve called them out with Patrick notes:, though they’re also spo­ken in the episode this time.

This episode is brought to you by Mercury, the fin­tech trusted by 200K+ com­pa­nies — from first mile­stones to run­ning com­plex sys­tems. Mercury of­fers bank­ing that truly un­der­stands star­tups and scales with them. Start to­day at Mercury.com

Mercury is a fi­nan­cial tech­nol­ogy com­pany, not a bank. Banking ser­vices pro­vided by Choice Financial Group, Column N. A., and Evolve Bank & Trust; Members FDIC.

(00:00) Intro

(03:25) Why ne­go­ti­a­tion mat­ters

(05:21) Shifting your mind­set to em­brace ne­go­ti­a­tion

(06:49) Your coun­ter­party does not share your men­tal model of ne­go­ti­a­tion

(12:46) Your ne­go­ti­a­tion started be­fore you ap­plied to this job

(17:21) When does a salary ne­go­ti­a­tion hap­pen?

(19:38) Sponsor: Mercury

(23:16) The first rule is what every­one tells you it is: never give a num­ber first

(28:45) Listen to what peo­ple tell you. Repeat it back to them.

(33:22) Research, re­search, re­search

(37:13) New in­for­ma­tion is valu­able and can be traded for things you want

(41:20) You have a multi-di­men­sional pref­er­ence set. Use it.

(44:08:) For your fur­ther pe­rusal

Welcome to Complex Systems where we dis­cuss the tech­ni­cal, or­ga­ni­za­tional, and hu­man fac­tors un­der­pin­ning why the world works the way it does.

Patrick: Hi. Hello every­body. My name is Patrick McKenzie, bet­ter known as pa­tio11 on the Internet. I’m here to­day alone in the stu­dio to record an es­say about salary ne­go­ti­a­tion, which I wrote a num­ber of years ago and pub­lished at kalzumeus.com. This might have been the most sin­gle im­pact­ful thing I did in the course of my ca­reer. I’ve kept a folder in Gmail for peo­ple who write in to tell me that they ac­tu­ally got a salary ne­go­ti­a­tion bump as a re­sult of this.

And I kept a spread­sheet about it un­til the low eight fig­ures be­fore keep­ing that spread­sheet was a source of stress. A cou­ple hun­dred thou­sand peo­ple read it every year. And of course many of them have told me it worked out well for them. And some­one sug­gested re­cently, you know, some peo­ple get a bet­ter ex­pe­ri­ence from lis­ten­ing to things than they get from read­ing them.

And this in par­tic­u­lar is an es­say which in­cludes quite a bit of ex­hor­ta­tion. And I think hear­ing a trusted voice say that in your ear might be help­ful for some job seek­ers. So, I will do a read­ing of this and then back on next week with a more typ­i­cal topic.

Imagine some­thing a wee bit out­side your com­fort zone. Nothing scan­dalous. Just some­thing you don’t do of­ten, don’t par­tic­u­larly en­joy, and slightly more chal­leng­ing than to­tally triv­ial. Maybe recit­ing po­etry while si­mul­ta­ne­ously stand­ing on one foot. If I told you I would pay you a hun­dred thou­sand dol­lars if you did five min­utes of po­etry recital while stand­ing on one foot, would you do it?

It’s an ab­surd im­age, but play it straight. There is no hid­den gotcha here. You won’t be video­taped. Your friends will never see you make a fool of your­self. The rev­o­lu­tion will not be YouTubed. The of­fer is ex­actly as sim­ple as you think it is. Poetry, foot, a hun­dred thou­sand dol­lars. Would you read po­etry for me?

Of course you would. You’d be scream­ingly stu­pid not to. In fact, not only would you read po­etry, you’d prob­a­bly take a po­etry class to make sure you did it right or go to the gym to ver­ify. Yep, sure enough, I can stand on one foot. Phew, pass me the Shakespeare. If you could­n’t stand on one foot, you’d fix that be­cause you know that it is much eas­ier than other things you rou­tinely ac­com­plish, and you sud­denly have a hun­dred thou­sand won­der­ful rea­sons to learn it too.

What if you were talk­ing about this at din­ner with your friends and one of them said, Oh no, I’d never do that. I just don’t do po­etry. I’m an en­gi­neer and be­sides my fa­ther told me that peo­ple who stand on one foot look silly and what do I need a hun­dred thou­sand dol­lars for any­how?” You would not clap them on the back and say, Damn straight! Man, po­ets al­ways try­ing to tempt vir­tu­ous en­gi­neers into their weird po­etry spout­ing, flamingo stand­ing ways.”

You’d say, Dude, it’s five min­utes. Heck, I’ll help you prac­tice.” This is pretty much how I feel every time I talk to my en­gi­neer­ing friends about salary ne­go­ti­a­tion. We over­whelm­ingly suck at it. We have turned suck­ing at it into a per­verse badge of virtue. We make no af­fir­ma­tive ef­forts to un-suck our­selves and to the ex­tent we read about it at all, we read bad ad­vice and re­peat it, pre­tend­ing that this makes us wise.

Dude, it’s five min­utes. Let’s un-suck your ne­go­ti­a­tion.

New to the site? Hiya. I gen­er­ally write as an en­gi­neer for en­gi­neers. Non-engineers can ben­e­fit from many of the same tech­niques, though the hir­ing mar­ket is­n’t nearly as in your fa­vor at the mo­ment as it is for en­gi­neers in most ma­jor US metro ar­eas.

Patrick notes: As an aside, 10 years later, peo­ple say, would I change the ad­vice in this es­say given the cur­rent hir­ing mar­ket for en­gi­neers? I would not change a word. So I’m say­ing that ex­plic­itly.

Your salary ne­go­ti­a­tion, which rou­tinely takes less than five min­utes to con­clude, has an out­sized in­flu­ence on what your com­pen­sa­tion is.

Compensation can in­clude money or things which are more or less fun­gi­ble re­place­ments for money, but it can also in­clude in­ter­est­ing things which you value from more time with your fam­ily to op­por­tu­ni­ties to do tasks you find ful­fill­ing to perks which make a mean­ing­ful dif­fer­ence in your day-to-day qual­ity of life.

That makes your ne­go­ti­a­tion five very im­por­tant min­utes. You gen­er­ally can’t do a to­tally bang up job on any five min­utes of work this year and have your boss give you an ex­tra $5,000. You can triv­ially pick up $5,000 in salary ne­go­ti­a­tions just by suck­ing less. Since salaries are shock­ingly durable over time, par­tic­u­larly if one is not good at ne­go­ti­at­ing, you can ex­pect a $5,000 in­crease in salary to com­pound with your stan­dard an­nual read-the-HR-chart per­cent raise, cause a sim­i­lar in­crease in your 401k con­tri­bu­tion, which also com­pounds, and es­tab­lish a higher peg for any fur­ther jobs you take if you’re un­savvy and al­low those other jobs ac­cess to your prior salary his­tory, at any rate. Accordingly, over the next 10 years, the value of $5,000 a year ex­tra salary is close to a hun­dred thou­sand dol­lars gross, and the value of $15,000 a year ex­tra, very achiev­able if you are, for ex­am­ple, a young en­gi­neer who does­n’t re­al­ize that the hir­ing mar­ket is on fire right now, even out­side of tech epi­cen­ters like Silicon Valley, is over a hun­dred thou­sand dol­lars even net of taxes.

Patrick notes: As an aside, over the course of the last decade, I know peo­ple who quite rou­tinely got $25,000 or more and not in­fre­quently got more than a hun­dred thou­sand dol­lars from ne­go­ti­at­ing well for mid-ca­reer tech pro­fes­sion­als. But I ac­tu­ally knew that was achiev­able be­fore I wrote this es­say. As a bit of au­thor’s com­men­tary, one of the rea­sons I chose $5,000 rather than quot­ing $25,000 was I felt more peo­ple would be­lieve it and there­fore at­tempt to put the ad­vice into prac­tice. But you should trust me on this topic, I think, any­how.

We’ll dis­cuss tac­ti­cal ad­vice in a mo­ment, but let’s talk about the psy­chol­ogy of ne­go­ti­a­tion first. I think that mid­dle class Americans are so­cial­ized from a very young age to view ne­go­ti­a­tion as some­thing that is vaguely dis­rep­utable and en­gaged in only by poor peo­ple. Think of the as­so­ci­a­tions you have with the word hag­gling.

Do you think of a suc­cess­ful young pro­fes­sional talk­ing about thou­sands of dol­lars in a brightly lit of­fice? No. You prob­a­bly think of an old woman ar­gu­ing over a triv­ial sum of money in a dirty flea mar­ket. If I were a lit­tle more para­noid and a lit­tle more Marxist, I’d hon­estly think that you’re so mis­in­formed about re­al­ity that it is al­most prima fa­cie ev­i­dence of a con­spir­acy to keep you in the dark about this, to the ad­van­tage of peo­ple who A) you won’t ne­go­ti­ate with, and B) who will feel ab­solutely no com­punc­tions about ne­go­ti­at­ing with you.

Principally, this will be your em­ploy­ers. People say that your house is the biggest pur­chase you’ll ever make, but it won’t be the most con­se­quen­tial ne­go­ti­a­tion. If you’re sane only about 25% or so of your gross in­come is sub­ject to the re­sults of real es­tate ne­go­ti­a­tions. Close to 100% is sub­ject to the re­sults of salary ne­go­ti­a­tions.

Thus, your salary ne­go­ti­a­tions are prob­a­bly go­ing to be the most im­por­tant fi­nan­cial de­ci­sions you will ever make. We so­cial­ize mid­dle class Americans to go into them un­pre­pared, de­mo­ti­vated, and fear­ful of suc­cess. The re­al­ity is that rich, suc­cess­ful peo­ple ne­go­ti­ate. This is one im­por­tant way in which they get and stay rich.

It is an all-day-every-day thing in much of the busi­ness world, which is where most rich peo­ple get their money.

Salary ne­go­ti­a­tions are very asym­met­ri­cal. Companies know this and rou­tinely ex­ploit it. Job seek­ers don’t, per­haps be­cause they think do­ing so would be un­fair, and the word ex­ploit makes them acutely un­com­fort­able.

So we of­ten de­fault by pre­tend­ing that the em­ployer is eval­u­at­ing the ne­go­ti­a­tion like we would. This is not true and act­ing like it is true will harm both your in­ter­ests and the in­ter­ests of your fu­ture em­ployer. For ex­am­ple, many peo­ple’s men­tal model of em­ploy­ment is that an em­ployee with a $60,000 a year salary costs about $60,000 a year to hire.

If they ne­go­ti­ate $65,000 in­stead, that’s $5,000 ex­tra which has to come from some­where. If the ne­go­ti­a­tion breaks down, then that is $60,000 saved. This men­tal model is bro­ken. First, get into the habit of see­ing em­ploy­ees like em­ploy­ers see them: in terms of fully loaded costs. To hire some­one you need to pay for their salary, true, but you also have taxes, a ben­e­fits pack­age, em­ployer con­tri­bu­tions to re­tire­ment, health­care, that free soda your HR de­part­ment loves men­tion­ing in the job ads, and what have you.

Patrick notes: A bit of trivia: for a US em­ployer of pro­fes­sion­als, the largest com­po­nent af­ter salary/​stock-based com­pen­sa­tion is usu­ally health­care, fol­lowed by pay­roll taxes.

The fully loaded costs of em­ploy­ees are much higher than their salary: ex­actly how much higher de­pends on your lo­cal­i­ty’s laws, your ben­e­fits pack­age, and a bunch of other HR ad­min­istrivia. But a rea­son­able guessti­mate is be­tween 150% and 200% of their salary.

Patrick notes: As an aside, lower than that out­side the tech in­dus­try and en­gi­neer­ing pro­fes­sions. But if you’re ball­park­ing at 140% across most of the pop­u­lace, you’re not in a crazy place.

The fully loaded cost of an en­gi­neer re­ceiv­ing mar­ket 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 re­ceiv­ing a heav­ily be­low mar­ket salary, such as if they’re work­ing for a startup.

If you have a kid brother who ma­jored in Flemish dance and got a mod­est full-time job at a non­profit, his fully loaded cost is still prob­a­bly $4,000 a month or more.

Patrick notes: As an aside, those quotes for mar­ket salaries are very stale at this point. Also the quote for the value of a Flemish dance ma­jor’s salary is un­for­tu­nately stale 10 years later, less be­cause the value of Flemish dance has in­creased and more be­cause the value of a dol­lar has de­creased.

This is a round­about way of telling you that com­pa­nies are not sen­si­tive to small dif­fer­ences in em­ployee wages be­cause em­ploy­ees are so darned ex­pen­sive any­how. You see $5,000 and think, Holy cow, even af­ter taxes, that’s a whole new va­ca­tion. $5,000. $5,000. It would be so very, very greedy of me to ask for 5,000 whole dol­lars.”

The HR de­part­ment sees $5,000 and thinks Meh, even af­ter we kick in the ex­tra taxes, that’s only about 3% of their fully loaded cost for this year any­how, or seven hun­dredths of 1% of that team’s hir­ing bud­get. I won­der if the cafe­te­ria has car­rot cake to­day.”

Patrick notes: As an aside, if you ac­tu­ally join the cor­po­rate world and do bud­get­ing for teams, you will not be bud­get­ing in dol­lars. You will be bud­get­ing in—and good­ness, I hate this word in the depths of my soul—head­count. Because head­count A and head­count B, mean­ing per­son A and per­son B, are close enough in wages and close enough in costs that at a de­part­ment level rather than hav­ing your ab­strac­tion be­ing, well, we spent 2 mil­lion and $20,000 on salary and re­lated ex­penses this year, it’s much eas­ier to com­mu­ni­cate: Okay, you pre­vi­ously had bud­get for 20 head­count. You have gone to your boss and asked for more bud­get for the next year, and they have given you two ad­di­tional head­count. And again, as long as you’re within the salary bands for your com­pany, no­body cares what those two ad­di­tional quote un­quote head­count get from you in the ne­go­ti­at­ing room.

Virtually any amount of money avail­able to you per­son­ally is mouse drop­pings to your prospec­tive em­ployer. They will not feel of­fended if you ask for it. I re­ceived a com­ment that this is un­true for star­tups by some­one to­day. For a funded startup which has enough en­gi­neers to war­rant a foos­ball table, the com­pany pay­roll is well north of a hun­dred thou­sand dol­lars a month.

Making a new hire is a big com­mit­ment, but they still have a lot of flex­i­bil­ity on the de­tails be­cause the de­tails do not shave months off their run­way. We’ve been talk­ing about your em­ployer as an ab­strac­tion, but in the in­stant case you’re talk­ing to an ac­tual per­son. Let’s call him Bob. It’s Bob’s job to get you signed with the com­pany as cheaply as pos­si­ble, but Bob is not su­per mo­ti­vated to do so be­cause Bob is not spend­ing Bob’s money to hire you.

Bob is spend­ing Bob’s bud­get. Bob gen­er­ally does not get large per­for­mance in­cen­tives for shav­ing money off of his hir­ing bud­get. You get a new MacBook if you con­vince Bob to give you $5,000 ex­tra, but Bob gets, if he is anom­alously lucky, a din­ner at TGI Fridays if he con­vinces you to take $5,000 less.

In fact, there are many or­ga­ni­za­tions and many Bobs for whom power, sta­tus, and money come from ask­ing for more bud­get every year. If you turn out to be on the ex­pen­sive side, that is great for Bob be­cause A) he man­ages a high pow­ered peon, so he must be a high pow­ered man­ager, and B) this will help Bob get more bud­get next quar­ter.

So if you’re wor­ried about what Bob will think of your moral char­ac­ter, or if you want to com­pen­sate Bob be­cause you feel you owe him for this job op­por­tu­nity, do Bob a solid and ne­go­ti­ate in a spir­ited fash­ion with him. You don’t owe Bob for giv­ing you this job op­por­tu­nity, by the way. Please in­ter­nal­ize this.

Everyone in this dis­cus­sion is a busi­ness­man. Some might call them­selves reg­u­lar em­ploy­ees, which just means they’re busi­ness­men with self-con­fi­dence is­sues and poor busi­ness skills. If the deal makes eco­nomic sense, it will hap­pen. If it does­n’t, firm hand­shakes will be ex­changed, non-spe­cific promises will be ut­tered, and every­one will for­get about this dis­cus­sion in a mat­ter of hours. You will not be black­balled for ne­go­ti­at­ing. Bob could­n’t care less, and even if he did care, he has bet­ter things to do with his time than worry about a can­di­date he did­n’t hire. Bob is work­ing through a list of a dozen peo­ple right now, and his man­ager Dave is be­ing such a hard case about that pro­ject sched­ule, and he’s not sure he can make his daugh­ter’s pi­ano recital, and the cafe­te­ri­a’s car­rot cake was a lit­tle dry. Bob is far, far less in­vested in this ne­go­ti­a­tion than you are.

Your ne­go­ti­a­tion does­n’t hap­pen in a vac­uum. Generic ca­reer ad­vice is a lit­tle out­side the scope of this post, though I’ve pre­vi­ously writ­ten a bit with en­gi­neers in mind that folks from many walks of life tell me was use­ful.

But to make a long story short, many peo­ple think job searches go some­thing like this: You see an ad for a job on Monster.com or wher­ever. You send in a re­sume. You get an in­ter­view. You get asked for salary re­quire­ments. You get of­fered your salary re­quire­ment plus 5%. And then you try to ne­go­ti­ate that of­fer if you can bring your­self to do it.

This is an ef­fec­tive strat­egy for job search­ing if you en­joy al­ter­nat­ing bouts of be­ing un­em­ployed, be­ing poorly com­pen­sated, and be­ing treated like a dis­pos­able peon. I served three years as a dis­pos­able peon in a Japanese mega­corp and might be pro­ject­ing a tad bit here. Regardless, my loss is your gain.

You will have much, much bet­ter re­sults if your job search looks some­thing more like:

(Optional but rec­om­mended) Establish a rep­u­ta­tion in your field as some­one who de­liv­ers mea­sur­able re­sults vis-a-vis im­prov­ing rev­enue or re­duc­ing costs.

Have a hir­ing man­ager talk with you specif­i­cally about an open­ing that they want you specif­i­cally to fill.

Talk in­for­mally (and then pos­si­bly for­mally) and come to the con­clu­sion that this would be a great thing if both sides could come to a mu­tu­ally ful­fill­ing of­fer.

Let them take a stab at what that mu­tu­ally ful­fill­ing of­fer would look like.

Suggest ways that they could im­prove it such that the path is cleared for you do­ing that voodoo that you do so well to im­prove their rev­enue and/​or re­duce their costs.

(Optional) Give the guy hir­ing you a re­sume to send to HR for their records. Nobody will read it be­cause re­sumes are an in­sti­tu­tion cre­ated to mean that no one has to read re­sumes. Since no one will read it, we put it in the process where it lit­er­ally does­n’t mat­ter whether it hap­pens or not, be­cause if you had your job of­fer con­tin­gent on a doc­u­ment that every­one knows no one reads, that would be pretty eff­ing stu­pid now, would­n’t it?

You might think that de­sir­able jobs at well-man­aged com­pa­nies (Google, Microsoft, hot startup FooWithTheWhat.ly, etc) have lay­ers and lay­ers of bu­reau­cratic scar tis­sue (a great im­age from 37signals) to en­sure that their hir­ing will con­form to es­tab­lished processes and that of­fers will not be given to can­di­dates sourced by us­ing in­for­mal net­works and in­ter­per­sonal con­nec­tions.

If you be­lieve this, you have a dan­ger­ously in­com­plete men­tal model of how the world op­er­ates. I have a spe­cific rec­om­men­da­tion for you to make that model more com­plete: start talk­ing to peo­ple who ac­tu­ally work for those com­pa­nies and who have hir­ing au­thor­ity. Virtually no com­pany has a hir­ing process which is ac­cu­rately ex­plained by blog posts about the com­pany.

No com­pany any­where has a hir­ing process which is ac­cu­rately ex­plained by their own doc­u­ments about how the hir­ing process works. I won’t give names, but all of the fol­low­ing are com­pa­nies you’ve heard of:

* Ironclad non-com­pete with an IP as­sign­ment pro­vi­sion of ma­jor multi­na­tional… struck from the con­tract with four sen­tences of dis­cus­sion.

* Major pop­u­lar tech em­ployer of­fered de­sir­able em­ployee $X as a salary be­cause it was the max the HR de­part­ment al­lows for that po­si­tion.” He got hired that week at $2X. All par­ties — hir­ing or­ga­ni­za­tion, HR, and em­ployee — think they pulled one over on the other par­tic­i­pants.

* [Deleted funny story]. I now can’t tell you the funny story, be­cause lit­er­ally two hours be­fore pub­li­ca­tion some­one emailed me for ad­vice about a sit­u­a­tion that he be­lieves is in­cred­i­bly un­just at his com­pany, and it is ex­actly the funny story to the let­ter. Now if I tell you the funny story he might think Dang, I write Patrick in con­fi­dence and it ends up on the blog.” So, no funny story to­day. Suffice it to say that in my old age I treat Dilbert less as farce and more as doc­u­men­tary.

Patrick notes: As an aside, peo­ple do oc­ca­sion­ally come to me 10 years later and say, So can you tell the funny story now?” And I don’t re­mem­ber what the spe­cific funny story was, al­though I have an inkling of the genre that it was.

* We can’t hire en­gi­neers fast enough through our stan­dard processes so, meh, I guess we’ll cir­cum­vent them by just toss­ing $1 mil­lion per em­ployee at whomever they cur­rently work for. Who cares, it is­n’t my mil­lion.”

Patrick notes: I’ve heard that sub­se­quently ex­plained by the M&A team, which is the team that is be­ing spo­ken of here obliquely, that be­cause of var­i­ous fe­lic­i­ties within the com­pany, the M&A team has a large bud­get di­rected from on high to make sure that the com­pany is able to route around its own processes for get­ting smart peo­ple into the com­pany and some­times get­ting pro­jects off the ground. And dif­fer­ent or­ga­ni­za­tions would have dif­fer­ent pref­er­ences as to which of the two was M&A’s larger pri­or­ity.

Only ne­go­ti­ate salary af­ter you have agree­ment in prin­ci­ple from some­one with hir­ing au­thor­ity that, if a mu­tu­ally ac­cept­able com­pen­sa­tion can be agreed upon, you will be hired.

This is re­ally, re­ally im­por­tant be­cause it has di­rect im­pli­ca­tions for your ne­go­ti­at­ing strat­egy. First, the com­pany is go­ing to spend a lot of time and ef­fort on get­ting you to the point of agree­ment-in-prin­ci­ple. Pretend you’ve gone through six rounds of in­ter­views. (You prob­a­bly won’t if you get hired on in­for­mal net­works, be­cause all bar­ri­ers van­ish when im­por­tant peo­ple want a deal to get done, but let me give some ad­vice to some­one a lit­tle less well-sit­u­ated.) Do some quick men­tal math on what that ac­tu­ally cost the com­pany, with ref­er­ence to one man-month of an en­gi­neer’s time costs $20k” like we dis­cussed ear­lier. You’ll quickly reach the con­clu­sion that the com­pany has spent thou­sands of dol­lars just talk­ing to you, and that does­n’t even count the thou­sands they spent de­cid­ing to talk to you in­stead of who­ever is­n’t in the room right now. Walking away from the ne­go­ti­a­tion means that they lose all that in­vest­ment. (Yeah, sunk cost fal­lacy and all, but since peo­ple pre­dictably act in this fash­ion you should, well, pre­dict that they will act in this fash­ion.) They re­ally want to reach an agree­ment with you.

Patrick notes: As an aside, I think I would say 10 years later, as some­one who has been un­der the gun for a num­ber of weeks and try­ing to find a can­di­date for a po­si­tion, you pay an on­go­ing tax to your pro­duc­tiv­ity at the other parts of your job when you have an open role that you are ac­tively in­ter­view­ing peo­ple for, try­ing to suss out can­di­dates on LinkedIn, ask­ing peo­ple for rec­om­men­da­tions, etc., etc. Your busi­ness needs that per­son to progress or at least be­lieves it does. And you would like to get to the other parts of your job, which are for most hir­ing man­agers things that you are scored for much more di­rectly than your per­for­mance in ac­tu­ally hir­ing. And so, if you have a can­di­date who is so close to the fin­ish line and who you are happy with in terms of their like­li­hood of be­ing the ap­pro­pri­ate fit, you re­ally don’t want to lose on the last day over a triv­ial amount of salary. And so, you be­come very in­cen­tivized to just say yes. In the same way that a per­son who is des­per­ate for a job be­comes very in­cen­tivized 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 coun­ter­par­ty’s mouth, I’ll be un­em­ployed again for the next three or six months.”

Patrick: The sec­ond im­pli­ca­tion is that the in­ner serf wor­ry­ing If I even at­tempt to ne­go­ti­ate this, the deal will fall through” is wor­ry­ing for noth­ing. They’ve got thou­sands in­vested in this dis­cus­sion by this point. They want you. The ab­solute worst out­come of ne­go­ti­at­ing an of­fer in good faith is that you will get ex­actly the con­tents of that of­fer.

Let me say that again for em­pha­sis: ne­go­ti­at­ing never makes worth­while of­fers worse. This means you need what po­lit­i­cal sci­en­tists call a com­mit­ment strat­egy: you al­ways, as a mat­ter of pol­icy, ne­go­ti­ate all of­fers. (In this wide world I’m sure you can find a com­pany who still makes ex­plod­ing of­fers, where you get one yay-or-nay and then the of­fer is gone. You have a sim­ple re­course to them: refuse them and deal with peo­ple who are will­ing to be pro­fes­sion­als. You’re not a peas­ant. Don’t act like one.)

This also means you do not start ne­go­ti­at­ing un­til you al­ready have a Yes-If. (Yes-If we agree on terms.) Do not start ne­go­ti­at­ing from No-But. (No-But we might hire you any­way if you’re re­ally, re­ally eff­ing cheap.) You don’t want to work for a No-But for the same rea­sons that smart em­ploy­ers hate hir­ing can­di­dates who are a No-But (No-But maybe if not on my team, etc). If they’re lean­ing to not hir­ing you, you will com­pro­mise ex­ces­sively on ne­go­ti­a­tion to get them to hire you. Compromising ex­ces­sively is not the point of the ex­er­cise. It is a sell­er’s mar­ket for tal­ent right now: sell to some­one who is happy to buy.

This means that any dis­cus­sion of com­pen­sa­tion prior to hear­ing Yes-If is pre­ma­ture. If you’re still at the job in­ter­view and you’re talk­ing price, you are do­ing some­thing wrong. (Read the room: it is en­tirely pos­si­ble that you came for a job in­ter­view, fin­ished it, and pro­ceeded di­rectly to a salary ne­go­ti­a­tion. That’s prob­a­bly sub­op­ti­mal, but it is OK. Just don’t give the em­ployer the op­tion of hav­ing the sched­ule be job in­ter­view, salary ne­go­ti­a­tion, and back to job in­ter­view if they dis­cover that you have a spine.) The ideal res­o­lu­tion to the job in­ter­view is for both sides to be op­ti­mistic about the arrange­ment, and then you close with a warm hand­shake and I look for­ward to re­ceiv­ing your of­fer by, oh, would to­mor­row be enough time for you to run the num­bers?”

You then have a high like­li­hood of do­ing your salary ne­go­ti­a­tion over email, which is likely to your ad­van­tage ver­sus do­ing it in real time. Email gives you ar­bi­trary time to pre­pare your re­sponses. Especially for en­gi­neers, you are likely less dis­ad­van­taged by email than you are by hav­ing an ex­pe­ri­enced ne­go­tia­tor talk­ing to you.

Every hand­book on ne­go­ti­a­tion and every blog post will tell you not to give a num­ber first. This ad­vice is al­most al­ways right. It is so right, you have to con­struct crazy hy­po­thet­i­cals to find edge cases where it would not be right.

For ex­am­ple, if your pre­vi­ous salary was set dur­ing the dot-com bub­ble and you are ne­go­ti­at­ing af­ter the bub­ble popped, you might men­tion it to an­chor your price higher such that the step down will be less se­vere than it would be if you en­gaged in free ne­go­ti­a­tions un­en­cum­bered by the bub­bi­li­cious his­tory.

Does this sound vaguely dis­rep­utable to you? Good. This vaguely dis­rep­utable abuse of his­tory is what every em­ployer ask­ing for salary his­tory, salary range, or de­sired salary is do­ing. They are all us­ing your pre­vi­ous anom­alously low salary—a salary which did not re­flect your true mar­ket worth, be­cause you were young or in­ex­pe­ri­enced or un­skilled at ne­go­ti­a­tion or work­ing at a dif­fer­ent firm or in an­other line of work en­tirely—to jus­tify pay­ing you an anom­alously low salary in the fu­ture.

Never give a num­ber. But Patrick,” you cry. I don’t want to be dif­fi­cult.” You’re not be­ing dif­fi­cult. You’re not do­ing any­thing im­moral. You’re not be­ing un­pro­fes­sional. They’re busi­ness­men, some­times they don’t have all the in­for­ma­tion they would love to have prior to mak­ing a de­ci­sion. They’ll deal. They al­ready deal with every em­ployee that they’ve ever had who was not a door­mat at ne­go­ti­a­tions, which in­cludes es­sen­tially all of the em­ploy­ees they re­ally value.

Ramit Sethi (more on him later) in­tro­duced me to a con­cept that he calls Competence Triggers: ba­si­cally, if you have to judge some­one’s skill based on a se­ries of brief in­ter­ac­tions, you’re go­ing to pat­tern match their be­hav­ior against other peo­ple who you like.

When peo­ple with hir­ing au­thor­ity think of win­ners, they think of peo­ple like them who live and breathe this busi­ness thing. They ne­go­ti­ate things as a mat­ter of course: that is a ma­jor por­tion of the value they bring to the com­pany. Volunteering a num­ber when asked says the same thing to peo­ple with hir­ing au­thor­ity that flunk­ing FizzBuzz says to an en­gi­neer: this per­son may be a won­der­ful snowflake in other re­gards, but on the thing I care about, they’re cat­a­stroph­i­cally in­com­pe­tent.

It will also cause them to retroac­tively ques­tion com­pe­ten­cies they’d pre­vi­ously cred­ited you with. I have lit­er­ally heard that feed­back, in so many words, from folks with whom I’ve had suc­cess­ful busi­ness deal­ings. (A funny in hind­sight story: I cost my­self five fig­ures with a sin­gle email. The par­tic­u­lars are bor­ing, but suf­fice it to say I fairly re­cently made a wet-be­hind-the-ears-en­gi­neer er­ror in quot­ing a client. He no­ticed. So did my bank state­ment. My bank state­ment kept quiet, but the client opined that it made him think less of me un­til we ac­tu­ally got to work to­gether.)

So any­how, you may well hear rea­sons why you should give a num­ber.

Objection: I re­ally need a num­ber to move the process for­ward.”

What you should think: You’re ly­ing to me to at­tempt to get me to com­pro­mise my ne­go­ti­at­ing po­si­tion.”

What you should say: I’m more con­cerned at the mo­ment with talk­ing to you about dis­cov­er­ing whether we’re a mu­tual fit. If we’re a great fit, then I can be flex­i­ble on the num­bers with you and you can be flex­i­ble on the num­bers with me. If we’re not a great fit, then the num­bers are ul­ti­mately ir­rel­e­vant, be­cause your com­pany only hires A play­ers and I only work at roles I would be an A player at.”

What you should think: You’re ly­ing to me to at­tempt to get me to com­pro­mise my ne­go­ti­at­ing po­si­tion.”

What you should say: Give me git ac­cess and I’ll fix it in a jiffy! both peo­ple laugh No, se­ri­ously speak­ing, I’m more con­cerned at the mo­ment with dis­cov­er­ing whether we’re a mu­tual fit… Oh, it’s phys­i­cally im­pos­si­ble? Put in $1 then to get the ball rolling, and we’ll cir­cle back to this later.”

Objection: We want to fig­ure out whether you’re an ap­pro­pri­ate can­di­date for the po­si­tion.”

What you should think: You’re ly­ing to me to at­tempt to get me to com­pro­mise my ne­go­ti­at­ing po­si­tion.”

What you should say: It’s so im­por­tant to me that this is a good mu­tual fit for us. Let’s talk about why I’m a great fit for this po­si­tion: I know you’re con­cerned about $FILL_IN_THE_BLANK. In ad­di­tion to my pre­vi­ous suc­cesses do­ing it, I have some great ideas for what I’d do about that if I was work­ing at your com­pany. Would you like to drill into those or is there an­other job area you’re more con­cerned about to start with?”

...

Read the original on www.complexsystemspodcast.com »

4 212 shares, 19 trendiness

Beating Brainrot by Button

The in­ter­net is the bane of my ex­is­tence. Ads, dis­trac­tions, spon­sored con­tent, bad news, bad ideas, more ads, so­cial me­dia, an­ti­so­cial me­dia, even more ads.

Also, I’m a soft­ware de­vel­oper, so the in­ter­net is ba­si­cally in­dis­pens­able for me, a cen­tral pil­lar of my in­come and a con­ve­nient way to com­mu­ni­cate with friends, fam­ily, loved ones, as­so­ci­ates, ac­quain­tances, peo­ple from my sports club, su­per­po­si­tions of all pre­vi­ous groups and en­e­mies alike. And I think my com­pany runs ads, so in a way ads pay for my cloth­ing and food and stuff. So I guess my cur­rent stance to­wards the in­ter­net would be some­what neu­tral-ish, but that may still change.

But I can try to re­duce or at least mod­er­ate some of the neg­a­tive as­pects of the in­ter­net, es­pe­cially those that keep me hooked like some sad ad­dict: so­cial me­dia. I’ve tried com­pletely block­ing it via my net­works’ ad blocker, but the an­i­mal in me cir­cum­vented that block­age by turn­ing off wifi on the cell phone and thus doom scrolling ga­lore on my cell plan. Also, my wife needs some so­cial me­dia for work or re­search (and of course guilty plea­sure) at least some of the time, but she’s as bad in mod­er­a­tion as me. So com­pletely block­ing is not vi­able, but al­low­ing un­re­stricted in­ter­net ac­cess to two rea­son­able adults is some­how also out of the ques­tion.

Until to­day, when Neil Chen posted a sim­ply ge­nius idea to hacker news. Neil de­scribes how a smart plug is used to dy­nam­i­cally rewrite some ublock Origin lists to al­low un­fet­ted ac­cess to all con­tent dis­tract­ing. The idea is fan­tas­tic, but the im­ple­men­ta­tion not prac­ti­cal for my/​our sce­nario, so I’m adapt­ing it here.

I’m al­ready us­ing an net­work wide ad blocker via my gli.net router called Adblock Home”. And for a smart home with­out in­ter­net ac­cess (see pre­am­ble) I’m us­ing Home Assistant.

So we have:

Surely there must be some way to wire those to­gether hay­wire-ly.

Just like Neil, I want some but­ton to press to al­low for ac­cess to so­cial me­dia, but only for a lim­ited time (say 15 min­utes). After that time has passed, my wife and me must en­dure a cool-down phase un­til we can push the but­ton again (say one hour). So when­ever we push the but­ton, the fil­ters will be dis­abled for 15 sin-filled min­utes. A Zigbee en­abled smart plug is ad­e­quately suited.

Adguard Home is very con­ve­niently in­te­grated into gli.net’s fork/​cus­tomiza­tion of OpenWRT (formerly Lede, for­merly OpenWRT). Frst, we set up the ser­vices we wish to block as cus­tom rules. Sadly we can­not use the built-in ser­vices, be­cause they don’t seem to count as custom” and thus can­not be tog­gled on and off.

Adguard Home has a fan­tas­tic API, avail­able in OpenAPI yaml. You lo­gin to that API with the nor­mal user and pass­word. But: The routers main in­ter­face some­how by­passes the au­then­ti­ca­tion, which means Adguard Home has no user/​pass­word which we could use for API ac­cess. This fo­rum link ex­plains how one can be added with­out break­ing the ex­ist­ing in­te­gra­tion. Basically, we have to add them by hand to the /etc/Adguard/config.yaml file. Change:

This pass­word is the bcrypt hash of ad­min, but of course thats not the pass­word I’m ac­tu­ally us­ing. Use cy­berchef to gen­er­ate the hash.

Home Assistant comes with a func­tional, but some­what re­duced in­te­gra­tion. It can how­ever do all we need.

Among the switches it ex­poses is Filtering”, which en­ables or dis­ables ap­pli­ca­tion of cus­tom fil­ter rules. We can flick this switch via au­toma­tion.

After some trial and er­ror, I’ve ar­rived at this au­toma­tion, which as of now seems to work just fine and just like I in­tended.

So wait, can’t I still just dis­able wifi to con­tinue the in­ces­sant pol­lu­tion of my fee­ble brain with cat videos?

Well, yes. But this helps me ex­er­cise mod­er­a­tion, and like with any poi­son, so­cial me­dia is tol­er­a­ble in small doses.

...

Read the original on www.romanklasen.com »

5 156 shares, 9 trendiness

The Cultural Decline of Literary Fiction

Recently, there has been a lot of talk about the decline of the lit­er­ary (straight) (white) male.” The mar­ginal ben­e­fit pro­vided by an ad­di­tional take on this topic, some clever new an­gle walk­ing the tightrope be­tween edgy and po­lit­i­cally cor­rect, is rapidly ap­proach­ing zero.

The prob­lem with these ar­ti­cles—and the dis­course as a whole—is that none of them go far enough. There is an im­pass­able chasm be­tween the star­dom of Mailer, Updike, McCarthy, DFW, Franzen, etc and who­ever is get­ting fel­low­ships and is pub­lished in The New Yorker or Paris Review to­day. Yet the chief com­plaint from ad­vo­cates for the lit­er­ary men is that they are un­fairly de­nied these fel­low­ships and pub­li­ca­tions. I’m sure they’re be­ing dis­crim­i­nated against, but you’re just re­plac­ing one group of peo­ple you’ve never heard of, with a dif­fer­ent group of peo­ple you’ve never heard of with dif­fer­ent sex or­gans.

This may well be a Title VII prob­lem, but there’s a bait-and-switch hap­pen­ing: the rhetor­i­cal ap­peal of the con­ver­sa­tion about lit­er­ary men de­pends on the fall-off from The Greats—the jux­ta­po­si­tion be­tween their suc­cess and the bar­ren op­por­tu­ni­ties for lit­er­ary men to­day. Yet no one seems will­ing to con­tend with the fact that this is not just an is­sue for lit­er­ary men, it’s an is­sue for every­one. What non-iden­tity qual­ity do The Greats have in com­mon that vir­tu­ally all young con­tem­po­rary lit­er­ary fic­tion writ­ers (Rooney aside), don’t? It’s ob­vi­ous—peo­ple knew about them and bought their books.

The 21st cen­tury col­lapse in American lit­er­ary fic­tion’s cul­tural im­pact, mea­sured by com­mer­cial sales and the ca­pac­ity to pro­duce well-known great writ­ers, stems less from iden­tity pol­i­tics or smart­phones than from a com­bined sup­ply shock (the shrink­ing mag­a­zine or acad­e­mia pipeline) and de­mand shock (the move away from writ­ing books that ap­peal to nor­mal read­ers in or­der to seek pres­tige in­side the world of lit-fic­tion)

To start, take a look at Publisher Weekly’s list of best-sell­ing nov­els 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 lit­tle cruel to rub it in, but for com­par­ison’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-sell­ing book of 1969

* James Jones’s From Here to Eternity (861 pages) was the best-sell­ing book of 1951

* Lolita made it to #3 in 1958 and held on at #8 in 1959 (the #1 spot in 1958 be­longed to Doctor Zhivago)

* Ragtime was the best-sell­ing book of 1974

* The Corrections — #5 in 2001 — was the most re­cent work of lit­er­ary fic­tion to make the yearly top ten best-sell­ers

* No work of lit­er­ary fic­tion has been on Publisher’s Weekly’s yearly top ten best-sell­ing list since 2001

* Percival Everett’s James is the most re­cent work of lit­er­ary fic­tion to make the New York Times’s weekly best­seller list — it was the best-sell­ing book in the last week of 2024

* Before James, the most re­cent one was Amor Towles’s The Lincoln Highway for one week in October 2021

In the mad rush for sta­bil­ity among a shrink­ing pool of re­sources (financial and cul­tural), au­thors and dis­course-mak­ers seem to have fallen into malaise bick­er­ing about how these re­sources should be di­vided up in­stead of why the pool is shrink­ing. It does­n’t mat­ter that no white man born af­ter 1984 has been pub­lished by The New Yorker, be­cause I hon­estly doubt any se­ri­ous reader of fic­tion could eas­ily bring to mind a short story by any younger writer in The New Yorker at all. The gap be­tween now and The Greats mat­ters for all writ­ers, not just men. So the real prob­lem is lit­er­ary fic­tion’s whole­sale de­cline, not how the ever-smaller pie gets sliced up.

After read­ing some ar­ti­cles on the de­cline of American lit­er­ary fic­tion, I came away with the sense that no one is par­tic­u­larly in­ter­ested in why lit­er­ary fic­tion’s rel­e­vance has plum­meted, in­stead the au­thors of these pieces are in­tent on prov­ing only whether or not salient is­sues like smart­phones, dis­crim­i­na­tion, or woke pub­lish­ers might have some­thing to do with it. But while it’s not dif­fi­cult to cob­ble to­gether a story about why these is­sues might have had some ef­fect, no one has both­ered to ask whether these are re­ally the dri­vers—if they drive the dis­course, surely they’re the ac­tual causes right?

Let’s look at two rep­re­sen­ta­tive ar­ti­cles that touch on the gen­eral de­cline of lit­er­ary fic­tion: Will Blythe’s The Life, Death—And Afterlife—of Literary Fiction from 2023 and ARX-Han’s more re­cent The de­cline of lit­er­ary fic­tion and the prin­ci­pal-agent prob­lem in mod­ern pub­lish­ing.

Han has a com­pelling the­sis that fits in along­side the re­cent com­plaints about anti-male dis­crim­i­na­tion in pub­lish­ing:

Here’s one hy­poth­e­sis be­hind the de­cline in mod­ern lit­er­ary fic­tion: I be­lieve that the lit­er­ary mar­ket has be­come less ef­fi­cient be­cause of an in­creased de­gree of prin­ci­pal-agent con­flict be­tween ed­i­tors and their pub­lish­ing houses. I sus­pect that the rea­son for this in­creased prin­ci­pal-agent con­flict is in­creased sta­tus com­pe­ti­tion be­tween lit­er­ary ed­i­tors dri­ven by the cul­ture war. To me, it seems like ed­i­tors are com­pet­ing on the axis of moral sta­tus.The over­rid­ing im­per­a­tive be­hind elevating di­verse voices” in pub­lish­ing is ac­tu­ally an axis of moral com­pe­ti­tion be­tween lit­er­ary ed­i­tors.”

It’s quite clever: ed­i­tors are com­pet­ing on sta­tus and cor­rectly (from their per­spec­tive) op­ti­mize for di­ver­sity in­stead of qual­ity. This is an in­ter­est­ing the­ory, but it’s not a great ex­pla­na­tion for the gen­eral de­cline in lit­er­ary fic­tion’s qual­ity, sales, and cul­tural cap­i­tal for a fairly ob­vi­ous rea­son—the tim­ing does­n’t work.

It be­gan, re­ally, in 2010, 2012,” the award-win­ning au­thor Lionel Shriver, best known for her novel We Need to Talk About Kevin, told The Free Press.”

This is sim­ply too late in time to sat­is­fac­to­rily ex­plain the de­cline of lit­er­ary fic­tion; maybe it can speak to some of the qual­ity and pop­u­lar­ity de­cline post-2010, but a full ex­pla­na­tion should be able to ex­plain a steady de­cline in con­sumer pop­u­lar­ity be­gin­ning in the 1980s & 90s un­til al­most com­plete col­lapse in the early 2000s. Nothing about Han’s the­ory can ex­plain, for ex­am­ple, why no work of lit­er­ary fic­tion has been a yearly best-seller since 2001.

I’m also not fully con­vinced by the struc­ture he sets up. I agree that there is a di­ver­gence be­tween sales and ed­i­tor sta­tus op­ti­miza­tion, but I’m not sure why the mode of op­ti­miza­tion should be moral sta­tus. Another mode of op­ti­miza­tion that is or­thog­o­nal to mon­e­tary suc­cess is crit­i­cal ac­claim — if the book you edited or pub­lished won a Pulitzer/Booker it feels in­tu­itively that you’ve out-sta­tused some other pub­lish­er’s ac­crued di­ver­sity/​iden­tity sta­tus. Of course it’s much eas­ier to ac­crue sta­tus by way of the moral sta­tus’ Han talks about, but this cuts both ways be­cause this sort of sta­tus that is easy to ac­quire won’t be worth as much as connection to lit­er­ary pres­tige’ which is much harder to get. And there is of course an­other re­lated prin­ci­pal-agent prob­lem at work here with au­thors them­selves—lit­er­ary fic­tion prob­a­bly be­ing unique among sub­gen­res in that it feels like au­thors value awards and the opin­ions of crit­ics far more than sales. More on that later.

No one can deny that pub­lish­ing has gone woke,’ but this alone is in­suf­fi­cient to ex­plain lit­er­ary fic­tion’s nose­dive.

In the 2023 Esquire ar­ti­cle, The Life, Death—And Afterlife—of Literary Fiction, Will Blythe of­fers up an­other ex­pla­na­tion:

In the past twenty-five or so years, the mag­a­zine in­dus­try has shrunk in the midst of this dataism,” par­tic­u­larly in its ren­di­tion of lit­er­ary fic­tion. Three years ago, Adrienne LaFrance, ex­ec­u­tive ed­i­tor of The Atlantic, de­cided to help de­vise an on­line des­ti­na­tion for such fic­tion, short sto­ries in par­tic­u­lar, be­gin­ning with one by Lauren Groff. The thin­ning of print mag­a­zines this cen­tury,” she writes, meant a culling of fic­tion.” The in­ter­net, in her es­ti­ma­tion (and mine), makes fairly ef­fi­cient work of splin­ter­ing at­ten­tion and de­vour­ing time.” As a re­sult, she con­cludes that lit­er­ary read­ing is far too eas­ily set aside.”

Why did mag­a­zines go un­der, why does no one read lit­er­ary fic­tion any­more? The in­ter­net,” Blythe sternly replies.

People don’t read books or short sto­ries in mag­a­zines any­more be­cause they’re too busy scrolling? There’s data on this: ac­cord­ing to the National Endowment of the Arts, the num­ber of Americans who read lit­er­a­ture” has fallen from 56.9% in 1982 to 46.7% in 2002 to 38% in 2022. I’m not even go­ing to bother pulling data on the per­cent of time peo­ple spend on their phones or on the in­ter­net. So the in­ter­net means peo­ple spend less time read­ing books and (presumably) less time read­ing lit­er­ary fic­tion in par­tic­u­lar be­cause it’s weighty, bor­ing, dense, etc. There are two prob­lems with this the­ory: one is that the facts are wrong — the ac­tual size of the fic­tion read­ing pop­u­la­tion has not shrunk a mean­ing­ful amount (population growth), and the sec­ond is that even if the facts were right, it could­n’t be cor­rect: in 1955, the num­ber of Americans who even read one book a year (39%) was lower than it is to­day (53%). And the 1950s and 1960s were sup­pos­edly the golden-age of American fic­tion. What’s ac­tu­ally go­ing on?

It’s ob­vi­ous that the distraction” an­gle is un­ten­able. It has­n’t di­rectly im­pacted the num­ber of read­ers enough to mat­ter. Still there are other an­gles here, what about taste? Blythe’s piece can also be read as say­ing that phones, the in­ter­net, short-form con­tent, etc have changed the way peo­ple con­sume books such that lit­er­ary fic­tion is out and poorly writ­ten genre-fic­tion and steamy ro­mance are in.

On face, this is a far more com­pelling the­ory: the fic­tion mar­ket is dom­i­nated by genre fic­tion, ro­mance, and James Patterson. Literary fic­tion makes up some­thing like 2% of the mar­ket. People are still read­ing books, they’re just read­ing worse books. Why? Ensloppification or some­thing. We’ve ex­plained the fall of lit­er­ary fic­tion and it’s still the com­put­er’s fault.

But there is some data that fits very strangely into this pic­ture. For one, peo­ple still read plenty of lit­er­ary fic­tion, what they don’t read is con­tem­po­rary lit­er­ary fic­tion. Books like Pride and Prejudice, War and Peace, The Brothers Karamazov, etc still sell many thou­sands of copies every year, more than even big hits in con­tem­po­rary lit­er­ary fic­tion. And look at any sur­vey of con­tem­po­rary au­di­ences’ fa­vorite books. Plenty of lit­er­ary fic­tion there. So I think there’s a strong enough war­rant here that the taste-change’ hy­poth­e­sis can’t be right ei­ther — un­less the in­ter­net made peo­ple’s tastes mag­i­cally shift away from con­tem­po­rary lit­er­ary fic­tion but not clas­sics.

To un­der­stand what’s hap­pened to lit­er­ary fic­tion, then, per­haps it’s worth try­ing to dis­en­tan­gle two tightly linked prob­lems: the com­mer­cial fail­ure of lit­er­ary fic­tion and the crit­i­cal fail­ure — the lack of a young Great writer. By now it’s ob­vi­ous that the for­mer prob­lem ex­ists, but you might be skep­ti­cal of the lat­ter.

It’s hard to talk about masterpieces” be­cause the con­cept trades on a the­ory of aes­thet­ics that is con­tro­ver­sial when spelled out (aesthetic value re­al­ism; maybe even a kind of Platonism about beauty) and dif­fi­cult to de­fend, but which we all nev­er­the­less sub­scribe to in­tu­itively.

Some books widely praised as clas­sics and mas­ter­pieces in their time are for­got­ten soon af­ter. Many books that a lot of peo­ple like are sim­ply not any good. But far rarer than these cases are books that are for­got­ten in their time and discovered” as mas­ter­pieces. For the last twenty years American lit­er­ary cul­ture has been un­able to pro­duce a writer we can de­scribe as great with­out at least feel­ing a tinge of em­bar­rass­ment about. We should be wor­ried.

I first got the sense that some­thing had gone wrong when, in high-school English class, we read One Hundred Years of Solitude fol­lowed by Jesmyn Ward’s National Book Award win­ning Salvage the Bones. It’s not that Salvage the Bones was not a ser­vice­able book: well-plot­ted, be­liev­able char­ac­ters, etc, but it was im­pos­si­ble to not deny that these two books could even be put on the same level.

What about x, y, z? They’re re­ally push­ing the bound­aries of fic­tion as a medium.” I don’t want to be mean, but I doubt it. At this mo­ment, there are not even any fa­mous lit­er­ary fic­tion writ­ers (much less ge­niuses) in the United States of America un­der the age of 65. If we can ar­gue about it, you’re wrong. This was not the case in 2000, 1990, 1980, 1970, 1960, etc. Before we even get to the prob­lem of sales, we need to know what’s gone wrong with the tal­ent pipeline.

Blythe is right about one thing—the in­ter­net killed mag­a­zines, not be­cause peo­ple’s brains turned to mush, but be­cause of the loss of ad­ver­tise­ment rev­enue. U. S. con­sumer-mag­a­zine ad spend al­most halved from 2004 to 2024 as brands chased cheaper, bet­ter-tar­geted im­pres­sions on Google and Facebook. It was those mag­a­zines that did­n’t rely pri­mar­ily on ad­ver­tis­ing rev­enue which sur­vived and are thriv­ing to­day. The New Yorker, for ex­am­ple, is still prof­itable and cur­rently has a paid cir­cu­la­tion of 1.3 mil­lion, more than dou­ble what it had in the hey­days of the 1950s and 1960s.

Still, the mag­a­zines that sur­vived could no longer af­ford to give as much space to short sto­ries or com­pen­sate their writ­ers well — as crazy as it sounds it was pos­si­ble to make a liv­ing writ­ing short sto­ries and pub­lish­ing them in pe­ri­od­i­cals both in pulp pub­li­ca­tions and more pres­ti­gious mag­a­zines.

The col­lapse of the mag­a­zine ecosys­tem is im­por­tant not be­cause it meant less peo­ple were read­ing lit­er­ary fic­tion, but be­cause it thinned the tal­ent pipeline — there were less op­por­tu­ni­ties to get pub­lished and less money for you if you did.

But the mag­a­zine-side is only part of the pic­ture, the other prob­lem was in acad­e­mia. From US Doctorates in the 20th Century:

Earning a doc­tor­ate dur­ing the first 70 years of the 20th cen­tury typ­i­cally as­sured the grad­u­ate of a po­si­tion in acad­eme…Hu­man­i­ties Ph. D.s had the high­est rate of aca­d­e­mic em­ploy­ment—83 per­cent in 1995–99—but lower than the 94 per­cent level in 1970–74.”

Since a peak in open po­si­tions in 1984, the num­ber of new English teach­ing po­si­tions has plum­meted while the num­ber of PHDs has held steady.

The same prob­lem holds true for cre­ative writ­ing: in 2016 there were 3,000 MFA grad­u­ates and 119 tenure-track po­si­tions.

Writers can no longer make a good liv­ing writ­ing free­lance for mag­a­zines, and they’re un­likely to find so­lace in the aca­d­e­mic job mar­ket ei­ther. Worse — even if they do get cre­den­tials and man­age to find a pub­lisher, most likely their book will have mea­ger sales of a cou­ple thou­sand copies. If they want to write and make a de­cent amount of money, where can they go?

From a fi­nan­cial per­spec­tive then, one at­trac­tor away from the pipeline into writ­ing lit­er­ary fic­tion comes from the rise of pres­tige-tele­vi­sion over the last sev­eral decades. The showrun­ners of Mad Men, Game of Thrones, and True Detective all have cre­ative-writ­ing MFAs. Before the ad­vent of pres­tige TV and the de­cline of mag­a­zines and acad­e­mia, there was lit­tle risk that writ­ers of lit­er­ary fic­tion would turn from writ­ing nov­els to the screen.

The tal­ent pipeline for lit­er­ary fic­tion has shrunk con­sid­er­ably over the past sev­eral decades. Anyone with a shred of care for fi­nan­cial suc­cess has es­sen­tially been fil­tered out. And even if lit­er­ary fic­tion started to sell again this would still largely be true — Writing a book has al­ways been a lot­tery ticket, even when the mar­ket was in a bet­ter con­di­tion — a small per­cent­age of books drive al­most all of the sales.

Imagine the pool of po­ten­tial writ­ers, peo­ple who, if they had the op­por­tu­nity, would spend their en­tire lives writ­ing lit­er­ary fic­tion and a few of them even hav­ing the in­nate tal­ent and ca­pac­ity to go on and be­come Great” writ­ers af­ter many years at work. The re­cent loss of two clear path­ways to live such a life has shrunk this pool dras­ti­cally. No won­der then that we haven’t seen any ge­nius fic­tion writ­ers in quite some time.

But this is only half the prob­lem. The pub­lic used to gob­ble up lit­er­ary fic­tion, and not just ground­break­ing mas­ter­pieces: fic­tion that was just good. John O’Hara was a good writer. No one to­day re­mem­bers his book Elizabeth Appleton, but it was the fifth best-sell­ing book of the year in 1963. No one has ever called Katherine Anne Porter’s Ship of Fools a mas­ter­piece (she her­self even­tu­ally dis­missed it as unwieldy’ and enormous’), but it was the best-sell­ing book of 1962. And so on with many of the lesser nov­els of the Greats and many mid­dling works of lit­er­ary fic­tion by au­thors that have been for­got­ten to­day. But from the 1970s on­ward, fewer and fewer works made it onto the best-sell­ers lists. Why is this no longer the case?

It can’t be be­cause book read­ers have dras­ti­cally changed their pref­er­ences: they still like to read lit­er­ary fic­tion (including plenty of non clas­sics/​mas­ter­pieces — 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 prob­lem with con­tem­po­rary lit­er­ary fic­tion.

Something about lit­er­ary fic­tion has changed in re­cent years that has put it off to mass au­di­ences. Han lo­cates the change in wokeness,” but the tim­ing does­n’t work — this shift was al­ready in full swing be­fore the 2010s when woke” be­came a salient is­sue.

On her ex­cel­lent blog, Naomi Kanakia notes the fol­low­ing:

Our lit­er­ary cul­ture has lost faith in the gen­eral read­er’

Since start­ing this newslet­ter, I have be­come very fa­mil­iar with…in­tel­li­gent peo­ple who read books and are in­ter­ested in lit­er­a­ture, but are not con­nected to lit-world dis­course. However, I find that, in prac­tice, it is very dif­fi­cult to con­vince the lit­er­ary world that folks like [this] ac­tu­ally ex­ist. They be­lieve read­ers ex­ist, but they tend to think most read­ers are stu­pid and don’t like to read smart books. They think that read­ers of smart books are an en­dan­gered species, and that a crit­ic’s pri­mary role is to con­vince the read­ers of dumb books to read smart books in­stead.But, re­cently, lit­er­ary peo­ple have started to lose faith even in this rather-con­de­scend­ing goal. Nowadays, lit­er­ary peo­ple have started to con­cep­tu­al­ize read­ing it­self as be­ing an en­dan­gered ac­tiv­ity—they be­lieve that the gen­eral pub­lic’s ac­tual abil­ity to read has some­how been di­min­ished by the rise of smart­phones.

The key here is the fol­low­ing thought: it is very dif­fi­cult to con­vince the reader that [intelligent peo­ple who read books and are in­ter­ested in lit­er­a­ture, but are not con­nected to lit-world dis­course] ac­tu­ally ex­ist.”

The prin­ci­pal rea­son self-con­scious con­tem­po­rary lit­er­ary fic­tion sells no books is be­cause it’s all in­sider-base­ball so to speak. There’s noth­ing in most of these books for the gen­eral reader. The books are writ­ten for the crit­ics. It’s easy to see how a vi­cious cy­cle could have arisen from the pre­oc­cu­pa­tion with sta­tus, not sales:

Critics feel the need to dif­fer­en­ti­ate them­selves, both from other crit­ics and from pop­u­lar taste so they come up with in­creas­ingly baroque cri­te­ria to judge these book­sRead­ers are un­der­stand­ably alien­ated when they pick up new books; to­tal sales dropThe drop in lit­er­ary fic­tion sales in­creases the al­lure of 1)

And so on in a cir­cle un­til we’ve ar­rived at a place where lit­er­ary fic­tion is 2% of the fic­tion mar­ket.

How ex­actly did this cy­cle start? I think there’s rea­son to be­lieve it be­gan in the 1970s. Here’s one hy­poth­e­sis:

Consider the case of Philip Roth. Goodbye, Columbus was a best-seller and turned into a movie. Portnoy’s Complaint sold half a mil­lion copies and was the best-sell­ing book of 1969. But no Roth novel in the 1970s ap­peared on any best-sell­ers list, and con­sid­er­ing the brusque ex­per­i­men­ta­tion of the nov­els in ques­tion: The Breast, My Life as a Man, and The Ghost-Writer, this is no great sur­prise. And yet he re­ceived crit­i­cal ac­claim dur­ing the decade: The Ghost Writer was se­lected by the Pulitzer Committee in 1980 (though over­ruled by the board which se­lected The Executioner’s Song in­stead) and was a fi­nal­ist for the National Book Award, The Professor of Desire was nom­i­nated for the Critics Circle Award, and all of these books were heav­ily praised by news­pa­per and mag­a­zine re­view­ers.

Who else was win­ning awards at this time? With Gravity’s Rainbow’s National Book Award in 1974 (and re­fused Pulitzer) it was in­creas­ingly post­mod­ern au­thors like Pynchon, Barth, and Gaddis, none of whom ever sold a mean­ing­ful num­ber of books. Their rise sig­naled the start of a com­plete de­cou­pling of sales and crit­i­cal taste. Authors who con­sciously shunned the middlebrow’ mass au­di­ences of mid-cen­tury America were re­warded by the crit­ics. And au­thors like Roth, who were in cease­less pur­suit of lit­er­ary sta­tus, read­ily changed their style to ac­com­mo­date this new en­vi­ron­ment.

Of course the trends changed and so af­ter post­mod­ernism a kind of MFA min­i­mal­ism came to dom­i­nate lit­er­ary fic­tion, a style whose ef­fects are still read­ily pre­sent in any con­tem­po­rary works one might pick up to­day. But the broader point is that be­gin­ning in the 1970s, au­thors were will­ing to op­ti­mize for crit­i­cal praise at the ex­pense of sales to a de­gree they had not been be­fore.

So from the 1970s on­ward, lit­er­ary fic­tion was seen less and less on the best-sell­ers list, though the later col­lapse of the tal­ent pipeline be­gin­ning in the 1980s and 1990s with the slow­ing aca­d­e­mic job mar­ket and the wide­spread fail­ure of print mag­a­zines, is what fi­nally killed off its com­mer­cial prospects.

There are still some im­por­tant open ques­tions: the ex­act role of the crit­ics in mov­ing au­thors away from pop­u­lar taste, the in­volve­ment of pub­lish­ers, and the saliency of this es­say for non-US au­thors and mar­kets (the case of Sally Rooney is quite in­ter­est­ing). But I will con­clude this es­say here with some part­ing words.

I think the most im­por­tant con­clu­sion is that all of this is ac­tu­ally good news for as­pir­ing writ­ers: it’s not that the philis­tine dopamine-ad­dled masses will never be ca­pa­ble of giv­ing you the praise you de­serve, it’s just that (1) ba­si­cally no one is writ­ing lit­er­ary fic­tion and (2) the pre­sent-day norms of lit­er­ary fic­tion mean that the gen­eral reader will never like any­one who is. Both of these prob­lems are eas­ier to fix than dras­ti­cally chang­ing the read­ing tastes of the en­tire pop­u­la­tion. But how will they be fixed? I’m not sure.

I don’t think mag­a­zines with short sto­ries are ever com­ing back. The sit­u­a­tion in acad­e­mia will likely not im­prove. But I do sus­pect Substack will play a role in broad­en­ing norms and mak­ing it eas­ier to write lit­er­ary fic­tion. I think the ad­vent of the in­ter­net, though it killed the mag­a­zines, will some­day be seen as a god­send for writ­ing. Although on the topic of tech­nol­ogy, if LLMs or AI have any part to play in this story, it will likely not be a good one. But know­ing that the fate of lit­er­a­ture is still in the hands of writ­ers, I’m op­ti­mistic.

...

Read the original on oyyy.substack.com »

6 146 shares, 8 trendiness

‎Idle Reporter for NYC DEP

Reporting idling com­mer­cial ve­hi­cles in NYC from start to fin­ish with a sin­gle app. Idle Reporter makes the idling com­plaint process easy: five min­utes from hit­ting record to hit­ting sub­mit.

Features:

• Timestamp Camera: Record videos with time, date, and lo­ca­tion. See how long you have left while you record.

• AI-Powered Form Filling: No more copy­ing down ad­dresses. Idle Reporter AI com­pletes the re­port for you in one tap (subscription re­quired).

• Easy Manual Editor: Prefer to DIY your re­port? Idle Reporter makes it quick and easy to fill out forms di­rectly on your phone.

• Screenshot Generator: Automatically clip re­quired li­cense plate and owner info screen­shots from your video.

• Status Tracker: Keep re­ports in Idle Reporter, then sub­mit them to DEP as soon as you’re ready.

Idle Reporter is an un­of­fi­cial util­ity for fill­ing out idling com­plaint forms. It is­n’t per­fect. You alone are re­spon­si­ble for mak­ing sure that your re­ports are com­plete and ac­cu­rate. Proof by Induction LLC is not af­fil­i­ated with the Department of Environmental Protection or any other agency.

Terms of Use: https://​www.ap­ple.com/​le­gal/​in­ter­net-ser­vices/​itunes/​dev/​stdeula/

- Timestamp now shows while you record

- Idle Reporter now al­ways uses your de­vice’s wide-an­gle cam­era, if avail­able

- Reliability im­prove­ments for Import Timestamped Video

- Misc. bug fixes

The de­vel­oper, Proof by Induction LLC, in­di­cated that the ap­p’s pri­vacy prac­tices may in­clude han­dling of data as de­scribed be­low. For more in­for­ma­tion, see the de­vel­op­er’s pri­vacy pol­icy.

The de­vel­oper does not col­lect any data from this app.

Privacy prac­tices may vary, for ex­am­ple, based on the fea­tures you use or your age. Learn More

Requires ma­cOS 14.0 or later and a Mac with Apple M1 chip or later.

...

Read the original on apps.apple.com »

7 137 shares, 23 trendiness

Python can run Mojo now

Chris Lattner men­tioned that Python can ac­tu­ally call Mojo code now. I love this idea (!) as I’m def­i­nitely in the mar­ket for a sim­ple com­piled lan­guage that can of­fer Python some re­ally fast func­tions. So I gave it a quick spin

The setup is much sim­pler than I re­mem­ber it, you can use uv for it now.

After that you can de­clare a .mojo file that looks like this:

# mo­jo_­mod­ule.mojo

from python im­port PythonObject

from python.bind­ings im­port PythonModuleBuilder

im­port math

from os im­port abort

@export

fn PyInit_mojo_module() -> PythonObject:

try:

var m = PythonModuleBuilder(“mojo_module”)

m.de­f_­func­tion[fac­to­r­ial](“fac­to­r­ial”, doc­string=“Com­pute n!“)

re­turn m.fi­nal­ize()

ex­cept e:

re­turn abort[PythonOb­ject](String(“er­ror cre­at­ing Python Mojo mod­ule:”, e))

fn fac­to­r­ial(py_obj: PythonObject) raises -> PythonObject:

# Raises an ex­cep­tion if `py_obj` is not con­vert­ible to a Mojo `Int`.

var n = Int(py_obj)

var re­sult = 1

for i in range(1, n + 1):

re­sult *= i

re­turn re­sult

And you can then load it from Python via:

# main.py

im­port max.mojo.im­porter

im­port os

im­port sys

im­port time

im­port math

sys.path.in­sert(0, ”)

im­port mo­jo_­mod­ule

start = time.time()

print(mo­jo_­mod­ule.fac­to­r­ial(10))

end = time.time()

print(f”Time taken: {end - start} sec­onds for mojo”)

start = time.time()

print(math.fac­to­r­ial(10))

end = time.time()

print(f”Time taken: {end - start} sec­onds for python”)

This was the out­put:

3628800

Time taken: 3.0279159545898438e-05 sec­onds for mojo

3628800

Time taken: 5.0067901611328125e-06 sec­onds for python

This all works, but at the time of mak­ing this blog­post I was able to spot some rough edges. If I in­crease the fac­to­r­ial num­ber to 100 then the out­put changes.

0

Time taken: 2.7894973754882812e-05 sec­onds for mojo

188267717688892609974376770249160085759540364871492425887598231508353156331613598866882932889495923133646405445930057740630161919341380597818883457558547055524326375565007131770880000000000000000000000000000000

Time taken: 9.298324584960938e-06 sec­onds for python

This is prob­a­bly be­cause of some over­flow is­sues on the mod­u­lar side. The docs men­tion that this whole stack is pretty early, and I guess this is a sign of that.

Given that the over­flow is prob­a­bly the is­sue here, I fig­ured I’d run one ex­tra ex­am­ple just to see if we could mea­sure a speed in­crease. So I went with a naive prime num­ber count­ing ex­am­ple. This is the mojo code:

from python im­port PythonObject

from python.bind­ings im­port PythonModuleBuilder

im­port math

from os im­port abort

@export

fn PyInit_mojo_module() -> PythonObject:

try:

var m = PythonModuleBuilder(“mojo_module”)

m.de­f_­func­tion[coun­t_primes](“coun­t_primes”, doc­string=“Count primes up to n”)

re­turn m.fi­nal­ize()

ex­cept e:

re­turn abort[PythonOb­ject](String(“er­ror cre­at­ing Python Mojo mod­ule:”, e))

fn coun­t_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

re­turn count

This is the Python code, note that I also added a numpy im­ple­men­ta­tion for com­par­i­son.

im­port numpy as np

im­port max.mojo.im­porter

im­port os

im­port sys

im­port time

im­port math

sys.path.in­sert(0, ”)

im­port mo­jo_­mod­ule

def coun­t_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

re­turn count

def coun­t_primes_numpy(n):

if n < 2:

re­turn 0

can­di­dates = np.arange(2, n + 1)

...

Read the original on koaning.io »

8 137 shares, 6 trendiness

World’s Largest Wildlife Bridge Spanning 10 Lanes of 101 Freeway Is Nearly Complete

Three years af­ter con­struc­tion be­gan, it’s time to dump dirt on the pro­ject. Specifically, 6,000 cu­bic yards of a super” soil fol­lowed by the plant­ing of 5,000 na­tive flora. I’m talk­ing about the world’s largest wildlife cross­ing, which has reached an­other con­struc­tion mile­stone as the bridge nears com­ple­tion.

This pre­pared soil is the be­gin­ning of the end of con­struc­tion for the Wallis Annenberg Wildlife Crossing, which broke ground on Earth Day in 2022. Located in Agoura Hills, California, the nearly one-acre over­pass stretches over a 10-lane sec­tion of U. S. 101.

The phys­i­cal bridge struc­ture is es­sen­tially com­plete, hav­ing re­quired 26 mil­lion pounds of con­crete, 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 bury­ing util­ity lines and ex­tend it over the ac­cess road.”

Multiple lay­ers of soil will be needed to cre­ate a wildlife habi­tat on the over­pass, and the soil ap­pli­ca­tion alone will take sev­eral weeks. However, when the Annenberg Wildlife Crossing is done, the bridge will re­con­nect the bi­sected ar­eas of the Santa Monica Mountains National Recreation Area. With more than 150,000 acres, SMMNRA is the coun­try’s largest ur­ban na­tional park. But the free­ways have long iso­lated the lo­cal fauna, from but­ter­flies and cot­ton­tails to bob­cats and moun­tain li­ons.

According to the pro­ject, as far back as the 1980s, re­searchers iden­ti­fied the Liberty Canyon area as a choke point for wildlife. However, it was­n’t un­til the National Park Service be­gan a decades-long study of the re­gion’s moun­tain lion pop­u­la­tion that the 101 free­way was deemed the most sig­nif­i­cant bar­rier to the eco­log­i­cal health of the re­gion.”

More than 300,000 ve­hi­cles travel along U. S. 101 daily. That’s enough traf­fic to give a dri­ver anx­i­ety—try be­ing a lo­cal crit­ter hav­ing to dart across the road just to find din­ner.

P-22, ar­guably the most fa­mous moun­tain lion in and out­side of Hollywood, sur­prised every­one by cross­ing free­ways on his own. He even­tu­ally be­came the poster cat for the Save L. A. cougars” cam­paign. Unfortunately, he was eu­th­a­nized in late 2022 af­ter be­ing found with se­vere in­juries, likely due to a ve­hi­cle col­li­sion, and a myr­iad of other health is­sues.

Mountain li­ons are the main con­ser­va­tion fo­cus of this wildlife bridge. The big cats are ter­ri­to­r­ial, and be­ing locked in by free­ways lim­its their roam­ing range and bio­di­ver­sity. Without the cross­ing to ex­pand their habi­tat, SoCal cougars could be ex­tinct within 50 years. They also con­tinue to be killed by ve­hi­cles.

In the Liberty Canyon area where we’re putting the cross­ing, within the last four years, we’ve had four moun­tain li­ons killed just in that gen­eral area,” Pratt said.

Not just pro­vid­ing ac­cess to more sources of food, shel­ter, and mates, but the bridge would also of­fer an es­cape route from wild­fires and other dis­as­ters. The Annenberg Wildlife Crossing is ex­pected to reach com­ple­tion next year.

...

Read the original on www.thedrive.com »

9 135 shares, 8 trendiness

izabera/bitwise-challenge-2048: 2048 with only 64 bits of state

This is an im­ple­men­ta­tion of the clas­sic 2048 game in your ter­mi­nal:

Share your game state with friends by just send­ing them a num­ber!

If the $STATE env vari­able is­n’t set, it gen­er­ates a fresh ran­dom seed.

Otherwise the board state and all fu­ture spawned cells will be de­ter­min­is­tic.

...

Read the original on github.com »

10 128 shares, 6 trendiness

kasa

I wrote a small script that runs in the back­ground, polling for the state of an $8 smart plug.

It’s got a switch on the side to man­u­ally tog­gle the switch on and off. It con­nects to WiFi, so you can read the state of the plug via API.

When you turn the switch on, the script up­dates /etc/hosts to ef­fec­tively block web­sites of your choos­ing:

127.0.0.1 www.twit­ter.com

127.0.0.1 x.com

127.0.0.1 in­sta­gram.com

127.0.0.1 youtube.com

127.0.0.1 red­dit.com

You can plug the switch into any out­let, ide­ally one far away from you. Now, when­ever I want to visit a web­site in my block­list, I have to phys­i­cally get up and turn off the switch. Alternatively, I could just man­u­ally edit /etc/hosts, but this ad­di­tional step adds just enough fric­tion to make me re­con­sider re­flex­ively dis­tract­ing my­self.

...

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.