1. 1

    The claim of hundreds of billions of lines in COBOL sounds exaggerated.

    1. 2

      “Police, today, have apprehended a cartel of COBOL programmers with a shipment of COBOL code with an estimated street value of 300 billion lines…”

      I think articles like this always inflate/exaggerate by some orders of magnitude and can’t be taken literally, like when you read about police arresting a dealer with a dimebag worth $1,000 “on the street.” Unless there is an actual measurement (vs. “some guy estimates …”), they could be wildly off in either direction, but will tend to round up for effect.

      1. 1

        It might be high, I’m not sure, but I’ve been told (no hard evidence to back this up) that a lot of COBOL code starts as copy&paste of old code. So the number of lines produced per year is large but they are not new lines.

        1. 1

          Has to be some, but still. Just was trying to ballpark it: a billion means a thousand of 1MLOC projects. This is a major institutional project size, even today. The article implies there were hundreds of thousands such projects in COBOL’s heyday, or untold millions of smaller projects. Given the installed mainframe base by late 1970s, it just doesn’t check out. The only explanation is it boomed in later years, which sounds contrary to common perception.

          1. 4

            COBOL is exceptionally verbose. A programmer I know who develops new features in it today estimates that a typical module developed years ago is likely around an order of magnitude larger than if it was written in a modern language.

            After seeing the code for a legacy ERP system up close, I’d wager it’s closer to 15x larger.

      1. 1

        +1 for keeping a human in the loop ;-)

        (I’m kidding of course, but knitting machines are very real. Here’s a new one aimed at small-scale use.)

        1. 1

          Hah! My very first thought: “Cool! but looks hard…must automate…”.

        1. 4

          Wow! Microsoft has come a long way since the days of Ballmer and Linux is a cancer. Free software really has won.

          That said, I haven’t used PowerShell much but the few times I’ve used it I didn’t really like it. The length of some command lines to do basic stuff like setting up a domain controller on Windows Server Core were horrendous.

          1. 3

            I think the idea is to use aliases alot, but have a standard way of writting command names.

            1. 2

              Ah, makes sense. Seems not all of the aliases are a good idea though (lobste.rs discussion).

            2. 2

              What superpat said, plus: tab completion for cmdlets/functions/executables and parameters..This is one of my favorite things about powershell. I never have to remember crap like what the argument names are or what the order is, almost never have to “foo –help”, and I don’t have to type most of it, because I can use tab completion on cmdlet parameters.

            1. 1

              I am upvoting too…but I could have swarn I saw it posted here about a year ago. So good, it’s worth another read.

              1. 5

                Mildly entertaining.

                In that vein, I noticed that Jim Whitehurst (Red Hat’s CEO) is wearing a Microsoft Band 2. Brave new world.

                1. 1

                  Maybe it was more entertaining for the live audience?
                  I ended up not watching it to the end – stopped not long after “the turn”.

                1. 1

                  Isn’t there Visual Studio support for OSX and linux now? Why would I rather use this than Visual Studio? My impression is that Visual Studio is best in class.

                  Is jetbrains' bet that by using standard jetbrains shortcuts, polyglot folks would rather stick with the the jetbrains C# tool rather than relearn the tools for Visual Studio?

                  1. 6

                    Visual Studio (Express | Community | Professional | Enterprise) only runs on Windows, and is closed-source.

                    Visual Studio Code is free, cross-platform, and similar to the Atom editor. It’s not the same as the flagship IDE, but shares the name.

                    1. 1

                      I’m kind of puzzled why Microsoft chose that name. It only seems to spread confusion.

                    2. 2

                      Maybe that, and every .NET developer that has ever used R# goes through a “why can’t these guys just make the whole IDE” phase. I’ve often heard visual studio described as a poor hosting environment for R#.

                      1. 1

                        Whole Tomato’s “Visual Assist X” product is another good Visual Studio extension, particularly for C++ work. http://www.wholetomato.com/

                    1. 12

                      Also agreed, but while reading this it occurred to me that in more “modern” lisps … well in clojure, anyway … there seems to be more of a tendency to have smaller, composable functions, more like the Haskell examples the author gave. Maybe clojure started out with lessons learned from decades of lisp, or swiss-army-knife functions had something to do with performance of machines decades ago, I’m not sure. But I sure do prefer using small composable functions and it’s one of my favorite things about Haskell.

                      1. 3

                        I vote that any locale that shows up on time.is only getting to use UTC time. If you feel the need to make your time zone that complicated, you don’t get one.

                        1. 1

                          Half-hour offsets are uncommon but used elsewhere; that seems to be the only thing unusual about this zone.

                        1. 2

                          Are they the same areas for “beauty” in computer science?

                          1. 1

                            I was wondering almost exactly the same thing. For me it was “I wonder which algorithms would light up the ‘this is beautiful’ part of the brain.” I can think of several algorithms that blew me away with their beauty when I first saw them, and several that while useful are like, “Ugh…”

                          1. 28
                            • thrilled to announce
                            • align with our values
                            • supported us on our journey
                            • What does this mean for you as a LastPass user? Great things!
                            • continuing to grow the service
                            • thank you to all of our users and supporters
                            • open the next chapter of our story

                            This is the Official LastPass Death Pool thread. You can pick what day you think the LastPass browser extension will die, whoever is closest wins a 1 year subscription to the competitor of their choice on me. Death is considered to have happened when any of the following happens, and will be interpreted generously:

                            • LastPass is removed from the Firefox or Chrome app stores
                            • the LastPass extension stops working, or stops syncing because some web service is offline
                            • the LastPass web login stops working
                            • any of the above due to rebranding (“now we’re the LogMeIn extension!”)
                            1. 3

                              August 20th, 2016

                              Sadly, I don’t want a competitor subscription, I want an open source, well written alternative I can host on my own server and generate my own keys for.

                              I’m getting more and more on board with federated services these days. Then I wouldn’t have these problems when companies sell/die/resurrect/reinvent.

                              1. 8

                                Along with what durin42 and ChadSki mentioned, I think pass is the other free software competitor. I’m evaluating these three to pick my replacement - LastPass was one of exactly two pieces of closed-source software I still use and I am grimly unsurprised to get burned again. Oddly enough, though LastPass is super-chirpy on Twitter, they haven’t responded to me.

                                1. 3

                                  I use pass and like it a lot, but I’m not sure it’s a replacement for LastPass (certainly not without a lot of porting and frontend work). There’s a Firefox extension, but it’s immature, I’m not aware of any Chrome plugin at all, and I don’t know if it’s been comfortably ported to mobile platforms or Windows.

                                  1. 1

                                    Sigh, that sucks, i really wanted to use pass but honestly the cli lastpass has and the extensions and apps are a hard combination to beat.

                                2. 5

                                  Is there anything wrong with http://keepass.info/ ?

                                  1. 2

                                    I investigated all the options about 18 months ago, keepass was nice in principle but the UX was unworkable in practice. If memory serves the Chrome plugin was either non-existent or didn’t work anywhere near as well as LastPass’s.

                                    It’s possible this has since changed, and I’d expect an uptick in development due to this announcement.

                                    1. 5

                                      “unworkable”? You can tell it wasn’t designed by hipsters, but it works pretty well. I’ve used it for about 5 years and think it’s great.

                                      I used to use the FF extension, but I can honestly say that keepass’s “Auto-Login” feature is much less hassle than having to go and install a plugin into every computer’s browser, keeping it up to date, blah, blah.

                                      Rants about plugins aside, keepass has a nice SSH-key plugin: KeyAgent. I love this plugin and use it+keepass to manage all my SSH keys now too. I actually roll over my SSH keys now because it’s so easy, something I never got into the habit of doing even after 15 years of using SSH.

                                    2. 1

                                      My issue with KeePass at the moment is that I want consistent 2 factor authentication (via Yubikey) everywhere (even on my phone). You can get Yubikey on desktop via a plugin, not sure about phone and browser plugins don’t support it.

                                    3. 1

                                      Sadly, I don’t want a competitor subscription, I want an open source, well written alternative I can host on my own server and generate my own keys for.

                                      Based on the HN thread, https://passopolis.com/ sounds vaguely promising, but I haven’t done much research yet.

                                      1. 1

                                        That’s just Mitro, which you and I assessed quickly and both found wanting due to having too many moving parts, but that can likely be fixed.

                                      2. 1

                                        Mitro released their source when they shut down, didn’t they?

                                      3. 2

                                        June 1st, 2016.

                                        Also, this news makes me profoundly sad. I use Yubikey two factor with it and I guess I am now searching for an alternative that support two factor support everywhere (Chrome, App, Android).

                                        1. 2

                                          Already made my switch to 1Password after waking up to that announcement. It’s been a slight adjustment but I’m okay with it.

                                          1. 1

                                            December 25th 2015

                                            1. 1

                                              February, 14, 2016

                                              1. 1

                                                March 25, 2016

                                              1. 20

                                                People seem not to realize (or not to want to realize) that CAP is a mathematical theorem which is rigidly true in every circumstance and cannot be talked around or ignored. It’s simply a fact. In the presence of network partitions, your system will sacrifice consistency or availability (or, in a no-doubt worryingly large number of cases, both); the most you can do is pick. (It is a safe bet, by the way, that availability is the wrong choice [edit: to keep; that was entirely unclear, sorry].)

                                                (As an amusing-to-me aside, CA is what every system should be in the absence of partitions. If your system cannot deliver both consistency and availability even when everything is going right, it is worse than useless.)

                                                1. 14

                                                  As an amusing-to-me aside, CA is what every system should be in the absence of partitions.

                                                  Sometimes, for latency reasons, you might want lower consistency even when the network is fully connected. Figuring out when you want that, though… maybe an open research problem, haha.

                                                  1. 2

                                                    As an amusing-to-me aside, CA is what every system should be in the absence of partitions.

                                                    As aphyr said, you may want to do this for latency reasons. For example, theres PA/EL in Abadi’s PACELC taxonomy. Many traditional architectures with replications trees of relational databases offer these tradeoffs, as do many “quorum”-based database systems.

                                                    Along with latency, there’s also scale. Again, with relational databases it’s fairly common to have async replicated read replicas take read-only traffic, or to have multi-master configurations with async replication. These systems choose A over C entirely for performance reasons, and may not actually intend to be available under partitions. In fact, many choose a “bounded staleness” model, where they stop returning data after some known staleness, which is not possible to achieve with full availability under partitions. These kinds of systems - very sensible systems - are neither C (linearizable) or A (fully available) under partitions.

                                                    1. 2

                                                      This is true. Actually, the extreme strength of the notion of consistency Brewer used (that is, linearizability) is a point that can be used to argue against the conclusions of the CAP theorem, because depending on the data model, many systems can be meaningfully consistent without full linearizability.

                                                      I’m not aware of any work to prove (or disprove) the CAP theorem for different notions of consistency, though I would conjecture that the lower bound on consistency possible while maintaining availability is uselessly low.

                                                      1. 4

                                                        I’m not aware of any work to prove (or disprove) the CAP theorem for different notions of consistency

                                                        I suggest http://www.vldb.org/pvldb/vol7/p181-bailis.pdf, which includes a handy summary of impossibility results for various consistency models.

                                                      2. 1

                                                        I can not remember the name good enough to find it in google, but MSR had an interesting paper trying to figure this out to some degree. Pileaus or something.

                                                        1. 1

                                                          This? http://research.microsoft.com/en-us/projects/capcloud/default.aspx

                                                          (looks like your memory is totally CA.)

                                                          1. 1

                                                            Yep, that’s it! That only does these adaptive things on reads.

                                                    1. 7

                                                      Can’t we just all agree to use Org mode and be done with it?

                                                      1. 4

                                                        :-) The first thing I did after reading the introduction was instinctively google to see if there was an org-exporter for it.

                                                        1. 3

                                                          I see org being the standard for notes and documents of Emacs users, but Markdown is the de facto standard for lightweight markup on forums, like right here.

                                                          I’m still a bit mad every time I write bbcode though. Or MediaWiki’s pre-Markdown but not quite markup.

                                                          1. 3

                                                            I think that’s unfortunate. Org mode is much more expressive than Markdown at no cost of readability, IMO.

                                                            1. 1

                                                              much more expressive than Markdown

                                                              Not strictly more expressive, though. There is something that Org mode cannot express and Markdown can: code that begins or ends with whitespace. (And this has been an annoyance a few times in actual Org mode files I have written.)

                                                              In Org mode, you can’t write something like “append ~ & vbCrLf~ to each line”. Markdown makes that possible – not with `, but with its reassuringly ever-present escape hatch of writing raw HTML. You can always write “append <code> & vbCrLf</code> to each line”.

                                                              You could probably fix this locally by editing the setting org-emphasis-regexp-components, but then your Org mode files won’t look the same on other people’s computers.

                                                              1. 1

                                                                If you are exporting to LaTeX, you can use \texttt{ & vbCrLf}.

                                                          2. 2

                                                            This would simplify my life a great deal.

                                                            1. 2

                                                              Some of us can’t use emacs, for various reasons, the most important being fear of RSI, frankly.

                                                              1. 3

                                                                Do I have good news for you!

                                                                n.b.: I have no idea if this actually works.

                                                                1. 8

                                                                  Or, coming at it from the other direction, you can use Evil to bring Vim keybindings to Emacs, while using the canonical org-mode plugin. Evil worked well for me when I used org-mode for three months – it’s a very complete emulation. Though compared to sticking with Vim, it requires you to start from scratch with your configuration.

                                                                  (passy’s link is to Spacemacs, a bundle of Emacs plugins that includes Evil.)

                                                                  1. 1

                                                                    This is what I do, but it is a bit of a hassle if you use emacs for things other than vanilla text editing. If you use other emacs packages, you often get either keybinding clashes or outright brokenness, especially when in normal mode. Lots of emacs packages are really not expecting vim-style keybindings, so you have to add workarounds to your local config to sort things out, either with a real fix, or by selectively disabling evil-mode with something like (evil-set-initial-state ‘offending-mode 'emacs).

                                                                    With org-mode, for example, out of the box one of the more common keybindings, TAB to expand/collapse a heading, clashes with evil-mode.

                                                                    1. 2

                                                                      I’m in the process of trying out spacemacs and I believe it has evil-org mode built in. I believe it’s main goal is solving the problem of emacs packages not supporting vim-like bindings.

                                                                        1. 2

                                                                          The parent’s missing link text: “the evil-org package is indeed built into Spacemacs”. (The link shows evil-org listed within the variable spacemacs-packages in spacemacs/packages.el.)

                                                                  2. 6

                                                                    Or even this.

                                                                    n.b.: I also don’t really know if “works”, but I installed it and played around with it for a few hours and it looks pretty impressive.

                                                                  3. 1

                                                                    I’m not asking for standardization on emacs, I’m asking for standardization on Org mode. Editors can then adopt support for it like they have Markdown.

                                                                1. 4

                                                                  When I first saw this, I thought “Abstract State Machine Monad?”

                                                                  1. 3

                                                                    I stumbled upon this after hearing about OpenWorm here on lobsters.

                                                                    1. 5

                                                                      Link to the github project if you don’t want to go straight to video.

                                                                      1. 3

                                                                        One thing I really miss about make that is not present in most modern build languages is the way make “statements” are just shell commands. It makes it really easy to: a) prototype the build process in the REPL (the shell), b) integrate with other things that implement the “shell tool” contract, and c) know when you have crossed the line - if you can’t say something that’s not a small number of shell commands, it’s probably not a good fit for the Makefile.

                                                                        Rake /almost/ achieves fidelity with the shell. Psake is the closest thing I’ve seen to make in terms of shell fidelity. Leiningen is nice in that you can easily execute parts of the build in a REPL, even if it’s not made of simple shell commands and not really designed as a make replacement. All three of these have the attractive nuisance of a full language at the ready.

                                                                        It’s kind of sad that most of the newer build process tools I see go the other way and make it impossible to reproduce your build steps manually, because they use proprietary plugins and don’t work with other tools. Builds should be dirt simple.

                                                                        1. 2

                                                                          I got lost when he showed his 21 pass sample compiler.

                                                                          It’s not clear how he figured out what the passes should be, nor what order was best.

                                                                          1. 3

                                                                            I don’t think he was trying to focus on which specific steps to do in which order, but more the whole idea of using little tiny (nano) passes to do compilation.

                                                                            That said, I sure would like more details. I spent most of the day trying to find more lectures/books/courses on using scheme for building compilers. I’ve played around a little with trying to build toy language compilers in clojure (actually more like clojure data-structure compilers) using LLVM, but that’s not the same thing. I’d like to learn more about the types of optimizations he was talking about and how to use that toolkit.

                                                                            I’ve only found a few good resources so far and no lectures:

                                                                            1. 1

                                                                              I don’t think he was trying to focus on which specific steps to do in which order

                                                                              I don’t either. But it seems (to me) to be a difficult area with this idea. Sure, if you can figure out a bunch of nano-passes, that probably is a good design. But what process do you use to identify each pass?

                                                                              Good list of links.

                                                                            2. 1

                                                                              I think each pass represented a small change in code, like adding a return statement to make it look more like C (i.e. (return foo) ). Then each pass would grow organically from what he needs, hence the order.

                                                                              As to what exactly each pass should contain, that would be more specific to the compiler/optimizations you’d be building.