1. 3

    We need the hash of the uncompressed block because now that we have added a layer of optimization in compression we have also exposed ourselves to a durability issue. Corruption is now possible while compressing the block on the client as our clients rarely have ECC memory. We see a constant rate of memory corruption in the wild and end-to-end integrity verification always pays off.

    Fascinating: non-ECC memory corruption is something I’ve heard about, but I’ve rarely come across someone saying they’ve had to mitigate it in their code.

    1. 4

      It is rare indeed. I have seen this before from ZFS developers, which makes sense.

      1. 12

        dropbox sync engineer here :)

        we regularly see bitflips on consumer machines. for example, the desktop client’s sync engine has a metadata consistency checker that compares the client’s view of the filesystem to the remote filesystem at a snapshot, and we report any discrepancies up to the server. any report should indicate a bug in our protocol to be fixed.

        but… we do have to bucket out differences in metadata that are separated by one or two bitflips. it’s not a huge number but it shows up when you’re trying to have zero inconsistencies over many 10s of millions of machines.

        1.  

          I love seeing examples like this of the law of large numbers. See also: “it’s never the network”, “this random string will never appear in customer input”, (ab)using JavaScript numbers as monotonic counters, etc.

          1.  

            Cool! Is it usually a small subset of clients that have most of the bitflips or are they pretty evenly distributed?

            1. 6

              you know, I had never actually looked at the distribution. I just ran the numbers and indeed a handful of hosts make up the majority of bitflip inconsistencies.

              1.  

                I would like to know this if it’s an easy question to answer.

                1.  

                  Thanks for running it! My (strawman) theory is that most of these bitflips are coming from bad RAM rather than external factors like EM radiation.

        1. 6

          Going to an alpaca farm, partly to learn about owning them. Also, making tempeh.

          1. 2

            Now I’m curious, what makes you want to own alpacas? I’ve always liked the idea of farming alpacas or other “weird” animals, ostriches for instance, so it’d be interesting to hear your results.

            1. 2

              what makes you want to own alpacas?

              We’ve just moved to a new property, with about 3ha / 7 acres of field. We need something to keep the grass down; the previous owner had cows, and so do our neighbours. We want a low-maintenance animal, and by various accounts cows are the best, with alpacas probably being second best, while sheep and goats require more attention (and also just more of them, being smaller).

              Alpacas are not that common here in NZ, relative to the other animals I mentioned, and seem to have inherited the reputation of llamas, which is that they’re cantankerous, unfriendly, and like to spit on you. I don’t think that’s actually true about llamas, and it definitely doesn’t seem to be true about alpacas. All the people who’ve told me that have never owned them or even been in the same field as one. Actual owners say that alpacas are placid, friendly, quiet, clean, and fairly disease-resistant.

              Also, they’re absurdly cute and cuddly. The visit to the farm just confirmed this :)

          1. 5

            I’m determined to finish my Blender Doughnut.

            This is my first foray into 3d modelling and I find it truly impressive what the software is capable of - and I feel I’ve barely touched the surface.

            1. 2

              Awesome! Me too, really need to buckle down because I know I’ll love it.

              1. 1

                What are your learning resources? I tried a well-rated Udemy course, but after an hour or more of not actually making anything I got a bit bored and gave up. I’d like something that’s more learn-by-doing, even if it leaves gaps in my knowledge. I can come back and fill those in later.

                1. 4

                  I’m following along this YouTube series: https://youtu.be/TPrnSACiTJ4

                  I’ve been trying to do one video a day (each one is around 10-20mins). It’s been tricky at parts -especially at the beginning - but the teacher is really good.

                  Two tips if you decide to try it:

                  1. Version control your project. I’ve had to start again a couple of times because I’ve pressed something that messed it up and undo just wouldn’t work.

                  2. Take a look at the comments on each video. 3-4 times his settings are slightly different which caused problems following along. The comments saved the day.

              1. 2

                Hugely surprised to see this is built in New Zealand, I wasn’t aware of any real Clojure presence here.

                1. 12

                  There are a couple of companies using it here, but not many. But Cursive is built in NZ just because I happen to live here.

                  1. 2

                    Good to hear. I couldn’t find any signs of a local Clojure/Functional Programming/Lisp community here in Christchurch when I was trying to learn Clojure last year (I thought I could convince the powers that be at work to allow me to use it, but that turned out not to be the case so I ended up dropping it). Is there much happening in that sphere in your neck of the woods?

                    1. 2

                      Well, I live in Nelson, so there isn’t much of anything happening from a tech perspective :)

                  2. 0

                    Last time I tried Cursive I think it was a one-person show. Not sure if that’s still true. For all I know that person is the sum of the Clojure presence in NZ :)

                    Edit: Looks like from @lemming’s reply that I was wrong about the size of the Clojure community

                  1. 2

                    place-items is a shorthand to set both align-items and justify-items at once. By setting it to center, both align-items and justify-items are set to center.

                    I don’t think I’m a fan of these kind of CSS shorthands. There’s already a LOT of attributes in CSS, did we really need whole new attribute to do do literally nothing more than save one line of CSS? You still have to set display: grid, after all. And if you understand CSS Grid or Flexbox at all then you’re already familiar with align-items and justify-items

                    Edit: Obviously this ship has long since sailed, so I guess my comment is not really very useful :)

                    1. 1

                      I haven’t finished the article yet, and I suspect it may end up going over my head, but I appreciate the clear explanation of the terminology in the first half of the post. I really feel like I’ve learned something. Thanks!

                      1. 2

                        You’re welcome, I’m glad you feel that way :)

                      1. 12

                        If we’re having tiers then perhaps they could be based on the kind of flag? If someone is getting a lot of flags for “troll” or “unkind” or “spam” that’s more serious IMO than “off-topic”, and even more so than “me-too”, or “incorrect” (in fact, I don’t think I’d expect “incorrect” to ever trigger a warning?).

                        Hopefully the warning could be customised to the kind of flag: “A number of users have flagged your comment(s) as off-topic. Please try to keep discussion on-topic on Lobst.ers”; “A number of users have flagged your comment(s) as unkind. Please be kind towards other users, and assume positive intent in all interactions” or whatever…

                        1. 2

                          I totally agree with this. Not all flags are created equal in my opinion.

                          Also, I’m not even sure I understand why “incorrect” is a flag? I lose points for being wrong? Maybe that flag needs renamed.

                          1. 1

                            TBH it’s not even clear that those thing are flags, or will have any consequence.

                            I think what I’d really like to see is a combination of pointed tags, (-10 incorrect, etc…) and “a mod needs to be alerted to this” flag actions, which should be separated (I didn’t even know flags got mod attention until I was told off [correctly] for misusing one).

                        1. 13

                          It’s missing a crucial point:

                          • Be ready to give up good HiDPI screen support

                          I have a 4K monitor because it’s much more enjoyable to use for development, but it becomes a pure nightmare on Linux. I ended up installing an Hackintosh.

                          1. 8

                            Not necessarily. You can look at this as purely anecdotal, but my Dell Precision 5510, which I’ve had for about four years, has a HiDPI display on par with what I have on the MBP I use for work. Maybe this is down to the fact that I run Ubuntu on it, but I’m just using stock Intel and Nvidia drivers on it, depending on my use case.

                            1. 3

                              Just curious, what makes it a nightmare?

                              1. 10

                                My most recent encounter with this is fractional scaling:

                                I have a 27’’ 4k monitor. I find that at this resolution, 1.5x scaling works best as 2x is too big and 1x is too small. With MacOS or even Windows, this is not a problem at all, with Linux it’s a can of worms:

                                • Xorg doesn’t natively support fractional scaling, Instead you have to rely on hacks or only scaling the fonts (which quite frankly, looks like shit). I never managed to make any of those hacks work reliably and consistently in all apps, eventually you’ll open that one app that uses Qt and you require yet another hack.

                                • Wayland does support fractional scaling, too bad that not all apps support Wayland, most notably Firefox. I tried running Firefox with the experimental Wayland backend with fractional scaling on, and everything looked blurry, it’s just not there yet.

                                Now, I’m sure for all of those issues there are 10 different workarounds to try and things to tweak to make things better, but I can’t be bothered to do any of that when in macOS (or even Windows) it Just Works™.

                                1. 7

                                  Just the fact that the ArchWiki page on HiDPI has a comprehensive list of required hacks is another example of what I’m referring to.

                                  1. 3

                                    Have you tried with KDE? I’m curious because I’m planning on using HiDPI with 1.25x scaling.

                                    1. 2

                                      Yes, with KDE it’s slightly better but still not as good or smooth as Windows and macOS in my opinion.

                                    2. 2

                                      Latest versions of Gnome in Ubuntu 20 have fractional scaling and it’s been set and forget for me.

                                      1. 2

                                        Ubuntu ’s fractional scaling is using significant more CPU power compare to 2x scaling.

                                  2. 3

                                    I tried switching to Ubuntu recently (not for the first time) and ended up going the Hackintosh route, too. For me the breaking straw was not being able to adjust mouse wheel scroll settings in a way that would work everywhere and didn’t seem to come with caveats or be labelled as a hack.

                                    Setting up a Hackintosh certainly wasn’t without its hassles, but having got there I’m very happy with it. I also have a Macbook and an iPhone, so that is another motivation to stay in the Apple camp (vendor lock-in, I guess?)

                                    1. 1

                                      I’m surprised you had mouse wheel woes. Do you have a special or fancy mouse or something? Or want very specific wheel behaviour?

                                      1. 1

                                        I just have a normal mouse, and TBH I’m a little fuzzy on what happened now. It could very well have been that if I has been using Gnome (or KDE, whichever one I wasn’t using) then it wouldn’t have been a problem at all, but what I really wanted was MacOS anyway, so I just did the Hackintosh thing instead. I kind of took “well I can’t get this basic thing to work right” as an omen.

                                    2. 3

                                      I use Xubuntu 20.04 on my X1 carbon and desktop with a 27” 4K monitor. Both work totally fine with HiDPI. The main issue I’ve had was when I plugged my laptop into non-HiDPI monitors, I had to lower the DPI for the monitors and that made everything on the laptop small.

                                      1. 1

                                        The distros the article mentions are ElementaryOS, Pop!_OS, and Fedora Workstation. I believe all of those have had great native HiDPI support “out of the box” for a few years now.

                                        I totally get not loving the aesthetic of GNOME or whatever, especially bumped up at x2, but I think it’s cool that Linux lets us customize everything end to end to our heart’s desire. If we’re going for a more custom setup, totally agree that it can require doing some custom tweaks to get a good HiDPI experience and it won’t be completely automagic.

                                        I don’t think it’s fair to say it’s all a pure nightmare on Linux as a whole. Beginners can have a good experience, experts can have a good experience, crossing that valley can be painful.

                                        Also worth noting that most of the ArchWiki page on HiDPI refers to outdated workarounds that are no longer required, though not all.

                                        1. 0

                                          Honestly, yeah. I purposely bought a normal DPI display just to avoid this pain. It’s never gonna be perfect. Apps aren’t gonna scale right, even with fractional scaling. Other apps might scale right, but be blurry. It’s gonna drive you crazy.

                                          Just get over the loss aversion, buy a good normal DPI monitor, and get back to work. I’m 100% satisfied with normal DPI.

                                        1. 6

                                          Work: Working on our intelligence engine, a write-heavy hybrid document/relational database with facted catalogs. Trees go in, bigger trees come out, you can’t explain that.

                                          Home: Working on my little mostly-anaphoric scripting language. If I ever complete it, it’s going to be a nice little scripting language in 100% ANSI C that should be easily embedded in any host program and support automation and scripting/customization. Should be nice.

                                          1. 2

                                            Working on our intelligence engine, a write-heavy hybrid document/relational database with facted catalogs.

                                            Can you share any info about what kind of problems this is intended to solve?

                                            1. 6

                                              So it’s a centralized security intelligence engine. We inspect network traffic, grab files off of fileshares, grab stuff from web proxies, grab emails via milter or cloud integration, etc.

                                              These get turned into trees like NetworkSession -> HTTPRequest -> File or EMail -> MIMEObject -> File. They get passed into the engine where we recursively expand out the tree (e.g. the File is a ZIP file, so we expand it and now there are Files under that File or we extract keywords or URLs out of that file’s contents and now there are URLs or whatever under the file).

                                              We continually expand the tree until there’s nothing left to expand (every bit of intelligence is squeezed out; we have 100+ different analyzers). Once it’s all expanded, we index the tree in as many ways as makes sense. For example, a NetworkSession node would appear in the NetworkSession catalog, but would also appear (twice) in the IP Address catalog and might (given GeoIP information) appear in the Geographic Location catalog.

                                              We then support real-time and on-demand queries that find different trees, so (for example) you can look for Files from Geographic Locations, even though files don’t have geographic locations, so we have to intelligently pivot between ancestors that do have geographic locations and the files that are found underneath them.

                                              The trick is doing all this given fully-loaded multigigabit pipes, 6+ million files a day, etc…in an embedded, low-maintenance appliance.

                                              There’s some more magic, but that’s the gist of it.

                                              1. 2

                                                Oh, that’s interesting, thanks for the reply. From your first comment I was imagining something like Elasticsearch (probably because I saw the word “document”) but this seems pretty different. This sounds like it’s a security product?

                                                1. 2

                                                  Exactly. It’s a really great product, I’ve enjoyed working on it.

                                            2. 2

                                              Trees go in, bigger trees come out, you can’t explain that.

                                              But don’t the bigger trees kind of explain the smaller trees?

                                            1. 23

                                              So accurate, and I’m glad Lea had the patience to put it into writing. I’m much more inclined to write off the entire ecosystem as some expletive.

                                              This is generally why I push juniors towards learning Elm instead of JavaScript these days. There are so many edge cases in today’s JavaScript. So many inconsistencies. So much magic one just has to know. So much conflicting information and constant churn. I feel this pain every time a junior asks me for help with something that won’t work as they expect, which these days is effectively every day.

                                              Juniors are surprisingly good at finding logic rules that are internally inconsistent in programming languages.

                                              There’s been a push lately for people to write “simple Haskell”, and to be honest I think we more desperately need a push towards simple JavaScript. That or just abstract it away entirely and allow it become the bytecode of the web.

                                              1. 13

                                                So many inconsistencies. So much magic one just has to know.

                                                This sounds like English.

                                                JS has two clear strong points: everybody knows it and it’s the lingua franca of the web. Just like how everybody knows English and it’s the lingua franca of international commerce.

                                                The way it is going, we will use JavaScript forever.

                                                Yes you could learn Elm. But when you quit your company 2 years from now, it will likely be better to have +2 years of JS than 2 years of Elm.

                                                1. 16

                                                  everybody knows it

                                                  I would argue against that.

                                                  I think it’s no coincidence that one of the most popular technical book series for this language is called You Don’t Know JS.

                                                  1. 9

                                                    Well they know it the same way most people know English. Incomplete and error-prone but most of the time still good enough.

                                                    1. 4

                                                      I think “incomplete and error-prone” is what causes user experiences the likes of which is described in the article. For an experienced programmer, that might mean giving up on some library or language. For a novice, that might mean reconsidering their interest in programming.

                                                  2. 5

                                                    It sounds a bit like C, in fact: A standardized cross-platform (ha!) language with odd corner cases everyone seems to augment with libraries to smooth over the fact it was never fully portable from the beginning. It keeps being used, so it accretes more libraries around it, making it harder to switch away from, as even if you’re writing in a different language, you need to accept that the rest of the world speaks an API designed around That Language the moment you talk to something from the outside world.

                                                    1. 5

                                                      “everybody knows it and it’s the lingua franca of the web “everybody knows English and it’s the lingua franca of international commerce”

                                                      Sure, if by that you mean “everyone claims to know it, but when they need to use it, many fall flat on their face, or resort to some half-assed translation system that just complicates matters”.

                                                    2. 24

                                                      You push juniors towards learning Elm, a little known language, with smaller community and fewer learning and documentation resources, and no proven longevity (just google “leaving Elm” for crying out loud)? As someone who had to pick up JS over the past year and uses it at their job, any newbie picking up Javascript ES6 and following good programming practices should have little problem. The ecosystem is a different story, but most “edge cases” and “gotchas” come from inexperience with the language. Recommending they learn some random language won’t help with a PEBCAK problem like that.

                                                      1. 4

                                                        Despite being a Haskell fan, I don’t find Elm to be an attractive target. Sure, it’s simple, but the JS interop is really messy, some aspects of setting up elements just don’t scale well, and I’ve seen far too many complaints about the core team’s behavior to assume it’s just a fluke.

                                                        Yes, JavaScript has a ton of weird stuff going on. However, it’s still the standard, and learning it is beneficial—even if you don’t like to use it personally—because at minimum you’ll be seeing a lot of it. The edge cases in tooling are a mess but there are improvements lying around if you scan a bit (e.g. Parcel 2 is looking far more promising over Webpack’s config soup), and most of the type system weirdness is “solved” by using TypeScript (which makes me sad since it’s unsound, but it also has some incredibly powerful type system features that many other languages don’t).

                                                        1. 4

                                                          I want to be clear that the point of my comment was not to fetishise Elm.

                                                          The point is that all of JavaScript’s inconsistencies makes learning how to write programs with confidence immensely more challenging.

                                                          JS interop is not part of learning how to write programs, and some people’s reaction to how the the language designers reacted to language feature requests (which usually added a greater surface area for potential runtime failure) is also not part of learning how to write programs.

                                                          Minor aside: I don’t see how Elm’s FFI is “messy”. The port system works the way I would expect it to. It might feel more cumbersome than running some IO unsafely, but effects are hard, and this is the price we pay for a smaller surface area of potential runtime failures.

                                                        2. 2

                                                          With 8+ years of JS (and TS) experience, and a smattering of Perl, Java, C, C++,C#, Elm, Ruby (Rails), Elm, Haskell, and more. I’d rather write all of those other languages combined every day than write more JS. The community always feels like they revert to whataboutisms and “it’s the language of the web!”. When it comes to writing a server, it’s perfectly acceptable to use any of a variety of languages. When it comes to writing for the browser it’s JS or nothing. Suggesting Elm is akin to suggesting cannibalism. I’d suggest Svelte, but most people think it’s JS. Why can’t the web front end be as diverse and accepting as the back end?

                                                        1. 2

                                                          I just tried Linux (Ubuntu 19.04) because I need a *nixy development environment. But then I learned there’s no builtin way to adjust the mouse scroll wheel speed. In 2020. There’s an outdated-maybe-works way (I dunno, I got confused by the comments) and a bunch of open tickets in various libraries where the respective maintainers insist the problem should be fixed somewhere else. And no progress for years. And maybe no progress ever. Fixes are like “adjust it manually in each app you use, if it has that option”. No. That’s not even close to good enough.

                                                          Then Chrome crashed constantly while I used Jira, which I use all day for work. Just typing in Jira, crashed Chrome.

                                                          So I setup a Hackintosh. Took me a few goes, but it’s so much better than desktop Linux. And I like Linux, I use server varieties all the time. But Hackintoshes are getting simpler and simpler to setup (license issues notwithstanding) and then so much better to actually use. IMO Apple are one upgradeable, programmer-level (not pro audio/video editor level) desktop away from crushing the momentum (such as it is) of desktop Linux. Especially if they settled their NVIDIA beef.

                                                          Edit: I’m not interested in ways that I could have got it to work. I needed something to work, so that I could work, and I couldn’t get there with Linux.

                                                          1. 1

                                                            Took me a few goes, but it’s so much better than desktop Linux.

                                                            I would suggest trying a different distribution, such as Arch Linux. It would possibly take you a few goes, but it’d be so much better than Ubuntu Linux. I have tried Ubuntu before. It makes me sick.

                                                            What I am saying is, if you’re willing to give Hackintosh the effort, you can’t be comparing this with a turn-key “Linux Desktop” solution, which is what Ubuntu is.

                                                            If Ubuntu sucks, it does not mean Linux does by extension. Do you seriously think no Linux user ever browses the web?

                                                            1. 1

                                                              Do you seriously think no Linux user ever browses the web?

                                                              Umm, no? I never claimed anything like that.

                                                              The thing is, now my Hackintosh is setup (which it is, happily) it all just works. And it just working is a long way ahead of any Linux desktop experience I’m prepared to waste my time to end up being disappointed with. I’m really happy with my Hackintosh.

                                                              I also specifically said I’m not interested in suggestions for getting Linux to work for me :)

                                                              1. 1

                                                                it all just works.

                                                                You’ve claimed it took a few goes. That contradicts your “just works” claim.

                                                                And it just working is a long way ahead of any Linux desktop experience I’m prepared to waste my time to end up being disappointed with.

                                                                You’re extrapolating the Ubuntu experience to Linux. That’s absolutely unfair to Linux.

                                                                I also specifically said I’m not interested in suggestions for getting Linux to work for me :)

                                                                Your claim was unclear. When I read “I could have got it to work”, I interpreted “it” as Ubuntu. The “I couldn’t get there with Linux” was thus interpreted as “I couldn’t get there with Linux because I tried Ubuntu”, as that is what you actually tried to get going.

                                                                Ubuntu sucks, I absolutely agree with that. But Linux doesn’t suck by extension. And I’m telling you this despite not being particularly fond of Linux. I have a lot of complaints about it. But I still use it, because it’s currently the most tolerable.

                                                          1. 7

                                                            Remember that even if tweets are deleted, there’s several sites scrapping twitter which will keep the twits regardless.

                                                            The best approach is to not use twitter at all.

                                                            1. 4

                                                              In addition Twitter is selling their datastream to paying customers. Some of whom may well be on-selling that data via their own APIs, or letting their customers export it in some form. Twitter requires their customers to delete Tweets from their systems when they’re deleted from Twitter (and various other mimic-the-state-on-Twitter rules) but who knows whether that’s actually happening.

                                                              1. 2

                                                                I have never created an account, and don’t intent to. However, this is still a good tool for people that use twitter and might have a few dodgy tweets laying around.

                                                                1. 1

                                                                  My advice to anybody using twitter would be to delete all twits and then the account.

                                                              1. 1

                                                                So has anyone used Idris 1 or 2 for anything? What did you think?

                                                                1. 4

                                                                  There was this thread a while back, and @yannbane is on lobsters:https://lobste.rs/s/ogez9q/game_pure_language_part_1_introduction

                                                                  1. 3

                                                                    Only for learning type driven development, beyond that it seems a bit like it needs a lot more baking before that cake is fully ready for prime time.

                                                                    Was super fun though, the type system will let you encode things in ways that I found hard/impossible in things like Haskell/Rust/etc….

                                                                  1. 19

                                                                    At some point you decide to do something about all those warnings, so you use a product like Sentry to collect all the errors and warnings.

                                                                    Few week pass and you have so many different and impossible to debug errors in Sentry that you just give up keeping up with them.

                                                                    A year later your Sentry has collected million of errors and it serves the only porpose of making you sad.

                                                                    1. 19

                                                                      My previous employer developed a chat app; in the first few years it was … not very good, and one of (many) reasons for that was the sheer amount of messages they were sending to Sentry. I tried to convince the team to stop doing that since it impacted our rate limits for other apps as well, but it took a long time before they took action.

                                                                      At some point they announced they had sent 1 million chat messages. I checked the Sentry usage counts, and they had 4 million events in Sentry.

                                                                      1. 5

                                                                        Hah, we just setup LogRocket, I hope this is not our future

                                                                        1. 9

                                                                          The best errors are those caused by a user’s browser extension and that have nothing to do with your app at all

                                                                          1. 4

                                                                            Amusingly, I think one of the first errors we tried to debug with LogRocket (which is generally an impressive tool) might have been caused by the Grammarly extension… Hopefully that is not an omen :)

                                                                      1. 2

                                                                        I have a 2016 higher-spec (for 2016) Macbook Pro where the keyboard is dying. I need to try to use the Apple keyboard replacement program. Recently I built a Hackintosh with an overclocked 8-core 9700k and a fast SSD. Cost a lot less than a slower Mac Mini would have. It’s really fast, and now I use that for dev work (and gaming) when I’m at my desk, and the laptop when I’m on my walking desk (DIY treadmill setup) or on the couch.

                                                                        I tried Ubuntu desktop before setting up the Hackintosh, but frustration with basic things like no option to control mousewheel scrolling speed, and Chrome crashing constantly, sent me down the Hackintosh route.

                                                                        Edited to add: With a custom fan curve the desktop is quieter than my Macbook, which would often ramp up fans. The desktop is completely silent unless I’m gaming, when I’m wearing headphones anyway. It’s much easier to build a silent / very quiet PC in 2020 than last time I tried, probably 20 years ago.

                                                                        1. 2

                                                                          Microsoft Sculpt. $100. Scissor switches. Wireless. Semi-split.

                                                                          1. 3

                                                                            I’ve had a few of these, I still like them. Reasonably priced, well built, wireless, and ergonomic enough for me (I was beginning to develop RSI-like symtpoms from my laptop keyboard, switched to this, and they went away and never came back).

                                                                            1. 2

                                                                              The only thing that sucks are the function keys. I’m hoping they will release a new version, with bluetooth support, maybe foldable or fully splitable. It’s probably the single product Microsoft has almost nailed.

                                                                              1. 1

                                                                                Yeah, it could use some small improvments, for sure. It wouldn’t take much extra plastic to have full-sized function keys, and I’d like to see a function modifier key rather than a switch. And, while we’re at it, dedicated volume controls (though I guess I can remap keys I don’t use like ScrLk and Pause - what do these even do in 2020?)

                                                                          1. 32

                                                                            In New Zealand we are being asked to leave online order/delivery slots for people who can’t get to the supermarket (eg because of a disability) or who shouldn’t go (eg because of their age or health conditions). Other people should go to the supermarket if they can, while respecting the new rules to minimise transmission.

                                                                            Anyone thinking about this kind of hack should first consider whether they’re depriving someone more in-need (and likely less technologically savvy) of an important service, and potentially forcing them to risk their health by having to go the supermarket in person.

                                                                            1. 5

                                                                              In Luxembourg, the state created a delivery website run by associations and communities, on which you have to prove that you’re a person at risk to order.

                                                                              The catalog is smaller and quantity is limited, but it’s indeed a great initiative that helps people that are the most at risk.

                                                                              1. 1

                                                                                I lived in Luxembourg. Easily one of my favorite places on the planet. Moien!

                                                                                1. 1

                                                                                  Moien! I have to admit that I thought moving out more than once… but quality of living is pretty good here.

                                                                                  Any reason for moving out (if not too personal)?

                                                                                  1. 1

                                                                                    I moved back to the United States for my girlfriend at the time, who backed out of moving to Europe with me. For future reference, that was not a good reason to move across an ocean. :)

                                                                                    That being said, this was 20 years ago. I’m back in the US, married (to someone else), kids, etc. It’s just a lovely memory now.

                                                                                    I had to go to Amsterdam for work about 10 years ago, and my wife came with me. After I finished with my work, we took an extra couple of weeks and went to Brussels, Luxembourg, and Geneva. She, too, loved Luxembourg. When our kids are old enough we’re going to take them and do a similar tour again.

                                                                                    1. 2

                                                                                      Seems like a good life :) I’ve asked because so many people here mention that it doesn’t have night life, art exhibitions, etc… like you can find in other European capitals like Brussels, London, Paris, Berlin, … Although, I find it hard to compete with all the other advantages like the healthcare system, the security in the country, the job market, …

                                                                                      Thanks for your honest feedback :)

                                                                              2. 2

                                                                                Thanks for this comment. I’ve long been a consumer of my grocer’s online ordering service because of its convenience and had not stopped to consider the negative consequences that I – a healthy younger person who has a family that isn’t at significant risk – have externalized to others by continuing to use it.

                                                                                1. 2

                                                                                  Exactly this.

                                                                                  Initially I thought other people were abusing the system but it turned out that either he could get over the fact that “he doesn’t like doing groceries” or just wait like literally everyone else seems to be doing.

                                                                                  And now having shared the code while the situation is the same, he just increased the chances of people following the same path and spreading the “method”, while the most vulnerable people who don’t have the skills are left behind.

                                                                                1. 5

                                                                                  The article conflates NoSQL databases with distributed databases, and implies that relational databases cannot be partition tolerant (see CockroachDB). It gives Mongo as an example of a CP system, and Dynamo as an AP example. Dynamo has a strongly consistent mode, and Mongo has (I think) the same replication model (primary-secondary, with secondary promotion on primary failure) as MySQL, so I’m not sure why Mongo made the CP list and not MySQL.

                                                                                  I don’t know enough about CAP to fact-check that part of the article, but some of the other details seem kinda off, so it makes me wonder how accurate the rest of the article is?

                                                                                  1. 42

                                                                                    I really hope JS will not be mandatory anytime to be able to read wikipedia.

                                                                                    1. 41

                                                                                      Comment copied from HN:

                                                                                      Hi HN – I’m one of the authors of this proposal. I’d like to clarify a few points here:

                                                                                      • Wikipedia is not becoming an SPA
                                                                                      • Wikipedia is not dropping support for non-js users
                                                                                      • This proposal is not about changing our current browser-support matrix[1] (which includes IE11 as a first-class target; Vue.js ecosystem still supports IE 11)
                                                                                      • This proposal is about changing the way we develop enhanced, JS-only features across our projects; many such features exist already, but they are written in jQuery and an in-house framework called OOUI
                                                                                      • These features will continue to be delivered in a progressively-enhanced way on top of the PHP-rendered baseline for the forseeable future. We are interested in how server-side rendering of JS components can integrate with this but we’re still looking into how this might work
                                                                                      • We will continue to prioritize accessibility, internationalization, and performance in everything we ship
                                                                                      1. 6

                                                                                        These features will continue to be delivered in a progressively-enhanced way on top of the PHP-rendered baseline for the forseeable future.

                                                                                        I think that’s a much bigger problem.

                                                                                        The WikiMedia codebase is a Lovecraftian fever dream of 15 years of accumulated technical debt, written in PHP.

                                                                                        It’s like everything is barely held together with bubblegum that’s now starting to decompose; and they are not able to change anything, because all the hacks, bots and workarounds invented to deal with WikiMedia’s limitations would stop working the minute they did that.

                                                                                        Basically: fixing WikiMedia would mean things would get far worse in the short-/mid-term, and no one is willing to pay the price for long-term improvements as the situation deteriorates further and further.

                                                                                        1. 4

                                                                                          The MediaWiki History page is a pretty interesting read. It’s worth reading in full, but the tl;dr is that Wikipedia started as a small experiment with a flat file database, became much more popular than expected, and developers spent a few years fire-fighting to keep up with performance/scaling demands.

                                                                                          This quote probably sums it up quite well:

                                                                                          Despite the improvements from the PHP script and database back-end, the combination of increasing traffic, expensive features and limited hardware continued to cause performance issues on Wikipedia. In 2002, Lee Daniel Crocker rewrote the code again, calling the new software “Phase III”. Because the site was experiencing frequent difficulties, Lee thought there “wasn’t much time to sit down and properly architect and develop a solution”, so he “just reorganized the existing architecture for better performance and hacked all the code”. Profiling features were added to track down slow functions.

                                                                                          In early 2003, developers discussed whether they should properly re-engineer and re-architect the software from scratch, before the fire-fighting became unmanageable, or continue to tweak and improve the existing code base. They chose the latter solution, mostly because most developers were sufficiently happy with the code base, and confident enough that further iterative improvements would be enough to keep up with the growth of the site.

                                                                                          I’m not sure if I would have done better in the same situation to be honest.

                                                                                          1. 5

                                                                                            I’m not sure if I would have done better in the same situation to be honest.

                                                                                            Agreed, as someone who has spent a good chunk of his career rewriting legacy software, the rewrite never goes as smoothly as you think it will. Maybe a rewrite in 2003 would have been great, but it also could have turned out horribly and Wikipedia might have even gone defunct (who knows).

                                                                                            1. 2

                                                                                              mostly because most developers were sufficiently happy with the code base, and confident enough that further iterative improvements would be enough to keep up with the growth of the site

                                                                                              That sounds like the history of PHP.

                                                                                              I’m not sure if I would have done better in the same situation to be honest.

                                                                                              Given the amount of money the foundation has available, I can’t imagine a worse outcome. The state of WIkimedia makes the BER look like a perfectly managed project.

                                                                                              1. 7

                                                                                                Can you provide some examples ?! You seem to be biased about php code in general and comparing a working wikipedia with BER, which isn’t finished even today nor working.

                                                                                                1. 2

                                                                                                  Well, they didn’t have a lot of money in 2002/2003 ($80k in 2003-2004), and it would be challenging to rewrite it all with even thousands of existing pages (never mind hundreds of thousands or millions) since you either need to maintain compatibility with the (organically grown) syntax or 100% reliably transform that to something else.

                                                                                                  In hindsight, perhaps the biggest mistake they made was making MediaWiki generic Wiki software, instead of just “the software that powers Wikipedia”. I completely understand why they did that, but it does make certain things a lot harder.

                                                                                                  Either way, I don’t envy the position MediaWiki developers are in, and have been in for the last ~20 years.

                                                                                              2. 4

                                                                                                Do you know this because you’ve actually hacked on the code or are you guessing? Because this sounds like something anyone could say about any 15 year old code base, while that code base could actually be a reasonable state.

                                                                                              3. 1

                                                                                                Bit late, but to be clear: this is not my comment; I am not the commenter who wrote this on HN. I simply copied it here, because it answered the question.

                                                                                              4. 6

                                                                                                hopefully it doesn’t become a progressive web app, with all of those cpu and memory-intensive pages that these ui frameworks create.

                                                                                                1. 14

                                                                                                  … is there a synonym for ‘progressive web app’ that we can use? I would really like to reserve progressive, in a web context, for progressive enhancement, but I lack an alternative term to use for these offline-tolerant web apps.

                                                                                                  For the unfamiliar: progressive enhancement is when you design the HTML to work on its own, and then enhance it with CSS and Javascript. The effect is that the page still works without JavaScript (necessary for low-end devices), or without JS and CSS (necessary for screen readers and programs).

                                                                                                  1. 5

                                                                                                    the page still works without JavaScript (necessary for low-end devices), or without JS and CSS (necessary for screen readers and programs

                                                                                                    Pretty much all screen readers can deal with CSS and JavaScript, and have for many years. And low-end devices can deal fine with JavaScript as long as it’s reasonable. Actually, a click event to load some data dynamically is less resource intensive than a full page refresh in most cases.

                                                                                                    1. 1

                                                                                                      Thoughtful points, thank you for that.

                                                                                                      You’re right, I think, that Javascript is not always the screen reader / accessibility problem it once was; but AFAIK it’s still capable of overwhelming slow devices, especially the copious gunk in aaaadvertisements, which also triggers lots of requests, which doesn’t help. In that way, surfing the web with JS turned off can still be a huge battery saver for many, even though a few well-designed sites use JS to save the user’s battery. (NB: am not an expert on accessibility, and have no experience of depending on it. Take my opinions with grains of salt.)

                                                                                                      For the screen readers I wasn’t so much thinking that they can’t handle CSS, but more that the (ordering of the) content should alread make sense as it appears in the HTML, without the CSS’s layout.

                                                                                                      Click events to load some data dynamically can indeed be an improvement; but you can have that and progressive enhancement, and indeed most commonly find such unobtrusive Javascript on progressive pages.

                                                                                                      There is also a category of non-progressive pages that do not work with Javascript turned off; and usually that is because they use JS for a lot more than on-click loading of data.

                                                                                                      1. 5

                                                                                                        Sure, excessive or low performing JavaScript is an issue, but that doesn’t mean all JavaScript is. The thing is that building complex-ish web applications that work 100% without JavaScript quickly becomes very cumbersome since you’ll be duplicating a lot of code in the backend; code which usually doesn’t get tested that well as may not even work correct.

                                                                                                        For example the application I’m currently developing worked 100% without JavaScript in the first versions, but eventually let that go as it just became too much effort with very little return. The JS is about 800 lines of fairly straight-forward code, and I think getting an entire application in return for that isn’t too bad actually. The alternative is a desktop application with tens of thousands of lines of code.

                                                                                                    2. 4

                                                                                                      Annnnd it turns out that the ‘progressive’ in PWA stands for ‘progressive enhancement’! (1, 2, 3, search for ‘enhance’). But on the other hand I’m not at all sure how progressive your web app is if it requires at minimum a service worker — that feels like giving developers license to skip the ‘make the essentials work with HTML + forms + a server’ step.

                                                                                                      Anyway, I’m getting upvotes but no suggestions, so: please suggest synonyms!

                                                                                                      • Installable Web App
                                                                                                      • Hybrid Web App
                                                                                                      • Advanced Web App
                                                                                                      • Enhanced Web App
                                                                                                      • Local Web App
                                                                                                      • Near-native Web App
                                                                                                      1. 5

                                                                                                        If your app doesn’t work without JS it’s not a PWA.

                                                                                                        Single Page App is a term I see people use.

                                                                                                        1. 1

                                                                                                          If your app doesn’t work without JS it’s not a PWA.

                                                                                                          Can you point to sources for that claim? (edit: or just say what to use instead of service workers :) )

                                                                                                          All PWAs require at minimum a service worker and a manifest

                                                                                                          https://en.wikipedia.org/wiki/Progressive_web_application

                                                                                                          says otherwise, there are sources pointing at both Mozilla and Google for that quote.

                                                                                                          1. 1

                                                                                                            If you have a Progressive Web Page (in the “progressive enhancement” sense), you can add a service worker (as one more step along the progression) to make it a Progressive Web App. Like any other progressive enhancement, it’s OK for the “app” part to require JS as long as without JS it regresses to an ordinary web page, and not to a pile of useless bytes.

                                                                                                            1. 1

                                                                                                              I’m not sure I follow.

                                                                                                              […] you can add a service worker […]

                                                                                                              Only if my client supports and has JS enabled, which was my argument :)

                                                                                                              I think you’re saying that running an installed PWA (i.e. if service workers was not a requirement of installing it), doesn’t need JS to function? To me, that sounds like a saved HTML page (possibly with static assets), as in “what you get from ctrl+s in a desktop browser”. I don’t think that fulfills either the W or the A in PWA.

                                                                                                              1. 3

                                                                                                                Imagine a hypothetical to-do list service, implemented as a PWA.

                                                                                                                If a client has no JS, you can just type to-do items and click Submit to store them on the server, or tick a box and Submit to clear them.

                                                                                                                If a client has basic JS, you can create and complete items in real-time and those actions will be sent to the server asynchronously in the background, without reloading the page.

                                                                                                                If a client support service workers and the full nine yards, if you’re offline it also caches the changes locally and automatically syncs them back to the server, and lets you install it to your home screen as an app, etc. etc.

                                                                                                                If a particular client doesn’t support JS, that particular client won’t be able to install the page as an app and run it offline. But that’s OK: if that client can still use the website, and other, more featureful clients can use it as an app, that makes it a Progressive Web App.

                                                                                                    3. 6

                                                                                                      What else would they (wikimedia) do with more money than they know how to spend?

                                                                                                      1. 9

                                                                                                        I always thought they should put the money into professionals making textbooks. Then, they sell them plus the course materials to colleges (esp community colleges). They start with general education just to make sure the books cost about nothing to students. They’re online for free, too, either immediately or after a time period. Then, they move into subjects like business, comp sci, etc. Gradually, we get a professional version of Wikipedia for both personal learning and career advancement.

                                                                                                        1. 3

                                                                                                          So, something like Wikibooks?

                                                                                                          1. 2

                                                                                                            I looked at them a long time ago. I can’t remember if they’re of the quality that business professionals and colleges would buy to replace existing resources. If they are, it’s a just marketing problem. If not, then it wouldn’t be what I was aiming for.

                                                                                                        2. 3

                                                                                                          Did wikimedia fall into a lot more money recently?

                                                                                                          1. 7

                                                                                                            Wikipedia gets more and more money every year: https://en.wikipedia.org/wiki/User:Guy_Macon/Wikipedia_has_Cancer

                                                                                                          2. 1

                                                                                                            Invest it and stop begging so much.

                                                                                                        3. 5

                                                                                                          This comment seems to indicate they’re serious about having server-side rendering, so it looks like that’s not a concern.

                                                                                                          1. 3

                                                                                                            Vue.js is pretty modular and has support for server-side rendering

                                                                                                            1. 1

                                                                                                              I agree with this, but I also think javascript can be used to improve the user experience. I would love to see a modern Wikipedia and would imagine the legacy site sticking around as well.

                                                                                                              1. 1

                                                                                                                Core reading and editing functionality should be left alone for now. A good test-case feature would be one that provides an enhancement to functionality that has a more basic, no-JS fallback.

                                                                                                              1. 9

                                                                                                                So many resources wasted just to track YOU more precisely.

                                                                                                                1. 16

                                                                                                                  I looked at the article as another good thing coming from a company whose business model is doing bad things. Who knows what good things people or companies might do as they make their NTP more precise. I encourage other bad actors to do more good things. :)

                                                                                                                  1. 7

                                                                                                                    …another good thing coming from a company whose business model is doing bad things.

                                                                                                                    I have never heard a better or more pithy description of it. The other notable example in my mind of a bad company that produces good things is Palantir, and Google naturally does a lot of this as well. Anyone have other examples along this line?

                                                                                                                    1. 6

                                                                                                                      Why thank you! :)

                                                                                                                      For Facebook, my favorite example is probably Infer. If it works well and gets widespread use, it could prevent a lot of program crashes or hacks that would do who knows what damage. Knock out lots of low-hanging fruit. They also released high-performance versions of PHP and database analytics. Making PHP faster can increase the reach of individuals and small organizations operating their sites on a tight budget or minimal expertise. The analytics innovations might be used for any kind of discovery. Some could benefit lots of people.

                                                                                                                      Given Microsoft’s history, patent trolling, and war on their own users, you could add them to the list for whatever F/OSS they make. Recently started using VS Code, their MIT-licensed IDE, to code something up for utilitarian reasons. There’s one, little, ripple effect.

                                                                                                                      1. 6

                                                                                                                        I’ll throw in React. When everyone jumped on that bandwagon there was the usual chorus of cheap cynicism about fickle JS programmers, but I’m pretty sure most of those cynics weren’t neck deep in jQuery hell when they made their comments. 6 years later there are only a handful of frameworks in play, and I think React is still the most popular. I am personally still a fan, because I manage a large app that is half jQuery / Backbone / Handlebars and half React / Redux and I know which part is more reliable and easy to reason about. I see it every day. I am very happy that Facebook released React.

                                                                                                                      2. 2

                                                                                                                        What good stuff does Palantir do?

                                                                                                                        1. 5

                                                                                                                          A fair amount of random open-source infrastructure-y things: https://palantir.github.io/ I know of it because of TSLint, but there’s plenty of other stuff you may or may not care about. I mostly don’t, but it surprised me when I saw it.