1. 1

    I’ve been reading my recently-arrived copy of Rust in Action. Getting back into exercise. Watching Olympics “live” & IT Crowd DVDs. Just staying inside, thankful my a/c is working smoothly this week. Likely switching cell providers (new phone would be nice) and maybe internet, too (fiber at the house? almost too good to be true).

    1. 2

      Ok, I’ll suggest Metalsmith. Go ahead, roast it.

      1. 1

        With all due respect, but unless I’m missing something, this example is tiny (1 class), and I can’t find anything OOP about it, other than using a class. By the looks of it, seems like a reasonable, well documented JS code.

        1. 1

          Ok, I can go bigger. How about Jenkins, or Roslyn, or Jekyll ? I’m guessing you’re not after Erlang code.

      1. 1

        I wasn’t expecting to be impressed, but I was. Maybe lookup tables are an underappreciated branch of computer science, I don’t know. So few instructions!

        1. 2

          Well this is certainly interesting, a different style of systems programming. Relayd is new to me; if you’re saying that config is “a pretty consolidated view” I assume one needs to read the manual quite a bit. Knowing OpenBSD (vaguely), I imagine the manual is pretty good, though?

          YAML seems the sacrificial anode [1] of this setup, myself feeling just-go-PostgreSQL but I feel SQLite too. Go is just a great default, not much to say about it.

          I only wonder about scripting: do you really just write that all out in Go or use bash, or some openbsd shell I wonder.

          [1] in that it will inevitably draw the most criticism and get swapped out first

          1. 1

            Consolidated in that it doesn’t contain all the apps I have running on that server, nor IPv6, nor TLS. But if you put that in your /etc/relayd.conf then you’d get the result in the post.

            YAML is definitely the most divisive component on there. The fact that it’s up and running straight away, schema changes are painless, data can be edited very easily in your favourite $EDITOR, etc. mean it’s a very strong choice for me.

            Example of scripting: I needed to upload a large number of kv pairs to Hashicorp Vault. I had already written an application that interfaced with Vault so it was very quick to wrap this in some concurrency magic and do the task, rather than write something less-performant in bash or ksh.

          1. 2

            Trust is the biggest issue. Placing a third-party ad on your site auctions off a quanta of your trust and passes it off as theirs. I mean, you wouldn’t put an outright scam on your blog. You wouldn’t take money from strangers to litter your personal conversations with Eat Charleston Chew interjections. So why would you do it on the Internet? Hubs & authorities has soured to hubs & salesmen. Recommendations from the highest bidder aren’t worth much at all, not in my experience.

            I live in an area with a lot of billboards along the interstate. We could disallow them, like Vermont(?). We could even disallow most exterior signage, too, like in parts of South Carolina. And they get by ok!

            Paying for content has got to come back in style. Twitch is a whole ocean of Internet the author seems unaware of or uninterested in talking about: most streamers I see would be unable to continue on ad revenue alone. A World Lit Only By Ads just seems unimaginative and, well, limiting.

            1. 2

              Postgres as a hot cache (sql-jobber) … An RDBMS acting as a hot cache for RDBMS isn’t very common, but this setup has been working quite well for us. … We simply drop the cache DB and recreate it every night, starting with a blank hot cache slate for the next day.

              This was my favorite part. I find it rather clever. Makes me smile.

              1. 1

                It’s breaking things down into cases, all the way down. Behavior-first, 1 function switches over N cases. Variant-first, N classes each describe their own 1 variant of the fn. I like behavior-first. I don’t mind writing switch statements. Exhaustive pattern matching over ADTs, even better. Preferring to do your case analysis through OO virtual dispatch is odd to me.

                1. 36

                  Tangentially related, it seems like macOS on M1 swaps very enthusiastically, to the point of possibly bringing SSD life well under a year: https://twitter.com/marcan42/status/1361151198921826308

                  (I didn’t want to post a twitter thread as a submission, but seems like it may be of interest.)

                  As marcan42 points out in the thread, this is clearly an OS software issue so it should be patchable in software as well.

                  1. 11

                    Interesting. I’m up to 5.4TBW; kernel_task has written 69.5GB (!) in 3 days 1 hour of uptime. One to keep an eye on; thanks for sharing.

                    1. 8

                      This is madness, I’ve only managed 15 TBW on a Samsung 970 EVO 1TB on an extremely heavily used laptop in 28 months, under 2% the drive’s warrantied TBW, and keenly aware I’ve been hammering the drive at various points. That also includes 2 h00j VMware VMs

                    2. 16

                      Not a big problem, just swap out the SSD of your MacBook when it’s dead. Oh wait, it can’t be replaced :/ Another reason to support Right To Repait.

                      1. 5

                        This might be controversial, but I think you’re just watching what happens when miniaturization and integration happens. The SSD on these is basically directly connected to the FSB, and that contributes to the performance of it. How do you make that replaceable effectively?

                        Your ALU used to be a discrete, replaceable component. Then it became integrated. Then L2 cache. Should it stop, especially if integration can make things more reliable (i.e RAM slot failure)?

                        1. 5

                          I think “things that are consumables” such as batteries are those things that absolutely must be replaceable. SSD’s fit that category because they actually wear out over time.

                          But I think you raise good points about other discrete components, not being able to upgrade my RAM sucks, but if it’s more reliable, performant, cheaper and uses less power than alternatives, then it’s a compelling choice.

                          1. 5

                            I agree that this is miniaturization and integration, but I’d argue it’s not strictly necessary for performance.

                            AFAIK the M1 RAM is LPDDR4X-4266 and you can buy DIMMs[*] in this specification as well. The SSD is NVMe and as far as I know there’s nothing special about the signalling compared to an off-the-shelf NVMe SSD.

                            integration can make things more reliable (i.e RAM slot failure)

                            I don’t have any numbers to back this up, but my gut feeling is that in the average upgradable laptop the number of lifetime failures that require replacing the RAM is going to be equal or higher than the number of lifetime failures that require replacing the RAM slot - so there’s a gain and a loss here.

                            I’d suggest it boils down to three things:

                            • Integrating everything on one board (or one package in the case of the RAM) is cheaper to design, manufacture and test.
                            • Integrating everything makes the product smaller and slimmer, and portable device consumers love slim products (as do Apple industrial designers, it would seem).
                            • Upgrading or repairing laptop internals is not something the majority of laptop customers plan to ever do (unfortunately), and there is no other regulatory pressure requiring this (which brings us back to Right to Repair).

                            [*] EDIT: I originally thought you could buy SO-DIMMs in this spec, but maybe only DIMMs. I think it’d be technically possible to have a small size & replaceable standard for these, but maybe the industry is going with soldered RAM to the extent that it doesn’t exist.

                            1. 1

                              I wonder how much putting RAM on as an MCM lets them run LPDDR at those speeds/latencies.

                            2. 1

                              especially if integration can make things more reliable (i.e RAM slot failure)?

                              And yet, the only failing RAM I had in a machine in the last 10 years was a MacBook Pro with on-board RAM. If the machine actually had a DIMM slot, it could’ve been replaced without replacing the whole logic board. (Since the MacBook Pro was just two days old, they replaced the whole system, of course.)

                          2. 2

                            This comment should be a separate post by itself. Thank you for the heads up!

                            1. 2

                              Not a problem on mine somehow (918GB writes in 6 weeks).

                              1. 2

                                I’m second thinking getting an M1 now, maybe I’ll wait for this to be fixed. Hopefully, in time for the new macbook pros. :p

                                Still my current Linux laptop is 4 years old, and has <10TB TBW on its nvme. I haven’t used it a lot in the past 6 months but it has been in used daily before that. So, 918GB in six weeks still seems like a lot.

                                1. 2

                                  shurg

                                  Just checked my 3.5 year old MB12, it had 27.5TB writes over 182-ish weeks, which is roughly 0.9TB/6W. So yeah, it’s normal.

                                  1. 1

                                    I’ve had a 2019 MBP from work for almost a year now, and I’m at 65.8 TB written. I don’t think this is an M1 problem so much as a macOS problem (if indeed it’s actually a problem).

                                    1. 1

                                      Yes it’s certainly an OS issue.

                                      Could be some combination of usage patterns with memory configuration. Like I don’t do npm or use any heavyweight IDEs, maybe they provoke the system to swapping out more.

                                    2. 1

                                      FWIW smartctl claims 27 TB written on my mid-2012 MBA11. I’m no expert, but I think my wearout is all zeroed out. Can’t upgrade past 10.15, not sure if OS matters.

                                2. 1

                                  I have had this experience with macOS (VM) in general, testing my memory profiler’s OOM detection (https://pythonspeed.com/fil). it seems much more aggressive about swapping than Linux, to the point where I needed to come up with a different heuristic.

                                1. 1

                                  I don’t know, I guess it means the production query planners are doing a good (-enough) job. I do like the idea of a manual query planner, I feel like its language would be more or less an assembly language for SQL. If you could write your own statistics-based decision trees, that’d be even cooler. Not to beat the planner, necessarily (it should be unlikely, right?), but to explore more possibilities over the same basic query.

                                  I wonder, though, if a new language were to come along, would/should it still resemble SQL? I’m partial to languages that look like Elm. Maybe a lisp will suffice. Just not XML.

                                  1. 4

                                    Well, that’s super cool to read. I was just thinking a couple weeks ago about writing fizzbuzz like below, although I kinda prefer standard K&R style anyways. I do wonder what programming on iPad+Pencil could look like, though. Clearly the author lived in a more hardware-limited world. (note in my made up language % is “divides” :: int -> int -> bool, sry)

                                    def fizzbuzz(n [Int], silly [Bool])
                                      msg [Str] = # n % 3 # n % 5 # ~silly
                                             x              ~x
                                           +--------------+--------------+
                                       y z | "fizzbuzz"   | "buzz"       |
                                        ~z | "fuzzwuzz"   | "wuzz"       |
                                           +--------------+--------------+
                                      ~y z | "fizz"       | "$n"         |
                                        ~z | "fuzz"       | "$n!"        |
                                           +--------------+--------------+
                                      put msg
                                    
                                    1. 1

                                      a AND (b OR c)

                                      Hmm. Here, I’d say a must “obviously” be true (for the whole thing to be true) because it’s the “leading term”, which I admit is not some standard phrase (but what else would you call it?).

                                      (a AND b) OR (c AND ((a AND d) OR (a AND e))

                                      Less obvious, but you can “factor out” the a, so to speak, to be the leading term again. If I skip a step here or screw up, I apologize

                                      (a & d) | (a & e) => a & (d | e)

                                      c & (a & ..) => a & c & (..)

                                      (a & ..) | (a & ....) => a & (.. | ....)

                                      so, => a & (b | (c & (d | e)))

                                      Then, since it’s the leading term, again I argue it’s obvious. My brain seems to read it left-associatively, but English is famously left->right so maybe for others, right-assoc. Maybe ... & a is clearer to some. But you’re right, if I can’t call it the leading term, and it’s buried, I don’t have a word. A necessary input, required, discriminant, something along those lines.

                                      1. 1

                                        It seems to me a lot of people seem to think even-ness is a function over N+, and they hesitate to extend it to N. The 2/3-1/3 split fascinates me, but I’m not real picky on terminology.

                                        To go further, you could ask is 3.5 odd, or even? I was taught that “factorial” was a function over integers, but it turns out gamma extends beyond that, in between (though, to be fair, gamma doesn’t work on negative integers). If you could extend odd/even, what even would it mean? I wonder what people would say

                                        1. 7

                                          Check your local classifieds (or equivalent source) for companies that purchase and refurbish IT gear locally. Most big enterprises dump a ton of gear in bulk, every year, based on accounting needs.

                                          There is a ton of really good hardware out there for a real discount. I’ve picked up quite a few surprisingly gently used Thinkpads for next to nothing this way over the years.

                                          1. 4

                                            How would one find these listings? I regularly check craigslist, and rarely find these things

                                            1. 4

                                              I’d guess the eBay listings for “thinkpad lot” hit close to the mark, who else would have 5 identical ThinkPads for sale.

                                              1. 1

                                                I found mine through a combination of googling + “used thinkpad” and Yelp searches for “used laptops”.

                                                I’ve also heard people having success checking for computer repair companies in their town and asking.

                                            1. 12

                                              There’s a lot about this article I like (and the site - powered by solar power and sometimes offline/ cute!) but the xenophobia towards Chinese people is not acceptable.

                                              1. 30

                                                This seems like an overreaction to me. There’s exactly two comments about China/Chinese people:

                                                The Chinese don’t have a reputation for building quality products

                                                and

                                                The Chinese may not have a reputation for building quality products, but they sure know how to fix things.

                                                But:

                                                • statements exhibiting prejudice != xenophobia.
                                                • reporting on a reputation is just stating a fact: this is indeed the reputation Chinese (consumer?) products have. You can’t infer the author thinks the reputation is accurate, especially given how they acted (they bought the Chinese product anyway).
                                                • even if you believe the author does think the reputation is accurate: you don’t know how many experiences they have with Chinese products. Their belief in the accuracy of the reputation may be supported by their own experiences
                                                • A jab against the quality of products is not a jab against the people producing the product. Even if the author phrases it using the unfortunately common conflation of a country and its people.
                                                • it’s human and useful to generalize: a generalization isn’t necessarily problematic, unless the conclusions are extended too far. They aren’t suggesting you don’t buy Chinese products or only let things be repaired by a Chinese person, are they?
                                                1. 17

                                                  The Chinese don’t have a reputation for building quality products

                                                  The funny thing about this one is that not only does the person saying it come off as prejudiced, they’re also out of touch.

                                                  Almost any electronic device made today is built in China, with components also made in China. From high end Apple products down to bottom of the barrel knock offs. Just being made in Chna doesn’t say much about quality any more.

                                                  1. 17

                                                    I agree with the parent, this also rubbed me the wrong way. Even just having “the Chinese” in your vocabulary is too much IMO, no matter whether it displays xenophobia or just unreflected prejudice.

                                                    1. 9

                                                      The author’s native language is Dutch, in which it’s still idiomatic to say ‘the Chinese’ to mean ‘the Chinese people’. It used to be idiomatic in English as well, of course, but it has gathered negative connotations in the past few decades. That’s something his proofreader should’ve picked up.

                                                      As regard the statements about the quality of Chinese electronics and workmanship, yes, I could do without those as well.

                                                      1. 2

                                                        The author’s native language is Dutch, in which it’s still idiomatic to say ‘the Chinese’ to mean ‘the Chinese people’. It used to be idiomatic in English as well, of course, but it has gathered negative connotations in the past few decades

                                                        Im curious how else you would say it? Would you attribute it to the country and not the people? i.e. China (or Chinese manufacturers) don’t have a reputation for quality?

                                                        Is the issue attributing it to a people as a whole?

                                                        Not trying to be argumentative, just trying to understand the issue.

                                                        1. 3

                                                          I just wouldn’t make unsubstantiated claims about an entire country.

                                                    2. 11

                                                      There is a condescending tone at play though, which generalises Chinese people (e.g. the guy that repaired his laptop) to members of a group and refuses to treat them as individuals.

                                                      I don’t take issue with the literal meaning of those sentences, but given their tone and cultural context, I think it’s rather insensitive and unhelpful.

                                                      1. 2

                                                        The second occurrence was referring to a repair shop they sent it to. So unless that shop was in China (I don’t think they say so, so I assume not) they’re referring to the ethnicity of the shop worker.

                                                      2. 9

                                                        MacBooks are made in China, so if you can agree they’re at least on par with X60 build quality, the point falls apart. Perhaps you could say Lenovo chose a subpar Chinese supplier, but that hardly indicts the whole country.

                                                        I enjoyed my X200s until hardware failure & blue screens, and my old X61s is in a closet (some sort of display issue). Eventually, these machines wear out. I find MacBooks at least as well-designed/-built, and the M1 ain’t too shabby, so while I miss the 12” ThinkPads I’ll be fine.

                                                      1. 8

                                                        I bought a rowing machine. It turns out Reddit is absolutely uniform in advice that

                                                        1. rowing is one of the better aerobic exercises you can do in that it’s low impact and works a surprisingly large degree of your muscles, and
                                                        2. more surprisingly, the only answer for what rowing machine to get is a “Concept 2” brand. i’ve never seen such a uniform product opinion from everyone about anything. try searching reddit for “which rowing machine should i get?”. Amazon (which is sold out) has >5k reviews @ 5 stars. want a cheaper rowing machine? “buy a used concept 2, or just save up”, they say.

                                                        so I got a Concept 2 rowing machine. Unlike many other types of exercise, I don’t hate it, which means I’ve been much more likely to actually do it.

                                                        1. 4

                                                          so I got a Concept 2 rowing machine. Unlike many other types of exercise, I don’t hate it, which means I’ve been much more likely to actually do it.

                                                          I was going to comment about exercise filling me with energy, and giving me a cool hobby that keeps me away from the keyboard and gets me stronger and healthier in the process.

                                                          For me it was calisthenics. I stumbled upon the YouTube and IG communities with all the kids doing cool stuff like muscle-ups and front/back levers. Working towards an exciting skill turned workouts from being a chore to being a reward and one of the best parts of the day. I train every day now - why wouldn’t I?

                                                          Thanks for the Concept 2 rowing machine recommendation! I’m looking into rowing as a running alternative this winter.

                                                          1. 3

                                                            my wife is a runner and former cross country coach, but has kind of worn out her knees. she says the rowing machine is better than any elliptical she’s used and at this point she uses it more than me. it is definitely a good indoor choice

                                                            1. 3

                                                              I think elliptical and rowing machines are both excellent, probably the best two out of all the machines, as they both exercise much wider sets of muscle groups than most of the others. Can understand elliptical not being great for people with bad knees, although it’s a lot better than running in that regards as there’s no impact. One thing to watch out for with rowing machines is lower and mid back - it’s really important to pay attention to posture and not curve your back too much while rowing as it can put a lot of strain on your spine.

                                                          2. 3

                                                            I’d say the same! I row in front of my TV year-round. Perhaps the only cardio I’ve really enjoyed. It helps me sleep longer and eat more intentionally. I’m not suddenly an Olympic god pulling sub-7s, but I feel better. I’m getting better!

                                                            I’ve almost 3 Mm on my Model D, on the waiting list for the Dynamic rower. There are other rowers, like the RowPerfect3 and the Oartec DX, but I too lean towards C2. I love how they maintain the workout servers, charts, metrics, & CSV downloads.

                                                            1. 2

                                                              Concept 2 are very good for the money. I decided against them in favour of a WaterRower because it uses water resistance instead of gears, which means there’s no messing about with levels or anything, you just pull harder if you want more resistance, which seems much more natural to me. And it never ever clicks or clunks and you don’t have the weird fan noise effect. I also think it looks a lot nicer in wood (totally subjective of course), and you can store it upright against a wall so it takes up a lot less space. They are more expensive, admittedly, but lots of the parts have a lifetime guarantee and they’re really good about replacing them. Had mine for over 5 years with barely any problems - just one of the seat rollers broke after maybe 3 years, so I got in touch and told them, and they sent me a pack of 4 new ones, no questions asked. Good company (which I’m not affiliated with!) and a really really nice piece of kit.

                                                              1. 1

                                                                I used to row in high school and have nearly completed a basement refurb and reorganization project in part to make space for an erg (aka rower). It’s amazing that such an uncomplicated machine can afford such an excellent, all-body, joint-friendly aerobic workout. The Concept II has been around forever and is excellent.

                                                              1. 3

                                                                I’m really not enthused for the desktop Mac experience anymore (my Mac Pro runs Ubuntu). I don’t really like the Big Sur updates (how could they remove proxy icons? &c) and can’t afford a well-cooled Mac anymore. On the other hand, I’m kinda tired of Linux on the desktop (weird bugs, annoyances), so I’m going back to Win10, the first time I’ve chosen to run Windows since Win98. I still wish Apple sold OS licenses, even if only at Apple prices.

                                                                I’m quite happy with Mac on the phone/tablet/MacBook, Win10 on the workstation, and Linux for “the machines”. At least the hardware is really fast these days.

                                                                1. 1

                                                                  I use Dvorak. When I use vim, it’s standard key layout jkhl. Mostly I use Sublime Text / Visual Studio &c so I guess I’m not an hjkl’er. I do use Ctrl/option-arrow to jump by word & delete by word, that suffices. I find that generally I am not limited by my typing speed, but knowing what to type. I mean, a 500-word essay should take minutes, if only. A 1500-loc library should take maybe an hour to type out, again if only. On OS X, I love using readline shortcuts (again, not an hjkl’er).

                                                                  1. 1

                                                                    readline supports vi keys. I think its defaults are EMACS style but don’t quote me.

                                                                  1. 5

                                                                    One point: ARM instructions tend to fixed-width instructions (like UTF-32), vs x86 instructions tend to vary in size (like UTF-8). I always loved that.

                                                                    I’m intrigued by the Apple Silicon chip, but I can’t give you any one reason it should perform as well as it does, except maybe smaller process size / higher transistor count. I am also curious how well the Rosetta 2 can JIT x86 to native instructions.

                                                                    1. 10

                                                                      “Thumb-2 is a variable-length ISA. x86 is a bonkers-length ISA.” :)

                                                                      1. 1

                                                                        The x86 is relatively mild compared to the VAX architecture. The x86 is capped at 15 bytes per instruction, while the VAX has several instructions that exceed that (and there’s one that, in theory, could use all of memory).

                                                                        1. 2

                                                                          If you really want to split your brain, look up the EPIC architecture on the 64-bit Itaniums. These were an implementation of VLIW (Very Long Instruction Word). In VLIW, you can just pass a huge instruction that tells what individual functional unit should do (essentially moving scheduling to the compiler). I think EPIC batched these in groups of three .. been I while since I read up on it.

                                                                          1. 6

                                                                            interestingly by one definition of RISC, this kind of thing makes itanium a RISC machine: The compiler is expect to work out dependencies, functional units to use, etc which was one of the foundational concepts of risc in the beginning. At some point RISC came to mean just “fewer instructions”, “fixed length instructions”, and “no operations directly with memory”.

                                                                            Honestly at this point I believe it is the latter that most universally distinguishes CISC and RISC at this point.

                                                                            1. 3

                                                                              Raymond Chen also wrote a series about the Itanium.

                                                                              https://devblogs.microsoft.com/oldnewthing/20150727-00/?p=90821

                                                                              It explains a bit of the architecture behind it.

                                                                            2. 1

                                                                              My (limited) understanding is that it’s not the instruction size as much as the fact that x86(-64) has piles of prefixes, weird special cases and outright ambiguous encodings. A more hardwarily inclined friend of mine once described the instruction decoding process to me as “you can never tell where an instruction boundary actually is, so just read a byte, try to figure out if you have a valid instruction, and if you don’t then read another byte and repeat”. Dunno if VAX is that pathological or not, but I’d expect most things that are actually designed rather than accreted to be better.

                                                                              1. 1

                                                                                The VAX is “read byte, decode, read more if you have to”, but then, most architectures which don’t have fixed sized instructions are like that. The VAX is actually quite nice—each opcode is 1 byte, each operand is 1 to 6 bytes in size, up to 6 operands (most instructions take two operands). Every instruction supports all addressing modes (with the exception of destinations not accepting immediate mode for obvious reasons). The one instruction that can potentially take “all of memory” is the CASE instruction, which, yes, implements a jump table.

                                                                          2. 6

                                                                            fixed-width instructions (like UTF-32)

                                                                            Off-topic tangent from a former i18n engineer, which in no way disagrees with your comment: UTF-32 is indeed a fixed-width encoding of Unicode code points but sadly, that leads some people to believe that it is a fixed-width encoding of characters which it isn’t: a single character can be represented by a variable-length sequence of code points.

                                                                            1. 10

                                                                              V̸̝̕ȅ̵̮r̷̨͆y̴̕ t̸̑ru̶̗͑ẹ̵̊.

                                                                            2. 6

                                                                              I can’t give you any one reason it should perform as well as it does, except maybe smaller process size / higher transistor count.

                                                                              One big thing: Apple packs an incredible amount of L1D/L1I and L2 cache into their ARM CPUs. Modern x86 CPUs also have beefy caches, but Apple takes it to the next level. For comparison: the current Ryzen family has 32KB L1I and L1D caches for each core; Apple’s M1 has 192KB of L1I and 128KB of L1D. Each Ryzen core also gets 512KB of L2; Apple’s M1 has 12MB of L2 shared across the 4 “performance” cores and another 4MB shared across the 4 “efficiency” cores.

                                                                              1. 7

                                                                                How can Apple afford these massive caches while other vendors can’t?

                                                                                1. 3

                                                                                  I’m not an expert but here are some thoughts on what might be going on. In short, the 4 KB minimum page size on x86 puts an upper limit on the number of cache rows you can have.

                                                                                  The calculation at the end is not right and I’d like to know exactly why. I’m pretty sure the A12 chip has 4-way associativity. Maybe the cache lookups are always aligned to 32 bits which is something I didn’t take into account.

                                                                                2. 3

                                                                                  For comparison: the current Ryzen family has 32KB L1I and L1D caches for each core; Apple’s M1 has 192KB of L1I and 128KB of L1D. Each Ryzen core also gets 512KB of L2; Apple’s M1 has 12MB of L2 shared across the 4 “performance” cores

                                                                                  This is somewhat incomplete. The 512KiB L2 on Ryzen is per core. Ryzen CPUs also have L3 cache that is shared by cores. E.g. the Ryzen 3700X has 16MiB L3 cache per core complex (32 MiB in total) and the 3900X has 64MiB in total (also 16MiB per core complex).

                                                                                  1. 2

                                                                                    How does the speed of L1 on the M1 compare to the speed of L1 on the Ryzen? Are they on par?

                                                                                1. 1

                                                                                  I had a used X220 running Debian for about a year, then it started blue-screening. My X60/X61 are somewhere in a closet, one of the screens went out but I think 1 still works. I still use my used Mac Pro 2010, but it’s kinda outside the support window so keeping OS X up to date is difficult (doable, with cost). I’m using my used MacBook Air 11 now. I built a Ryzen/Linux workstation with new parts, but otherwise I guess I’m a used/refurb Apple buyer.

                                                                                  1. 4

                                                                                    I think this is a great step forward for PHP. FWIW, I’ve been reading Symfony: the fast track and it’s quite good, very well-written. I really liked Hack as a language, and I think PHP has largely matched it (even moreso than ES20xx matched CoffeeScript).