1. 32

    I don’t see why this progress bar should be obnoxiously put at the top of the page. It’s cool if you wanna do a donation drive but don’t push it in the face of everybody who comes here. Honestly at first I thought this was a bar for site expense. Then I realised it’s to ‘adopt’ an emoji.

    1. 7

      Lobsters isn’t a daily visit for most readers, probably even for most users. They can’t see it to join in if there isn’t anything visible for it, and it has an id for adblocking if you prefer not to see it.

      1. 22

        Personally a check this site quite regularly on my mobile device… which doesn’t have an ad-blocker.

        1. 12

          That sounds awful. If you’re an android user, normal uBlock Origin works on Firefox for Android just like it does on desktop. :)

          1.  

            Or use Block This!, which blocks ads in all apps.

            1.  

              Oh, that’s a cool little tool. Using a local VPN to intercept DNS is a neat trick. Unfortunately doesn’t help with in this case because it blocks requests to domains and not elements on a page via CSS selectors.

              That does make me want to actually figure out my VPN to home for my phone and setup a pi-hole, though.

            2.  

              Ohh! Good to know, thanks.

            3.  

              Firefox 57+ has integrated adblocker nowadays, on both desktop and mobile; plus, there’s also Brave.

            4. 27

              That is still annoying that I need to setup my adblocker to fix lobste.rs. So much for all the rant articles about bad UX/UI in here.

              1. 11

                maybe one could just add a dismiss button or sometimes like that? I don’t find it that annoying, but I guess it would be a pretty simple solution.

                1.  

                  I concur, either a client side cookie or session variable.

                  1.  

                    Well, yeah… that’s how you could implement it, and I guess that would be the cleanest and simplest way?

                2.  

                  It’d be great to see data about that! Personally I visit daily or at least 3 times a week. Lack of clutter and noise is one of the biggest advantages of Lobsters. And specifically, I looked at the link, and I have no idea who this Unicode organization is, or their charitable performance, or even if they need the money. I’d imagine they are mostly funded by the rich tech megacorps?

                  1.  

                    [citation needed] ;-)

                  2.  

                    Adopting an emoji isn’t the end goal: the money goes to Unicode, which is a non-profit organization that’s very important to the Internet.

                    1.  

                      If this bar actually significantly annoys you, I’m surprised you haven’t literally died from browsing the rest of the internet.

                    1.  

                      Excellent. I’ve never before wanted to use CMake, now I do. Seeing the way gtest was included so easily, following that through to the gtest CMakeLists.txt, and finding another library definition like your example illustrated the multi-project structure as well.

                      Thank you for the post! I wish I had more than one upvote to give.

                      1. 13

                        I just had to scroll 3 screens to get past a gigantic picture of a lamp in order to get to the text.

                        What the fuck?

                        Waiting on “How To Build A Blog Post That You Won’t Hate.”

                        1. 7

                          It’s Medium. Permanent huge bar across the top of the screen, permanent floating “open in app” button at the bottom.

                          I don’t know how Medium makes web design decisions, but it’s certainly not with the user’s experience in mind.

                          1. 1

                            Or their UX data is based on small sample sizes rendering it almost useless.

                          2.  

                            Waiting on “How To Build A Blog Post That You Won’t Hate.”

                            1. The page should load text in under two seconds.
                            2. The page should work if javascript is disabled or adblockers are enabled. There should be no popups or interruptions from the reading experience.
                            3. Text should be the first thing you see. Both the title and at least some content should present without scrolling.
                            4. All images must be directly relevant to the main text. If it does not clarify or expand on anything, leave it out. This means, among things, no memes, visual gags, or hero images. Most images will be screenshots or diagrams.
                            5. All visual content must have alt defined for accessibility. If possible, none of the visual content should be necessary to understand the text. Assume you will have visually impaired readers and plan accordingly.
                            6. All quotes and references should be linked, or at least cited. Use of tags should be consistent. You can decide what bold and italics mean, but monospace must mean code.
                            7. Any javascript should only interact with the text to make it more comprehensible. Examples: interactive demos, collapsible elements, inlined footnotes. Apoexamples: select-to-share, “load more” buttons, background animations, any form of scrolljacking.

                            Some of these might make the blog less marketable, but they’ll all make the blog more readable.

                          1. 5

                            I’m really amused they generate a C file and call out to gcc / clang. I wonder if they plan to move away from that strategy.

                            1. 3

                              This is a draft implementation of the concept, so probably yes.

                              1. 2

                                What would be gained by moving away from that?

                                1. 6

                                  For one, no runtime dependency on a C compiler.

                                  C compilers are also fairly expensive to run, compared to other more targeted JIT strategies. And it’s more difficult to make the JIT code work nicely with the regular uncompiled VM code.

                                  Take LuaJIT. It starts by compiling the Lua code to VM bytecode. Then instead of interpreting the bytecode, it “compiles” the bytecode into native machine code that calls the interpreter functions that would be called by a loop { switch (opcode) { ... } }. That way when the JIT compiles a hot path, it directly encodes all entry points as jumps directly into the optimized code, and all exit conditions as jumps directly back to the interpreter code.

                                  Compare this to a external compiled object, which can only exit wholesale, leaving the VM to clean up and figure out the next step. A fully external object—C compiled or not—can’t thread into the rest of the execution, so its scope is limited to pretty isolated functions that only call similarly isolated functions, or functions with very consistent output.

                                  1. 2

                                    Compare this to a external compiled object, which can only exit wholesale, leaving the VM to clean up and figure out the next step. A fully external object—C compiled or not—can’t thread into the rest of the execution, so its scope is limited to pretty isolated functions that only call similarly isolated functions, or functions with very consistent output.

                                    This doesn’t seem to be related to the approach Ruby is taking, though? They’re callng out to the compiler to build a shared library, and then dynamically linking it in. There shouldn’t be anything stopping the code in the shared object from calling back into the rest of the Ruby runtime.

                                    1. 2

                                      Right, it can use the Ruby runtime, but it can’t jump directly to a specific location in the VM bytecode. It has to call a function that can execute for it, and will return back into the compiled code when that execution finishes. It’s very limited, compared to all types of code being able to jump between each other at any time.

                                  2. 4

                                    exec’ing a new process each time probably gets expensive.

                                    1. 3

                                      Typically any kind of JIT startup cost is quite expensive, but as long as you JIT the right code, the cost of exec’ing clang over the life of a long running process should amortize out to basically nothing.

                                      I’d expect that the bare exec cost would only become a significant factor if you were stuck flip-flopping between JITing a code section and deoptimizing it, and at that point you’d gain more from improving your JIT candidate heuristics rather than folding the machine code generator in process and continuing to let it flip-flop.

                                      There are other reasons they may want to move away from this C-intermediary approach, but exec cost doesn’t strike me as one of them.

                                1. 6

                                  I think the faulty assumption is that the happiness of users and developers is more important to the corporate bottom line than full control over the ecosystem.

                                  Linux distributions have shown for a decade that providing a system for reliable software distribution while retaining full user control works very well.

                                  Both Microsoft and Apple kept the first part, but dropped the second part. Allowing users to install software not sanctioned by them is a legacy feature that is removed – slowly to not cause too much uproar from users.

                                  Compare it to the time when Windows started “phoning home” with XP … today it’s completely accepted that it happens. The same thing will happen with software distributed outside of Microsoft’s/Apple’s sanctioned channels. (It indeed has already happened on their mobile OSes.)

                                  1. 7

                                    As a long-time Linux user and believer in the four freedoms, I find it hard to accept that Linux distributions demonstrate “providing a system for reliable software distribution while retaining full user control works very well”. Linux distros seems to work well for enthusiasts and places with dedicated support staff, but we are still at least a century away from the year of Linux on the desktop. Even many developers (who probably have some overlap with the enthusiast community) have chosen Macs with unreliable software distribution like Homebrew and incomplete user control.

                                    1. 2

                                      I agree with you that Linux is still far away from the year of Linux on the desktop, but I think it is not related to the way Linux deals with software distribution.

                                      There are other, bigger issues with Linux that need to be addressed.

                                      In the end, the biggest impact on adoption would be some game studios releasing their AAA title as a Linux-exclusive. That’s highly unlikely, but I think it illustrates well that many of the factors of Linux’ success on the desktop hinge on external factors which are outside of the control of users and contributors.

                                      1. 2

                                        All the devs I know that use mac use linux in some virtualisation options instead of homebrew for work. Obviously thats not scientific study by any means.

                                        1. 8

                                          I’ll be your counter example. Homebrew is a great system, it’s not unreliable at all. I run everything on my Mac when I can, which is pretty much everything except commercial Linux-only vendor software. It all works just as well, and sometimes better, so why bother with the overhead and inconvenience of a VM? Seriously, why would you do that? It’s nonsense.

                                          1. 4

                                            Maybe a VM makes sense if you have very specific wishes. But really, macOS is an excellent UNIX and for most development you won’t notice much difference. Think Go, Java, Python, Ruby work. Millions of developers probably write on macOS and deploy on Linux. I’ve been doing this for a long time and ‘oh this needs a Linux specific exception’ is a rarity.

                                            1. 4

                                              you won’t notice much difference.

                                              Some time ago I was very surprised that hfs is not case sensitive (by default). Due to a bad letter-case in an import my script would fail on linux (production), but worked on mac. Took me about 30 minutes to figure this out :)

                                              1. 3

                                                You can make a case sensitive code partition. And now with APFS, partitions are continuously variable size so you won’t have to deal with choosing how much goes to code vs system.

                                                1. 1

                                                  A case sensitive HFS+ slice on a disk image file is a good solution too.

                                                2. 2

                                                  Have fun checking out a git repo that has Foo and foo in it :)

                                                  1. 2

                                                    It was bad when microsoft did it in VB, and it’s bad when apple does it in their filesystem lol.

                                                3. 2

                                                  Yeah definitely. And I’ve found that accommodating two platforms where necessary makes my projects more robust and forces me to hard code less stuff. E.g. using pkg-config instead of yolocoding path literals into the build. When we switched Linux distros at work, all the packages that worked on MacOS and Linux worked great, and the Linux only ones all had to be fixed for the new distro. 🙄

                                                4. 2

                                                  I did it for awhile because I dislike the Mac UI a lot but needed to run it for some work things. Running in a full screen VM wasn’t that bad. Running native is better, but virtualization is pretty first class at this point. It was actually convenient in a few ways too. I had to give my mac in for repair at one point, so I just copied the VM to a new machine and I was ready to run in minutes.

                                                  1. 3

                                                    I use an Apple computer as my home machine, and the native Mac app I use is Terminal. That’s it. All other apps are non-Apple and cross-platform.

                                                    That said, MacOS does a lot of nice things. For example, if you try to unmount a drive, it will tell you what application is still using it so you can unmount it. Windows (10) still can’t do that, you have to look in the Event viewer(!) to find the error message.

                                                    1. 3

                                                      In case it’s unclear, non-Native means webapps, not software that doesn’t come preinstalled on your Mac.

                                                      1. 3

                                                        It is actually pretty unclear what non-Native here really means. The original HN post is about sandboxed apps (distributed through the App Store) vs non-sandboxed apps distributed via a developer’s own website.

                                                        Even Gruber doesn’t mention actual non-Native apps until the very last sentence. He just talks/quotes about sandboxing.

                                                        1. 3

                                                          The second sentence of the quoted paragraph says:

                                                          Cocoa-based Mac apps are rapidly being eaten by web apps and Electron pseudo-desktop apps.

                                                    2. 1

                                                      full-screen VM high-five

                                                    3. 1

                                                      To have environment closer to production I guess (or maybe ease of installation, dunno never used homebrew). I don’t have to use mac anymore so I run pure distro, but everyone else I know uses virtualisation or containers on their macs.

                                                      1. 3

                                                        Homebrew is really really really easy. I actually like it over a lot of Linux package managers because it first class supports building the software with different flags. And it has binaries for the default flag set for fast installs. Installing a package on Linux with alternate build flags sucks hard in anything except portage (Gentoo), and portage is way less usable than brew. It also supports having multiple versions of packages installed, kind of half way to what nix does. And unlike Debian/CentOS it doesn’t have opinions about what should be “in the distro,” it just has up to date packages for everything and lets you pick your own philosophy.

                                                        The only thing that sucks is OpenSSL ever since Apple removed it from MacOS. Brew packages handle it just fine, but the python package system is blatantly garbage and doesn’t handle it well at all. You sometimes have to pip install with CFLAGS set, or with a package specific env var because python is trash and doesn’t standardize any of this.

                                                        But even on Linux using python sucks ass, so it’s not a huge disadvantage.

                                                        1. 1

                                                          Installing a package on Linux with alternate build flags sucks hard in anything except portage

                                                          You mention nix in the following sentence, but installing packages with different flags is also something nix does well!

                                                          1. 1

                                                            Yes true, but I don’t want to use NixOS even a little bit. I’m thinking more vs mainstream distro package managers.

                                                          2. 1

                                                            For all its ease, homebrew only works properly if used by a single user who is also an administrator who only ever installs software through homebrew. And then “works properly” means “install software in a global location as the current user”.

                                                            1. 1

                                                              by a single user who is also an administrator

                                                              So like a laptop owner?

                                                              1. 1

                                                                A laptop owner who hasn’t heard that it’s good practice to not have admin privileges on their regular account, maybe.

                                                            2. 1

                                                              But even on Linux using python sucks ass, so it’s not a huge disadvantage.

                                                              Can you elaborate more on this? You create a virtualenv and go from there, everything works.

                                                              1. 2

                                                                It used to be worse, when mainstream distros would have either 2.4 or 2.6/2.7 and there wasn’t a lot you could do about it. Now if you’re on python 2, pretty much everyone is 2.6/2.7. Because python 2 isn’t being updated. Joy. Ruby has rvm and other tools to install different ruby versions. Java has a tarball distribution that’s easy to run in place. But with python you’re stuck with whatever your distro has pretty much.

                                                                And virtualenvs suck ass. Bundler, maven / gradle, etc. all install packages globally and let you exec against arbitrary environments directly (bundle exec, mvn exec, gradle run), without messing with activating and deactivating virtualenvs. Node installs all it’s modules locally to a directory by default but at least it automatically picks those up. I know there are janky shell hacks to make virtualenvs automatically activate and deactivate with your current working directory, but come on. Janky shell hacks.

                                                                That and pip just sucks. Whenever I have python dependency issues, I just blow away my venv and rebuild it from scratch. The virtualenv melting pot of files that pip dumps into one directory just blatantly breaks a lot of the time. They’re basically write once. Meanwhile every gem version has it’s own directory so you can cleanly add, update, and remove gems.

                                                                Basically the ruby, java, node, etc. all have tooling actually designed to author and deploy real applications. Python never got there for some reason, and still has a ton of second rate trash. The scientific community doesn’t even bother, they use distributions like Anaconda. And Linux distros that depend on python packages handle the dependencies independently in their native package formats. Ruby gets that too, but the native packages are just… gems. And again, since gems are version binned, you can still install different versions of that gem for your own use without breaking anything. Python there is no way to avoid fucking up the system packages without using virtualenvs exclusively.

                                                                1. 1

                                                                  But with python you’re stuck with whatever your distro has pretty much.

                                                                  I’m afraid you are mistaken, not only distros ship with 2.7 and 3.5 at same time (for years now) it is usually trivial to install newer version.

                                                                  let you exec against arbitrary environments directly (bundle exec, mvn exec, gradle run), without messing with activating and deactivating virtualenvs

                                                                  You can also execute from virtualenvs directly.

                                                                  Whenever I have python dependency issues, I just blow away my venv and rebuild it from scratch.

                                                                  I’m not sure how to comment on that :-)

                                                                  1. 1

                                                                    it is usually trivial to install newer version

                                                                    Not my experience? How?

                                                                    1.  

                                                                      Usually you have packages for all python versions available in some repository.

                                                      2. 2

                                                        Have they chosen Macs or have they been issued Macs? If I were setting up my development environment today I’d love to go back to Linux, but my employers keep giving me Macs.

                                                        1. 3

                                                          Ask for a Linux laptop. We provide both.

                                                          I personally keep going Mac because I want things like wifi, decent power management, and not having to carefully construct a house of cards special snowflake desktop environment to get a useable workspace.

                                                          If I used a desktop computer with statically affixed monitors and an Ethernet connection, I’d consider Linux. But Macs are still the premier Linux laptop.

                                                          1. 1

                                                            At my work place every employee is given a Linux desktop and they have to do a special request to get a Mac or Windows laptop (Which would be in addition to their Linux desktop).

                                                        2. 3

                                                          Let’s be clear though, what this author is advocating is much much worse from an individual liberty perspective than what Microsoft does today.

                                                          1. 4

                                                            Do you remember when we all thought Microsoft were evil for bundling their browser and media player? Those were good times.

                                                        1. 11

                                                          Flat org structures are celebrated right now, but they imply high overhead for junior developers since mentoring and management must be entirely ad-hoc. Reversing this trend would require companies to shift mindsets from “a senior developer is a replaceable cog” to “a senior developer is a low level manager who grows more senior developers out of a small, productive team”. I’d bet most startup level companies would read that and think “ew, gross, middle managers”, or “ew, gross, spending money on developing people who will just leave”.

                                                          1. 3

                                                            This rings very true. We resisted the typical hierarchy as much as possible for many years, and we finally relented once we realized that, with junior developers and designers, structure is necessary for their development.

                                                            1. 2

                                                              I’m very lucky to be part of a startup that takes the second interpretation of senior developer, and does a good job of hiring a mix of junior and senior.

                                                            1. 39

                                                              Perhaps build systems should not rely on URLs pointing to the same thing to do a build? I don’t see Github as being at fault here, it was not designed to provide deterministic build dependencies.

                                                              1. 13

                                                                Right, GitHub isn’t a dependency management system. Meanwhile, Git provides very few guarantees regarding preserving history in a repository. If you are going to build a dependency management system on top of GitHub, at the very least use commit hashes or tags explicitly to pin the artifacts you’re pulling. It won’t solve the problem of them being deleted, but at least you’ll know that something changed from under you. Also, you really should have a local mirror of artifacts that you control for any serious development.

                                                                1. 6

                                                                  I think the Go build system issue is a secondary concern.

                                                                  This same problem would impact existing git checkouts just as much, no? If a user and a repository disappear, and someone had a working checkout from said repository of master:HEAD, they could “silently” recreate the account and reconstruct the repository with the master branch from their checkout… then do whatever they want with the code moving forward. A user doing a git pull to fetch the latest master, may never notice anything changed.

                                                                  This seems like a non-imaginary problem to me.

                                                                  1. 11

                                                                    I sign my git commits with my GPG key, if you trust my GPG key and verify it before using the code you pulled - that would save you from using code from a party you do not trust.

                                                                    I think the trend of tools pulling code directly from Github at build time is the problem. Vendor your build dependencies, verify signatures etc. This specific issue should not be blamed directly on Github alone.

                                                                    1. 3

                                                                      Doesn’t that assume that the GitHub repository owner is also the (only) committer? It’s unlikely that I will be in a position to trust (except blindly) the GPG key of every committer to a reasonably large project.

                                                                      If I successfully path-squat a well-known GitHub URL, I can put the original Git repo there, complete with GPG-signed commits by the original authors, but it only takes a single additional commit (which I could also GPG-sign, of course) by the attacker (me) to introduce a backdoor. Does anyone really check that there are no new committers every time they pull changes?

                                                                      1. 3

                                                                        Tags can be GPG signed. This proves all that all commits before the tag is what the person signed. That way you only need to check the people assigned to signing the tagged releases.

                                                                  2. [Comment removed by author]

                                                                    1. 2

                                                                      Seriously, if only GitHub would get their act together and switch to https, this whole issue wouldn’t have happened!

                                                                      1. 4

                                                                        I must have written this post drunk.

                                                                  1. 14

                                                                    This is often undervalued, but shouldn’t be! Moore’s Law doesn’t apply to humans, and you can’t effectively or cost efficiently scale up by throwing more bodies at a project. Python is one of the best languages (and ecosystems!) that make the development experience fun, high quality, and very efficient.

                                                                    As a Python programmer, this is a perspective that has never entirely made sense to me. Well, I should say hasn’t made sense to me for the last few years, at least. I feel like many people have this held-over dichotomy in their heads where Python is expressive and enjoyable, and thus one can write production code quickly, whereas other languages are not expressive and not enjoyable and thus code takes a long time to write. But while this might have been true in the past—while your performant options in the past might have all been some variation on fighting with the compiler, diagnosing obscure compilation errors, waiting for interminable builds—none of those are actually hallmarks of development in a typed, performant language anymore (except for C++). But modern compilers are fast, languages like Nim and D and Haskell are expressive and have powerful type inference. And generally speaking we are now in an era where a type system is not just a necessary evil for a compiler that’s too stupid to know how to interpret any variable without being explicitly told; they are universally recognized to be programmer aids, helping in writing correct code as well as performance. Without wading into the types vs tests debate, at the very least there is one—at the very least there’s a recognition that type systems, too, are for making the devlopment experience high quality and very efficient.

                                                                    If I were being cynical I would say that sometimes arguments like this feel like it’s really mostly about the “fun” part. That “programmer happiness” part, which is often conflated with programmer efficiency and expressiveness, but isn’t actually the same. It can almost feel like a hostage job—“I better enjoy the language I’m writing in, otherwise I couldn’t possibly be productive in it!”

                                                                    1. 8

                                                                      I find typed/compiled languages more fun actually, even C++. Because it drives me absolutely fucking bonkers to run a program and get a really stupid type error, fix, re-run, and get another type error. The compiler just tells you all the type/syntax problems up front and you can fix all of them with minimal rage.

                                                                      1. 6

                                                                        yeah, mypy and typescript have been a boon to productivity. Especially strict null checks.

                                                                        The advantages of the weaker languages is not having to play the “I have to make containers for all my thingy” games. Sometimes just a tuple is nice.

                                                                        Some of the existing typed languages don’t always follow the “if it’s conceptually simple, or if it’s easy for a computer to do, it should be simple in practice” rule. Especially when you’re crossing library boundaries and now spending a bunch of time marshalling/unmarshalling (sometimes necessary of course!) functionally equivalent stuff.

                                                                        Devil in the details of course

                                                                      2. 6

                                                                        I think your confidence in compilers is perhaps misplaced. It’s not just a matter of speed–other factors, like memory usage and even ability to compile period are relevant.

                                                                        none of those are actually hallmarks of development in a typed, performant language anymore (except for C++).

                                                                        I’d argue that the only widely-used performant typed language is C++, possibly Fortran (thought rust is getting close).

                                                                        The reason for this is that the farther you get into the problem domain (and the more comfortable it is for you), the farther you move away from actual silicon running instructions. It’s not a false dichotomy.

                                                                        The best-performing code will be written in assembly, but it’ll be terrible to deal with as a human (because we aren’t computers). The most comfortable code will be written in a high-level language (ultimately taken to extreme of “hey, grad student, write me a program to do X”), which is exactly not what runs on silicon.

                                                                        1. 4

                                                                          I think your confidence in compilers is perhaps misplaced.

                                                                          Now include python on the same plot, and the axes will stretch so far that GHC will look indistinguishable from GCC.

                                                                          the farther you get into the problem domain (and the more comfortable it is for you), the farther you move away from actual silicon running instructions. It’s not a false dichotomy.

                                                                          It’s only a true dichotomy if the human is better at telling the silicon how to implement the problem than the compiler is, which gets less true every day. It’s already the case that GCC will often beat hand-coded assembly when trying to solve the same problem. And my experience is that on real business-sized problems with ordinary levels of programmer skill and limited time available to produce an optimised solution, Haskell will often comfortably outperform C++.

                                                                          The best-performing code will be written in assembly, but it’ll be terrible to deal with as a human (because we aren’t computers).

                                                                          These days assembly is a long way away from reflecting what the actual silicon does. To first order the only thing that matters for performance these days is how well you’re using the cache hierarchy, and that’s not visible in assembly code; minor tweaks to your assembly can lead to radically different performance characteristics.

                                                                      1. 12

                                                                        I’ve changed my tune on Bitcoin recently for two reasons, despite still liking its ideals:

                                                                        1. The government intervening in the economy is sometimes a feature, not a bug. In times of economic crisis, for example, the government has unique powers to help. Sometimes it is a bug, but Bitcoin seems to assume that any intervention by any centralized entity, at ALL, is malicious. In fact I intend to take an economics class to be better informed on this very issue.

                                                                        2. The energy use is unconscionable. We’re already destroying the environment at a ridiculous pace and the Bitcoin space (to me, at least, bearing in mind that I don’t REALLY pay attention) seems to be full of anarchists who are determined to have their uncontrollable system at any cost, with absolutely no regard to seemingly unrelated consequences.

                                                                        1. 13

                                                                          The government intervening in the economy is sometimes a feature, not a bug.

                                                                          If by “sometimes a feature” you mean “the only thing that prevents repeated economic collapse” then yes.

                                                                          If you’re interested at all then definitely take a macroeconomics class. And history while you’re at it, especially pre-industrial and early industrial America.

                                                                          1. 5

                                                                            Sometimes == every time bitcoiners fall for a scam and lose money (and suddenly drop all the libertarian stuff and start crying for government help).

                                                                            Look at /r/Buttcoin, the amount of fraud in the cryptocurrency space is beyond ridiculous.

                                                                            1. 1

                                                                              I agree with your observation, but I think understanding the cause is more useful than poking fun at it. I’ve gotten the sense that falling for scams is an expected cost to a certain constituency, specifically the people who are using cryptocurrency as a medium of exchange for things the governments they live under don’t approve of. I don’t expect the prevalence of scams to scare that group away. People who don’t share that driving concern should take note and understand that it’s always likely to be high-risk.

                                                                            2. 1

                                                                              Not that I’m in favor of Bitcoin at all (and I seriously agree with your first point) but I’ve also seen arguments that Bitcoin is used in some places (perhaps it was China?) to help mop up excess energy from renewable sources when they’re at peak output hours. I think the argument went that when the sun is high in the sky on a clear day, or when the wind is really blowing, energy companies will often turn off windmills or solar panels to avoid producing too much energy. In this case, Bitcoin can help use up that excess energy, and by turning it into cash, become a sort of renewable subsidy that makes it more attractive to build more renewable energy sources. I do know there are definitely places where a renewables-powered grid overproduces so much that energy prices become negative.

                                                                              Perhaps this isn’t true, but I think it illustrates that maybe the energy problem is a more complex issue than it appears?

                                                                              1. 7

                                                                                Sounds like some fairy tale told by miners implying they are not mining 24h/7d a week.

                                                                                1. 3

                                                                                  Mm, that matches my understanding of how energy production works, but it’s also the case that that energy could go into other things. I think it was actually here on lobste.rs that I learned about kinetic energy storage (roll a ball up a hill, to roll it back down later… that sort of thing) and how it’s used to smooth out energy demand.

                                                                                  There’s no way that Bitcoin miners aren’t making things difficult for grid operators. I agree with @isra17 that it’s an extremely self-serving claim.

                                                                                2. -1

                                                                                  The energy seems like a fairly trivial cost to me. It’s a fraction of a percent. I’m willing to pay that price, and I’m also optimistic about the future of renewable energy.

                                                                                  1. 13

                                                                                    The per-transaction electricity cost was 215kwh back in November - that’s not trivial in the slightest. At market rates where I live it’s $7 or so.

                                                                                    Credit cards processors use several orders of magnitude less per payment made.

                                                                                    1. 1

                                                                                      Well in dollars terms it either is worth it or its not. I’m not particularly concerned about the environmental impact.

                                                                                      1. 9

                                                                                        And whom do you expect to deal with the environmental consequences?

                                                                                        1. 2

                                                                                          whoever’s dealing with it for the other 99.9% of the environmental impact from non-renewable energy sources

                                                                                          1. 7

                                                                                            That would be your descendants.

                                                                                            1. 1

                                                                                              o/ yo

                                                                                              1. 0

                                                                                                if their solution ends up involving defining standards for sufficiently useful computations, well, uh, godspeed

                                                                                      2. 9

                                                                                        A fraction of a percent of what? Energy use? Today Bitcoin is estimated to use as much energy as the country of Denmark. By 2020 is estimated it’ll use literally as much energy as we use in the entire planet today. I don’t particularly see how that’s trivial. Source: https://arstechnica.com/tech-policy/2017/12/bitcoins-insane-energy-consumption-explained/

                                                                                        1. 6

                                                                                          Today Bitcoin is estimated to use as much energy as the country of Denmark

                                                                                          That’s far out of date. Denmark consumes approximately 3.5GW; bitcoin is now at about 5GW, somewhere between Hong Kong and Bangladesh.

                                                                                          https://digiconomist.net/bitcoin-energy-consumption

                                                                                          By 2020 is estimated it’ll use literally as much energy as we use in the entire planet today.

                                                                                          No credible extrapolation is possible, obviously. Energy usage will drop fast when the bubble bursts.

                                                                                          1. 0

                                                                                            Because denmark has like 5 million people? I’m about as worried about bitcoin as I am another denmark popping up (the world gains like 12x the population of denmark every year)

                                                                                            edit: re 2020: https://xkcd.com/605/

                                                                                          2. 1

                                                                                            I know next to nothing about cryptocurrencies, but my understanding is that Proof of Stake means we don’t need to use this energy. Many coins don’t use this because they weren’t sure whether it was secure. But recently the IOHK team has proven a secure Proof of Stake algorithm for Cardano.

                                                                                            Is there a downside to this approach?

                                                                                            1. 4

                                                                                              The “Criticism” section on the Wikipedia article on Proof of Stake lists a few:

                                                                                              https://en.wikipedia.org/wiki/Proof-of-stake#Criticism

                                                                                              Note that Wikipedia is an ideological battleground when it comes to cryptocurrencies, so make sure to check the citations for a more comprehensive view.

                                                                                              1. 2

                                                                                                I can’t find the source for this despite having seen it just last night (sigh) but IOHK apparently makes you generate your own seed, which has resulted in lots of people using web-based generators that then steal your money. This is a really bad idea and it’s not that hard to read from /dev/urandom and then say “here write this thing down.”

                                                                                                So I wouldn’t really trust them to have done stuff correctly, including Proof of Stake. Obviously that doesn’t mean it can’t be done or even that they haven’t done it - just that I would like to see a lot of scrutiny from experts.

                                                                                                1. 2

                                                                                                  So I wouldn’t really trust them to have done stuff correctly, including Proof of Stake.

                                                                                                  The point is you don’t have to, they have proofs.

                                                                                          1. 3

                                                                                            Typewriters were optimized for, well, typing.

                                                                                            Within significant technological constraints of metallurgy, plastics, and mechanics that now offer vastly different tradeoffs. Even the language is different: when’s the last time you saw a semicolon outside of code?

                                                                                            1. 17

                                                                                              One of my goals in life is to be able to properly use a semicolon in the normal course of my writing; it’s not as hard as you would think.

                                                                                              1. 4

                                                                                                I often use them in SMS; I see it as a kind of challenge.

                                                                                                1. 1

                                                                                                  A colon or plain period would be more appropriate than semicolon here.

                                                                                              2. 3

                                                                                                I use them all the time; much better than comma splices.

                                                                                                1. 3

                                                                                                  Ironically this would not have been a comma splice, and a comma would be more appropriate.

                                                                                                  1. 1

                                                                                                    What is your criteria for a comma over a semicolon? It looks good to me.

                                                                                                    1. 8

                                                                                                      The clauses aren’t independent. Actually that form is specifically used for dependent clauses. For example, “I use them all the time, more than before.” The base “I use them” applies to both parts: “I use them all the time” and “I use them more than before.” But “I use them much better than comma splices” doesn’t make any sense, so that’s not what’s happening here. Forty-Bot is omitting “they are”—typically handled with an emdash, or parentheses if the additional content has only minor significance.

                                                                                                      For a semicolon to apply, “they are” must be included to create a second independent clause:

                                                                                                      I use them all the time; they’re much better than comma splices.

                                                                                                      Using a comma instead of an emdash is mildly incorrect, but widely accepted in conversational writing. Since Forty-Bot explicitly called out the comma, I only pointed out the comma would be more appropriate. Though an emdash would be most appropriate. Semicolons see little use because conversational writing favors such omissions.

                                                                                                      1. 2

                                                                                                        Thank you for the reply, this is very informative.

                                                                                                        1. 1

                                                                                                          Semicolons are also useful for: separating list elements, when they contain commas; showing off, often in language discussions :)

                                                                                                1. 4

                                                                                                  Ever typed anything like this?

                                                                                                  $ grp somestring somefile
                                                                                                  -bash: grp: command not found
                                                                                                  

                                                                                                  Sigh. Hit ‘up’, ‘left’ until at the ‘p’ and type ‘e’ and return.

                                                                                                  Yeah, but I finnd using “up” “Ctrl-a” “Ctrl-d” “grep” easier, especially as an emacs user.

                                                                                                  Generally speaking that would say that’s the biggest “hidden” feature of bash: emacs bindings by default. And that’s not only limited to movement commands like C-a, C-e, C-p, M-b, etc. You can kill lines or words with C-k or M-d, and yank them back in when needed with C-y. There’s even an “infinite kill-king” (by far the coolest name for a editor feature), to replace the last yanked section with the next item in the kill-ring. Of course, not everything is implemented, so theres no hidden mail client or M-x butterfly, but if you already are used to the default emacs editor binding, you get used to this quickly. And afaik, all tools that require GNU readline can do this. I just tested it out with Python, and it seemed to work.

                                                                                                  I also recall reading something about vi-bindings in the bash manpage, but I can’t testify on how useful harmful, annoying or useless they are.

                                                                                                  1. 6

                                                                                                    Emacs bindings by default is also one of the biggest hidden features of MacOS: the bindings work in all GUI text fields.

                                                                                                    1. 1

                                                                                                      Wow, I learned something new today. Prompted by your comment, I found this table comparing emacs bindings, OSX’s version of emacs bindings, and the more traditional Mac-style bindings for various operations.

                                                                                                      Looks like emacs’s M- bindings are mapped to ctrl-opt- on MacOS, which isn’t super convenient (e.g. I don’t see myself getting in the habit of using ctrl-opt-f over opt-rightarrow to move forward a word), but most of the C- bindings are convenient enough.

                                                                                                      1. 1

                                                                                                        I just discovered this a few days ago by accident because I have it set in GTK so I can use the bindings in my browser. I had to use a colleague’s (who is on macOS) browser and I just used them without thinking and only later realised ‘hey, wait a minute, why did that work?’.

                                                                                                        1. 1

                                                                                                          This is a major reason why I stay on OS X. I’m pretty sure I could reconfigure some Linux to get most of this, but probably not all of the niceness of text fields

                                                                                                          Would love to be proven wrong though

                                                                                                          1. 3

                                                                                                            I haven’t used GNOME for a while now, but I remember there being an option somewhere to used emacs keybindigs. And as it seems, all you need nowadays is to install the GNOME tweak tools, to activate it.

                                                                                                            (Alternatively, just use Emacs as your OS, heard they’ve got good support for emacs keybindings)

                                                                                                            1. 2

                                                                                                              Just FYI: That page is outdated, being written for 2.x era Gnome. Now the Emacs Input toggle is under the Keyboard & Mouse section.

                                                                                                        2. 3

                                                                                                          Yeah, won’t disagree. Occasionally, I find myself reaching for the caret because it comes to mind first.

                                                                                                          I’m an avid vi user, but the vi bindings on the command line never take for me. I always go back to the emacs ones.

                                                                                                          1. 3

                                                                                                            I use vi vindings and love them! I also never use ^ because I prefer interactive editing.

                                                                                                            It’s really nice that they work in Python and R as well as bash (because Python and R both use readline).

                                                                                                            In fact I think a large part of the reason that my OCaml usage trailed off is that the REPL utop doesn’t support readline. It only has emacs bindings!

                                                                                                            For those who don’t know, here is the beginning of my .inputrc:

                                                                                                            $ cat ~/.inputrc 
                                                                                                            set editing-mode vi
                                                                                                            
                                                                                                            set bell-style visible    # no beep
                                                                                                            
                                                                                                            1. 2

                                                                                                              Deleting words with C-w is also very helpful ime.

                                                                                                              1. 1

                                                                                                                I use fc for that. Opens your $EDITOR with the last command in a file, the edited command will be run

                                                                                                              1. 5

                                                                                                                I really love Sqlite, and reading accounts like this is great. BUT, note this all reads with no inserts/updates/deletes. Sqlites achilles heel for being really useful?

                                                                                                                Additionally, though this test was focused on read performance, I should mention that SQLite has fantastic write performance as well. By default SQLite uses database-level locking (minimal concurrency), and there is an “out of the box” option to enable WAL mode to get fantastic read concurrency — as shown by this test.

                                                                                                                1. 9

                                                                                                                  You’d be surprised. Serializing writes on hardware with 10ms latency is pretty disasterous, giving parallel write databases a huge advantage over SQLite on hard drives. But even consumer solid state drives are more like 30us write latency, over 300 times faster than a conventional hard drive.

                                                                                                                  Combine with batching writes in transactions and WAL logging and you’ve got a pretty fast little database. Remember, loads of people loved MongoDB’s performance, even though it had a global exclusive write lock until 2013 or something.

                                                                                                                  People really overestimate the cost of write locking. You need a surprising amount of concurrency to warrant a sophisticated parallel write datastructure. And if you don’t actually need it, the overhead of using a complex structure will probably slow your code down.

                                                                                                                  1. 3

                                                                                                                    Sounds like you might like the “COST” metric…. https://lobste.rs/s/dyo11t/scalability_at_what_cost

                                                                                                                  2. 6

                                                                                                                    Given that they run all of expensify.com on a single (replicated) Bedrock database, that would pass my “really useful” test, at least. :)

                                                                                                                    1. 2

                                                                                                                      The project page itself warns about that. When toying with ideas, I thought about a front-end that sort of acted as a load balancer and cache that basically could feed writes to SQLite at the pace it could take with excesses held in a cache of sorts. It would also serve those from its cache directly. Reads it could just pass onto SQLite.

                                                                                                                      This may be what they do in the one or two DB’s Ive seen submitted that use SQLite as a backend. I didnt dig deep into them, though. I just know anything aiming for rugged database should consider it because the level of QA work that’s gone into SQLlite is so high most projects will never match it. That’s kind of building block I like.

                                                                                                                      Now I’ll read the article to see how they do the reads.

                                                                                                                      1. 1

                                                                                                                        Devil’s advocate. If you are going to give up on easy durability guarantees, you could also try just disabling fsync and letting the kernel do the job you are describing.

                                                                                                                        1. 1

                                                                                                                          I’ve been trying to make posts shorter where possible. That’s twice in days someone’s mentioned something I deleted: original version mentioned strongly-consistent with a cluster. I deleted it thinking people would realize I wanted to keep the properties that made me select SQLite in first place. Perhaps, it’s worth being explicit there. I’ll note I’m brainstorming way out of my area of expertise: databases are black boxes I never developed myself.

                                                                                                                          After this unforgettable paper, I’d be more likely to do extra operations or whatever for durability given I don’t like unpredictability or data corruption. It’s why I like SQLite to begin with. It does help that a clean-slate front-end would let me work around such problems with it more true for memory-based… depending on implementation. Again, I’m speculating out of my element a bit since I didn’t build databases. Does your line of thinking still have something that might apply or was it just for a non-durable, front end?

                                                                                                                    1. 2

                                                                                                                      can’t we just all agree that C++17 wins :)

                                                                                                                      1. 2

                                                                                                                        I love C++, but lots of STL additions annoy me. For example, std::variant and std::visit are really clunky to use, and there are plenty of other examples.

                                                                                                                      1. 2

                                                                                                                        Red Mars, and it’s sequels Green Mars and Blue Mars. My dad read them last year, and gave them to me for Christmas. The wikipedia summary is accurate:

                                                                                                                        The Mars trilogy is a series of award-winning science fiction novels by Kim Stanley Robinson that chronicles the settlement and terraforming of the planet Mars through the intensely personal and detailed viewpoints of a wide variety of characters spanning almost two centuries. Ultimately more utopian than dystopian, the story focuses on egalitarian, sociological, and scientific advances made on Mars, while Earth suffers from overpopulation and ecological disaster.

                                                                                                                        The author also makes an effort to stick to hard science, and mostly gets it right. So far I like it a lot.

                                                                                                                        1. 3

                                                                                                                          I read the first two, and kinda lost interest on the third. But the science was spot on. Very interesting.

                                                                                                                          1. 1

                                                                                                                            I’ve read Aurora by Kim Stanley Robinson and quite enjoyed it. The Mars trilogy is on my wish list.

                                                                                                                          1. 9

                                                                                                                            Interesting, but these suggestions are very opinionated/irreverent, or outright misinformed. (why buy a junky low end sound card when HD Audio is basically supported by everything in the known universe?)

                                                                                                                            I’ve never been impressed with these kinds of guides, because they either involve you to cargo cult ceremonies involving crap like Xorg.conf, or pass off the author’s opinions and delusions as objective facts. (OpenBSD on the desktop is pretty easy; install, set up APM; pkg_add gnome firefox; do what gnome says… done)

                                                                                                                            1. 4

                                                                                                                              Hey calvin, thanks for the tip. Someone had advised me the opposite: that the built-in audio would have a problem and to use a soundcard with the C-Media CMI8768 chipset for known support. But I haven’t tried either yet to confirm, so you’re right that the article is purely my conjecture. I should work on making the writing tone less “objective fact”-y and emphasize that it’s merely my best understanding thus far, and always evolving. (For instance, the article was originally written for Debian, but then I learned about OpenBSD and adjusted the hardware accordingly.)

                                                                                                                              Anyway, any more suggestions about hardware? I haven’t bought this stuff yet except the monitor, so your tips can help me avoid buying the wrong stuff.

                                                                                                                              1. 3

                                                                                                                                Some thoughts on hardware load out then:

                                                                                                                                • I’m single monitor myself, but you could do better than 1080p and/or 16:9. 16:10 and even 1:1 panels exist, and DPI/font scaling exists on >1080p, so even if you lose space, text looks better.

                                                                                                                                • You probably don’t need workstation hardware and/or a low end dedicated GPU. You could get by with more modest hardware, and if you’re OK with it, build it yourself. (I personally buy off-lease business desktops, nowadays.) There’s nowadays a plateau of little performance gains, and your needs seem modest, so older and/or non-workstation hardware is fine - even laptops. Integrated graphics is completely fine for single-monitor non-gaming tasks.

                                                                                                                                • Again, if HD Audio based things didn’t work on OpenBSD, everyone using sound hardware made in this decade would be in deep shit.

                                                                                                                                • I don’t see the need to buy another NIC unless your on-board one is extremely dire or you plan on doing networking related stuff with the machine. Most high-end machines come with a cromulent Broadcom/Marvel/Intel NIC that is nice, and TBH, the low end Realtek NICs are also fine.

                                                                                                                                • That mic and mixer setup screams overkill. You can do mixing satisfying for everything but advanced podcasting and music production with software and inputs on the system itself. Get a good headset, or a more modest microphone.

                                                                                                                                • Tape for a workstation seems like a big oddity to me over Internet and local hard drive backups.

                                                                                                                                • The security proportion seems like big security theatrics to me, for little gain over spending security in other areas.

                                                                                                                                • Keyboards are subjective. I don’t like ergo or goofy function keys, but… (And FWIW but likely unrelated, that secondary selection link sent every red flag flying - GPL violations and replacing binaries on a system with likely outdated. incompatible, and dubiously sourced? No.)

                                                                                                                                • The printer and video input seem fine.

                                                                                                                                Not getting into software because that’s an even more subjective and costless concern.

                                                                                                                                1. 2

                                                                                                                                  (I personally buy off-lease business desktops, nowadays.

                                                                                                                                  I thought about doing that but just haven’t tried it. Where do you get yours? And what make/models if any tend to work consistently well with FOSS software from Linux to BSD’s?

                                                                                                                                  1. 1

                                                                                                                                    I get them locally, usually, or from my friend who ships them cheaply. Compatibility is pretty good; firmware is boring and the devices are usually just stock Intel stuff well supported by everything. By the time they go off lease, things like graphics driver support is resolved.

                                                                                                                                    1. 1

                                                                                                                                      Oh, that’s a good point about graphics. I’d have appreciated that on at least two machines. Appreciate the reply.

                                                                                                                              2. 3

                                                                                                                                Yup, I just followed the FAQ guide to full disk encryption, then read this page https://man.openbsd.org/installurl.5 to setup the ports then do - pkg_add i3 firefox. No Xorg config or anything.

                                                                                                                                My main customization is to setup a ‘solarized light’ colour scheme for xterm https://github.com/solarized/xresources .

                                                                                                                                My biggest pain point is staying on stable base, but wanting cutting edge packages like firefox, thats why I made my comment above about coolpkgs.

                                                                                                                                1. 3

                                                                                                                                  why buy a junky low end sound card when HD Audio is basically supported by everything in the known universe?

                                                                                                                                  Because integrated sound may be HD Audio but often have poorly isolated DACs. On my desktop computer the normal audio out jack has an obnoxious low pitch hum that changes tone slightly depending on the current CPU utilization. My monitor also supports DisplayPort audio but it has a similar hum tuned to the brightness of whatever’s currently being displayed.

                                                                                                                                  Those DACs aren’t properly isolated from the power supply driving the other components. CPU utilization and LCD brightness both change power draw, affecting everything on the same circuit. Interfaces like PCIe and USB have regulators that clean up the power, and there should be additional regulators and capacitors on even the junkiest sound cards. But that shitty embedded “HD Audio” is running right off the same power rail as everything else on the motherboard.

                                                                                                                                  I’m not even a hardcore audio junkie, I listen to 128kbps mp3s from soundcloud all day. I just prefer not to listen to my city’s AC electrical grid being converted to DC. Maybe you don’t notice it, or maybe you don’t care. But if you just saw the HD Audio label and somehow thought that had anything to do with audio quality, you’re the one who’s outright misinformed.

                                                                                                                                1. 1

                                                                                                                                  “If we took our previous set of microservices and we were to consider the likes of Go for these microservices, we could cut down the memory footprint for one of these microservices from 1GB per instance of an to something like 64MB. This represents a massive saving and would allow us to achieve the same resiliency that we needed before in 756MB worth of RAM. Less than the total cost of 1 instance of our Java based microservice.”

                                                                                                                                  1. 4

                                                                                                                                    Why though? I have no love for Java, but it isn’t inherently memory inefficient. Sounds like they just suck at writing code.

                                                                                                                                  1. 24

                                                                                                                                    It’s important to note that this article refers to the Docker company being dead as opposed to the software. It would be quite the overstatement to say that the software is dead given how many people use Docker for deployment, CI and development.

                                                                                                                                    Personally, I’m not worried. Even if the Docker company went under there is too much momentum behind the software. If the company stopped supporting the software, there’d be a hard-fork, a new Dockerhub and things would go on.

                                                                                                                                    1. 4

                                                                                                                                      It’s important to note that this article refers to the Docker company being dead as opposed to the software.

                                                                                                                                      The blog title is Docker, Inc is Dead, which is accurate. However, I think, OP did not do same while submitting on Lobsters. I requested a title change suggestion.

                                                                                                                                      1. 9

                                                                                                                                        I’m fairly certain that the article’s title also was different a while ago.

                                                                                                                                        1. 2

                                                                                                                                          The blog post’s title definitely was just “Docker is Dead” when this was first submitted, I checked when I was debating suggesting a different title here earlier.

                                                                                                                                      2. 2

                                                                                                                                        Yeah. Stuff like rubygems.org lives on sponsorship from many companies, rather than a backing company. It’ll be fine. I can’t see how Docker the company matters anymore either.

                                                                                                                                        1. 1

                                                                                                                                          There’s no mention of what will happen with all the OSS code and docker hub. I realize this isn’t an official press release, but I wish it was still mentioned. Do the current Docker owners plan on moving all their public/oss assets into a non-profit like Mozilla and keep it community driven? Do various industries plan on funding it as an open source initiative? What does this mean for Open Container and what working group will agree on the future of docker/containers?

                                                                                                                                        1. 14

                                                                                                                                          Questions (and answers) like this really ought to start with a definition of what they mean by “Agile”.

                                                                                                                                          The top voted answer appears to be critiquing a very rigid Capital-A-Agile methodology, but none of it comes through to me as a valid critique of a more general lower-case-a-agile methodology: deploy regularly, tight feedback cycles with users, integrate feedback.

                                                                                                                                          1. 10

                                                                                                                                            I guess these discussions are always a bit futile, because “Agility” is by definition a positive property. It’s a tautology really.

                                                                                                                                            Most criticism of agile methods are more focussed on a specific implementation (scrum at company X), and the usual response is “this is not true agile”.

                                                                                                                                            1. 7

                                                                                                                                              “this is not true agile” I’ve been guilty of this in the past. Agile is good, therefore if what you’re describing to me isn’t good then it’s not true agile.

                                                                                                                                              But after years of Scrum at various shops, sometimes under the guidance of pricey “Scrum coaches” consultants I’m totally burnt out and disillusioned by it.

                                                                                                                                              As you say agile is by definition positive but beyond this, I think there are still a lot of good ideas and principles in the early agile movement just not in the Scrum process itself (which doesn’t predate Agile) and what it has come to represent.

                                                                                                                                              1. 6

                                                                                                                                                I would define Agile as “follows the principles of the Agile Manifesto”. This implies a few things:

                                                                                                                                                1. The Manifesto devalues things like comprehensive documentation. This can be criticized and discussed.

                                                                                                                                                2. Scrum is only one possible instance of Agile. Not necessarily the best, maybe not even a good one. I would suspect that people discussed that to death already when Scrum was fresh.

                                                                                                                                                3. You can do Scrum without Agile. Scrum is usually defined superficially. This means there is a lot of room for variation including stuff which undermines the Agile intentions. Second, it helps the consulting business, because how could you get Scrum right except by oral teachings of certified people?

                                                                                                                                                1. 1

                                                                                                                                                  The Manifesto devalues things like comprehensive documentation. This can be criticized and discussed.

                                                                                                                                                  This aspect is a bit peculiar. Do they devalue software-documentation? (which is how I understood this principle). Or maybe it can be thought of a devaluation of a requirements-library/document. I came to terms with this principle in the sense, that it meant as an advice to avoid wasteful, up-front documentation, because clearly you cannot build a good product without documentation.

                                                                                                                                                  1. 1

                                                                                                                                                    From the manifesto:

                                                                                                                                                    That is, while there is value in the items on the right, we value the items on the left more.

                                                                                                                                                    It’s not “documentation doesn’t matter”, it’s “deliver something that works or your documentation is pointless”.

                                                                                                                                                  2. 1

                                                                                                                                                    The key bit of superficiality that reduces Scrum’s value is that people ignore the fact that Scrum does not mandate a process:

                                                                                                                                                    It is the opposite of a big collection of interwoven mandatory components. Scrum is not a methodology. What is Scrum?

                                                                                                                                                    Scrum is not a process, technique, or definitive method. Rather, it is a framework within which you can employ various processes and techniques. Scrum Guide

                                                                                                                                                    They take the initial process guide, defined in Scrum as a starting point to test, reflect, and improve upon, and treat it as a big collection of interwoven mandatory components. It makes middle management feel good as they get to hold meetings, see progress, and implement a buzzword, but avoids all of the valuable parts of Scrum.

                                                                                                                                                  3. 3

                                                                                                                                                    Bertrand Meyer has some criticisms (and compliments) of the core ideas, especially user stories vs requirements.

                                                                                                                                                    1. 1

                                                                                                                                                      thank you for that link. Would prefer text over video, but if it is Meyer, I’ll try to make room for it.

                                                                                                                                                      1. 1

                                                                                                                                                        Yeah, I feel the same way. He apparently has a book on the same topic, but I haven’t read it.

                                                                                                                                                        1. 1

                                                                                                                                                          okay, I haven’t watched it fully, but skipped over a few parts ,but I made sure to look at the user storeis and requirements parts. I am a bit torn on his view, because I can relate to his feeligns as a software user, that many times his user-story was forgotten and he attributes this to not generalizing them into requirements. However, I wonder if the lack of a requirements document is really the reason. Also, I think he must have forgotten how unusable a lot of requirements-backed software has been.

                                                                                                                                                          I share his sentiments on design and architecture work. However, good teams with good management have always made it possible to fit such work into the agile workflow. I attribute to agile consultants, that throughput and “velocity” have been overemphasized to sell agile, when it should much more be about building good products.

                                                                                                                                                          He lost me when he commented on test-driven development.

                                                                                                                                                        2. 1

                                                                                                                                                          His book is called “Agile! The good, the hype, and the ugly”, it’s brief, insightful, and well worth a read.

                                                                                                                                                    2. 5

                                                                                                                                                      I would argue that what you’re talking about there is more the consequences of adopting continuous integration and making deployments less painful, which one might call operational agility, but it has very little to do with the Agile methodology as such, at least from what I can see.

                                                                                                                                                      1. 6

                                                                                                                                                        Nope. Having tight feedback cycles with users is a core principle of Agile. Continuous integration on its own has nothing to do with user feedback, and doesn’t necessarily cause responsiveness to user feedback.

                                                                                                                                                        1. 1

                                                                                                                                                          The Agile Manifesto does not mention tight cycles, only “customer collaboration”.

                                                                                                                                                          1. 2

                                                                                                                                                            the Agile Principles (you have to click the link at the bottom of the manifesto) make multiple references.

                                                                                                                                                            1. 1

                                                                                                                                                              Can you explain? I don’t see the words “tight”, “feedback” or “cycles” here http://agilemanifesto.org/principles.html

                                                                                                                                                              1. 1

                                                                                                                                                                Presumably: The main difference between collaboration with customers (vs contract negotiations) is that rather than getting a single document attempting to describe what the customer wants up front (feedback cycle = one contract) you continually work with them to narrow down what they actually want (shorter/tighter than that).

                                                                                                                                                                1. 1

                                                                                                                                                                  the first principle, satisfy the customer through early and continuous delivery of valuable software, implies it. the third, deliver working software frequently, implies it. the fourth, business people and developers must work together daily, is an out-and-out statement of it.

                                                                                                                                                            2. 1

                                                                                                                                                              In my experience CI&CD is more useful for bugs than features. If you are coming from waterfall I understand where the connection between CI/CD and agile comes in.

                                                                                                                                                              1. 2

                                                                                                                                                                Regardless of your experience and opinion of utility, those strategies are core to Agile and have obvious analogues in other industries that Agile draws inspiration from. They aren’t unique or novel products of Agile, but I think it’s fair to say that’s how they reached such widespread use today. It’s definitely incorrect to say they have little to do with Agile methodology.

                                                                                                                                                          2. 3

                                                                                                                                                            After having been making the error of using the word “agile” in the latter generic sense for some time, I came to realize that pretty much nobody does it. When you say “Agile” business people automatically think “Scrum” and it works (still) as a magical incantation. When you try to talk about the actual merits of agile approaches (plural) they tend to phase you out and think you’re trying to look smart without knowing anything.

                                                                                                                                                            1. -2

                                                                                                                                                              The top voted answer appears to be critiquing a very rigid Capital-C-Communism ideology, but none of it comes through to me as a valid critique of a more general lower-case-c-communism ideology: democratic, common ownership of the means of production, state and classlessness

                                                                                                                                                            1. 3

                                                                                                                                                              This article seems to focus on a desktop perspective, but I’d be interested in hearing how or whether the points change from a server perspective. Specifically I’m planning to organize a (low intensity) shared user system, and have been leaning towards OpenBSD, primary because I haven’t heard a lot about the others, nor can I really find a good categorical comparison.

                                                                                                                                                              1. 8

                                                                                                                                                                I’ve used OpenBSD, FreeBSD, and Linux for servers. OpenBSD is the simplest by far, Linux the most tedious, with FreeBSD somewhere in the middle but honestly closer to Linux. My biggest problem with OpenBSD is sometimes packages are low quality or out of date, e.g. I need mariadb but OpenBSD is pinned on 10.0 due to an architectural issue. My only other problem with it is performance, Linux and FreeBSD have a lot of optimizations in the kernel that lots of non-base daemons rely on, but OpenBSD just doesn’t, and it causes random slowdowns all over the place.

                                                                                                                                                                For my personal server I don’t need insane, or even good perf and the simplicity is really nice, thus OpenBSD. If I had to use something else it would likely be Linux, since everything is made to run on Linux these days. Exception is file or network server (e.g. VPN gateway), since FreeBSD has a lot of dev time devoted to those use cases, as it’s frequently used for vendor appliances in those spaces. Linux has ZFS now (since 2016), and is encroaching on network use cases rapidly, but I’m still more comfortable with FreeBSD for both at this point.

                                                                                                                                                              1. 2

                                                                                                                                                                This last 12 months of actions and reactions by the developers of Caddy make me wonder why anyone would still use it.

                                                                                                                                                                1. 3

                                                                                                                                                                  It’s very useful and even open source, why not?

                                                                                                                                                                  1. 1

                                                                                                                                                                    In may when LE had an outage, Caddy servers with valid certificates in the renewable period would refuse to start. This was not an oversight, it was intended behaviour and it took a lot of complaints before they relented and adjusted the configuration. It will still refuse to start if a certificate is very close to expiry and LE is down, from memory.

                                                                                                                                                                    Later in the year they started injecting ads into repsonse headers for the downloaded “free” binary before again, relenting under a wave of backlash.

                                                                                                                                                                    Whenever the main developer is involved in a discussion about it where there is criticism or particularly comparison to alternative open source tools, his responses make it seem like he thinks requesting/renewing a certificate via letsencrypt is some kind of secret sauce that he alone provides to the world.

                                                                                                                                                                    Theres also that whole “separation of concerns” thing but that’s not specific to the last 12 months

                                                                                                                                                                    1. 3

                                                                                                                                                                      You could just set the certs explicitly in the caddyfile to work around that issue. And I guarantee you I could code, build, and deploy a hotfix removing that behavior in 15 minutes or less if necessary. But I can’t say the same for Apache or nginx. Actually I’d probably just shoot myself if I had to hotfix Apache.

                                                                                                                                                                      As for separation of concerns, I think a web server that handles all aspects of being a web server is a great idea. Certs in particular cause loads of trouble for amateur users.

                                                                                                                                                                      1. 1

                                                                                                                                                                        In no other TLS terminating program do you need to “deploy a hotfix” for fucking stupid behaviour.

                                                                                                                                                                        The problem with caddy is two fold: it tries to be “magic” and the “wizard” in control thinks he knows better than anyone else.

                                                                                                                                                                        1. 2

                                                                                                                                                                          In no other TLS terminating program do you need to “deploy a hotfix” for fucking stupid behaviour.

                                                                                                                                                                          Sorry, are you jokin my ass? You’ve NEVER heard of anyone having to deploy a config hotfix to Apache or nginx for stupid behavior? Hah, good one.

                                                                                                                                                                          1. 1

                                                                                                                                                                            Changing a config value isnt “code build and deploy a hotfix”.

                                                                                                                                                                            1. 1

                                                                                                                                                                              First sentence of my comment:

                                                                                                                                                                              You could just set the certs explicitly in the caddyfile to work around that issue.

                                                                                                                                                                              1. 1

                                                                                                                                                                                Literally the next sentence of your comment:

                                                                                                                                                                                I guarantee you I could code, build, and deploy a hotfix removing that behavior in 15 minutes or less if necessary

                                                                                                                                                                                Changing the config to statically reference a certificate file isn’t a long term solution, because it will then turn off Caddy’s renewal of said certificate. So, what, you either keep manually adjusting the config whenever Caddy won’t start, or you have to modify the source and re-build the whole program? All to work around fucking stupid behaviour that was intentional.

                                                                                                                                                                                1. 1

                                                                                                                                                                                  Yes, I could do either one. The point of the second sentence was not only is a config change easy, Caddy is so easy to work with I could do a code change instead if I wanted. Or roll out a config change first and a code change later. Or use an external LE client. I’ve had worse problems with other servers that were a lot harder to fix, and bitching about this one like it’s the end of the world sounds really amateur to me. And yes, the many problems in other servers are “fucking stupid behaviors that are intentional,” and still aren’t fixed.

                                                                                                                                                                                  Besides, how would you even hit this problem? Why are all of your frontend web servers restarting at the same time? If you only have one, why is it restarting unattended? I can’t imagine any skilled team having a second of downtime because of this.

                                                                                                                                                                                  1. 3

                                                                                                                                                                                    Why shouldn’t I restart my server? There’s no reason for me to expect it won’t come back.

                                                                                                                                                                                    1. 1

                                                                                                                                                                                      You shouldn’t make any unattended changes to production. If you’re restarting manually, you can just fix the issue with a config change trivially in < 1 minute. If you’re a company making an infrastructure change, you better have some real process that would catch any problem, not just this one.

                                                                                                                                                                                      1. 0

                                                                                                                                                                                        You can fix it “trivially” if you know how to fix it (which is highly unlikey given that the use-case for caddy is “you dont have to worry about certificates”) and if you’re manually restarting.

                                                                                                                                                                                        What if the software crashes and is restarted by your init?

                                                                                                                                                                                        What if the server has to restart due to a failure of some kind?

                                                                                                                                                                                        Its a fucking stupid concept and it was intentional. That should tell anyone all they need to know about how this project is run.

                                                                                                                                                                                        1. 2

                                                                                                                                                                                          That should tell anyone all they need to know about how this project is run.

                                                                                                                                                                                          I think you’re too willing to make black and white judgements, but ok.

                                                                                                                                                                                    2. 1

                                                                                                                                                                                      A skilled team wouldnt find certbot and haproxy/similar “too hard to configure” and turn to caddy.

                                                                                                                                                                                      I don’t know the exact situations that triggered the problem because I dont use the fucking thing, but it had enough people seeing the issue that the github issue was like a townhall meeting.

                                                                                                                                                                                      1. 1

                                                                                                                                                                                        No, they wouldn’t. But they might use Caddy if they didn’t want to spend the time doing so. Time is a finite resource.

                                                                                                                                                                    2. 1

                                                                                                                                                                      I literally only know about the header thing, where they relented. What else happened?

                                                                                                                                                                      1. 2

                                                                                                                                                                        Oh, the header is gone? I only remember adding it, missed the retraction.

                                                                                                                                                                        1. 6

                                                                                                                                                                          Yep, it died.

                                                                                                                                                                          To answer the grandparent, I’m going to be really blunt: Caddy has made some poor decisions that I disagree with and that make me disinclined to trust them. But so has Mozilla, as we’ve discussed recently. And, very recently, so has Apple, with the battery situation. Caddy, at least, was very straightforward and transparent in what they were doing, whereas these other companies were not. And in the modern context, where most open-source projects are sponsored by major companies, transparency in what’s going on is close to the best I can ask for. Toss in that building Caddy without that header at any point required, let’s be honest, the bare minimum of effort, whereas e.g. building Firefox without the Mr. Robot plugin did not, means I don’t personally have any trouble continuing to use them.

                                                                                                                                                                          1. 3

                                                                                                                                                                            I didn’t know that either, good to know. And I mostly agree. As I see it, Matt is trying to make a living out of a great piece of software. I respect his attempt, although I’m really glad he dropped the propriety headers.

                                                                                                                                                                      2. 1

                                                                                                                                                                        What actions and reactions?