1. 8

    I miss the Amiga (later retroactively renamed the Amiga 1000). It was raised in such a way that the keyboard would slide underneath it. It was the first and last time Commodore did right by the Amiga’s industrial design…

    1. 4

      REBOL did this better than most. All functions were just blocks, all functions were of fixed arity (with refinements to allow the arity to be changed), and had a rich syntax for literals of many different types…all of which means you could write powerful CL-style macros/reader macros with much richer syntax much more simply. Defining DSLs was dead simple.

      Ah, REBOL. You were too beautiful for this world.

      1. 4

        I also liked how small the reblets were when I looked at REBOL and the IOS that came before iOS. If you love REBOL, what do you think of Red? If you tried it out, did you find anything better or worse?

        Also, note that Red/System (see docs) supposedly lets one do system programming in REBOL/Red style. Figure you might like that concept given you like REBOL and apparently code in C language at work. Some could make it extract to C like PreScheme did and Ivory does to get benefits of HLL for low-level programs. Last I checked, it produces machine code directly using tooling implemented in REBOL.

        1. 3

          I’ve looked at Red and it’s awesome, but I fear it makes a few of the same mistakes that REBOL did.

          The main mistake is that the set of datatypes is closed and there’s a distinction between “types” like blocks and words, and objects that are user-defined.

          Objects are not first-class types and types are not first-class objects. For example, at least the last time I looked, it was not possible to pass an arbitrary object to print and have it come out with your custom format.

          The object system in REBOL was dying for a Common Lisp-style multiple dispatch object system. Then you could define a new print multimethod for objects of your class, for example.

          So you have a closed datatype system and the best way to extend it, objects, aren’t integrated as well with the system as I’d hoped.

          (The last time I wrote any REBOL code was probably almost ten years ago, though, so…Don’t hold me to any incorrect statements. :)

          1. 2

            I don’t consider the datatype design a mistake, just a different choice. Objects are first class types, though they don’t (yet) have a literal lexical form. Construction syntax, as in Rebol, has been considered, but that feature hasn’t been needed yet, so it’s not locked down. And while we will learn from other languages, including CL, it doesn’t mean we can incorporate their every feature and still maintain a consistent design. We have someone who has built some really cool CL feature examples to experiment with*, but deep design changes need solid work done to show that they can integrate well with Red’s design and goals. They should be a step forward, not just in a different direction.

            *examples

            That said, if you want to play with new ideas, it’s easy. And we’ll see what features user defined types come with. If you want to influence that design, now is a great time to get involved.

            name: object [
                f-name: "John"
                l-name: "Public"
                formed: is [rejoin [f-name " " l-name]]
            ]
            eqn: object [
                n-1: 10
                n-2: 2
                fn: :add
                formed: is [form fn n-1 n-2]
            ]
            print+: func [val][
                either object? :val [
                    print either in val 'formed [val/formed][mold val]
                ][print :val]
            ]
            print+ name
            print+ eqn
            
      1. 4

        The core of our product is written in C. We interact heavily with internal kernel structures, require very fine-grained control over allocation lifetimes, and need to do a lot of low-level bit groveling in a soft real-time environment. There isn’t a better language out there for that sort of thing.

        (Maybe C++, but there’s a lot to learn in C++, which I haven’t used in years…but I use C every day.)

        1. 1

          The majority of our code is in Python, but the performance-critical stuff is in C that we glue together using Python. So far so good.

          I’ve got it in the back of my mind that we’re going to migrate most of the stack to Go in the Mysterious Future, except for the parts that require very fine-grained control over allocation lifetimes and memory layout, which would still be in C.

          1. 1

            I know it’s not the same thing, but it reminds me of the syntax-directed editor of Python’s spiritual ancestor, ABC.

            1. 1

              I’m unaware of that editor. Is there a video of its usage somewhere?

              1. 1

                Not that I’m aware of, but there’s a paper describing it here: http://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.694.3304&rep=rep1&type=pdf

                (Like I said, it’s not really related, just thinking about editing Python AST’s and how Python is kinda-sorta descended from ABC.)

            1. 3

              Remember when being Unix-like meant “everything was a file”? It was nice.

              Linux is still better than most, honestly (sysctl talks to /sys, for example, instead of being its own thing) but Linux still has netlink and other stuff that aren’t files.

              Of course, it’s easy to judge, but X and Wayland solve hard problems: it’s not enough to write to a file to put pixels on the screen, you have to multiplex/mediate access, allow for manipulation of potentially broken clients, etc.

              Plan 9 was really the only one who got it right, and even then it got a few things wrong.

              1. 4

                Why is it nice?

                I hate Linux’s “everything is a virtual filesystem” approach. Looking at mount output on a modern Linux box just feels disgusting. 12 lines (!) of cgroups spam, and then devpts pstore securityfs debugfs configfs hugetlbfs OMGWTFfs. And how could I forget the infamous efivarfs!

                Also, most files in sysfs are text, so you have the overhead of parsing strings just to read system information.

                1. 1

                  Also, most files in sysfs are text, so you have the overhead of parsing strings just to read system information.

                  That’s the advantage. I can grep for information, cat it, sort it, etc, etc using tools that I already know how to use, because they’re just files containing text.

                  In the vast majority of applications the slight overhead for doing the string parsing isn’t going to have a significant effect on performance.

                  1. 3

                    Sure, but then when you want to do something less ad-hoc with it, it becomes a pain. The canonical source of that information shouldn’t be text, it should be structured data that can be dumped to text when necessary.

                    1. 2

                      But I can do the same with the output of sysctl(8). I don’t need a hundred mounts for that.

                1. 1

                  Walking around Tokyo, I often get the feeling of being stuck in a 1980’s vision of the future and in many ways it’s this contradiction which characterises the design landscape in Japan.

                  Could this also be because many American films in the 80’s about the future used Japanese culture? Rewatching the original Blade Runner made me think about this.

                  1. 3

                    Japan is one of our favorite places to visit, but there is a definite retro-futuristic vibe going on. Cash everywhere, or single-purpose cash cards instead of credit cards, fax machines, high-speed Internet access on your feature phone, no air conditioning or central heat but a robot vending machine at 7/11.

                    (We kept having children and so we haven’t gotten to travel internationally for a while now, but that’s our memory of it.)

                    1. 2

                      The feature phones have died – everybody on the train is staring at their iPhone or Android, now. Contactless smart cards (Suica, Passmo, etc), used for train fares, are gaining momentum as payment cards in 7/11 etc, but otherwise it’s still mostly a cash-only.

                      Otherwise it’s pretty much the same.

                    2. 2

                      Living in NYC, it feels like the 70’s version of the future!

                    1. 4

                      Hating my life because we’re a month-and-a-half past our scheduled release date because of a subtle bug in our code that wasn’t caught due to the nature of our test data (I know, I know!) and a bunch of testing not being done on the UI side because we’re understaffed.

                      1. 2

                        Dont waste time with automated tests. Users are unpredictable creatures and do crazy shit. Exploratory testing will save you time. except regression tests, do those.

                      1. 4

                        I use Firefox almost exclusively (including Firefox for Android on my phone), but I have to keep Chrome installed on my laptop because my job requires a working Google Hangouts client.

                        Once Google/Mozilla get around to fixing that, Chrome is getting uninstalled again.

                        1. 2

                          Waiting on that as well. It’s not something Mozilla can fix I don’t think. Just have to wait for google to get their shit together. It’s coming soon just like the google drive linux client.

                          1. 3

                            doesn’t seem it would be in google’s interest to allow hangouts to work on firefox. do we know they’re trying to do this?

                            1. 3

                              Apparently they used to have a firefox addon to make it work but they haven’t updated it for new firefox yet. The current hangouts page says they are working on it but it’s been a very long time since web extensions was announced.

                        1. 3

                          That’s a shame. Eve has some really fascinating ideas going on. If anything it serves as a valuable research product.

                          1. 22

                            I briefly corresponded with the author of the story and he was kind enough to give me some really nice insight into the history of the story.

                            EDIT:

                            This was years ago (2004). It was private correspondence so I didn’t want to paste it but looking back at the email, Dr. Nather actually says:

                            p.s. Post and/or publish any email from me, unless I ask otherwise.

                            So, I suppose I can post some of it.

                            Here we go, some snippets:

                            (I asked him if he still had contact with Mel)

                            I’ve lost track of Mel. I tried to Google his name, and was astonished to see the number of references to the article I wrote years ago, but nothing I could identify as recent. Sorry. Too many years, I guess.

                            (I lamented about the loss of the Good Old Days in all my angst of a 24 year old at the time)

                            It’s common to think the “good old days” were really great if you weren’t there at the time, and a lot of it was fun, but there was a whole lot that really wasn’t, too. That part tends to get brushed aside. Be of good cheer, Snoopy: hacking is easier now than it ever was – more of the fun, less of the tedium.

                            (in response to my asking if he had any other stories he was dying to get off his chest)

                            There is one that I don’t get to tell very often, since my audience rarely contains a professional programmer, and that I think should be preserved. While I was in San Diego Richard Hamming gave a talk at a meeting about programming – mostly about the error-correcting codes he invented, but he also addressed a hot topic of the day: Open vs. Closed Shop Programming. All the computers were run by Computing Centers, who had professional programmers on staff to write programs for the (poor, dumb) scientists who couldn’t do it themselves. There was a proposal to make this “Closed” shop a law of the land, otherwise a lot of (very expensive) computing time would be wasted by scientists messing up the process.

                            Hamming said that the Closed Shop was the best way he knew of to get a carefully written, code-efficient, well documented program that solved the wrong problem. He also said that he sometimes wrote a program and never ran it on a computer – just the discipline of programming was enough to get him the answer he was looking for.

                            Later, of course, as upstart groups began to get their own computers, the question resolved itself. Now scientists learn to program as a matter of basic training, as they once learned to work a slide rule.

                            1. 2

                              What did he say? Or should you not share it?

                              1. 2

                                Are you going to share any of that insight with us? Quite a teasing statement if not. ;)

                                EDIT responding to EDIT: Very interesting story about Hamming with a great lesson. Appreciate it!

                              1. 2

                                Very interesting.

                                On an unrelated note, what’s the window manager in the screenshot?

                                1. 4

                                  That’s i3-gaps, the terminal is termite, and the shell is zsh.

                                1. 1

                                  The last file manager I used that wasn’t a command line was Directory Opus Magellan II on the Amiga, twentyish years ago. Nothing has compared yet, and I’m too comfortable and too fast now with the shell to go back.

                                  1. 1

                                    I would love to know the validity of this claim. It seems fishy that a patent was filed but no white paper was submitted to journal for peer review (that I can find). If anyone with more expertise can provide their take on the matter, I would greatly enjoy it!

                                    1. 19

                                      The inventor has a website called boundedfloatingpoint.com. There he describes it in a bit more detail than the article, but not much.

                                      Note carefully how he describes it:

                                      This invention provides a device that performs floating point operations while calculating and retaining a bound on floating point error.

                                      And “[t]his invention provides error notification by comparing the lost bits”.

                                      It’s a solution to the problem of “unreported errors”. His solution provides extra fields in the floating point representation to carry information about ’lost bits” and allows the operator to specify how many significant digits must be retained before an error is flagged.

                                      This is an advantage over the current technology that does not permit any control on the allowable error. This invention, not only permits the detection of loss of significant bits, but also allows the number of required retained significant digits to be specified.

                                      At a cursory glance one might be inclined to think he’s solved the problem of floating point, but the reality is he’s developed a standard for communicating error in floating-point operations that can be implemented in hardware.

                                      Not to detract from his solution, but it doesn’t seem like he’s invented anything that will surprise hardware designers.

                                      1. 7

                                        Thank you for that analysis. This is a real problem with floating point numbers, but hardly the only one.

                                        People who haven’t seen it might be interested in this post from last year about a new number representation called “posits”, which addresses some completely orthogonal issues with fixed-size number representations. :)

                                        1. 1

                                          Nice! Thanks for the link.

                                        2. 1

                                          It’s a solution to the problem of “unreported errors”. His solution provides extra fields in the floating point representation to carry information about ’lost bits” and allows the operator to specify how many significant digits must be retained before an error is flagged.

                                          SIGNAL ON LOSTDIGITS;
                                          NUMERIC DIGITS 10;
                                          NUMERIC FUZZ 2;
                                          

                                          We just need to do all our math in REXX.

                                      1. 5

                                        I’m curious as to Google’s motivation for Fuschia: what does it offer over Linux?

                                        1. 26

                                          They’ll be able to use a license other than the GPL and have a stable ABI. This would please a lot of device manufacturers

                                          1. 4

                                            Isn’t the Linux ABI somewhat stable? Isn’t that a sticking point for Linus, not breaking userspace?

                                            1. 12

                                              The syscall interface is stable. The ABI for kernel modules/drivers is not.

                                              1. 2

                                                If this is the main objective, didn’t they “solve” this with Android’s new hardware abstraction layer?

                                                Rebuilding from the ground up seems like a huge amount of work when we can build up piecemeal stuff pretty nicely

                                                1. 9

                                                  I doubt the ABI chances have been solved with the /vendor partition. As I understand it, this change just allows for a clear separation between what is and isn’t the core Android system. Manufactures can still have binary blobs in /vendor and not release their customizations and plugins kept there. ABI breakage happens at the Kernel level, and can only be solved in the Android world if Google forced all manufactures to one standard Kernel for all devices.

                                                  The GPL is also something they can’t solve either. This is probably the saddest part of the Fuchsia project, and echos Google releasing Chrome after drumping so much money into Firefox. They support the OSS tool, but then dump them because they want their own control and licensing. Their new tool is still OSS, but with a license that’s better for them. I wrote about how companies embrace/use OSS a while back:

                                                  http://penguindreams.org/blog/the-philosophy-of-open-source-in-community-and-enterprise-software/

                                          2. 11

                                            We’ve seen a large number of Google devices coming to market (tablets, phones, notebooks). I wouldn’t be surprised if they were on their way to an “Apple”-like hardware mode where we have a 3rd, proprietary, but fully integrated environment to choose from. MSFT has the same sort of model going, with the Surface line of things, so it could be that we have an all out war between MSFT and Google for the next generation of business machines. I mean, look at the product lines:

                                            • Office: Covered by both, with MSFT having the product to beat
                                            • Email/Calendaring/Collaboration/etc: Exchange / Sharepoint vs Apps for Business
                                            • Managed “IT” services: Windows Server (run yourself, with domains etc) vs. Apps for Business

                                            Apple isn’t a threat to MSFT in this space, though it has a lot of similar, consumer grade, products.

                                            Obviously, there’s a bootstrapping problem for Google here, but, I’m sure there’s nothing stopping the Fuchsia team from running a Dalvik VM, or making Android apps run seamlessly on it, and I’d fathom that that’s part of the plan for adoption, with Dart/Flutter being the answer to C#/.NET.

                                            Google recently killed off Chrome Apps, so it seems that extending the Chromebook beyond running android apps, and Chrome Extensions (very limited as far as I can tell) will lead to an eventual death for the Chrome OS line of products.

                                            So, you have the ability to take what you’ve learned from Chrome OS, integrate all the hosted “cloud” stuff seamlessly into a full feature operating system that has better native app abilities? Seems like a lot of potential to gain market share, especially, as they are doing so in the open, where “what’s this Fuchsia thing?” is being asked about, people can look at, play with it, and audit the design, source code, and, of course, write blog posts about how it’s broken. Basically, they’re in a really good position here, technically, and from a marketing standpoint. It markets itself! And jeesh! Think of all the baggage they are eliminating by starting fresh.

                                            Black hats are salivating, and keeping track of all the errors that are being made in commits, just hoping that they become exploitable in some future, after aging a couple years without being touched….

                                            1. 7

                                              See the linked article in the article about how Google likes to build two of everything. I figure it’s essentially a hedge. If it turns out to be awesome in some way that Linux can’t be, they can move to it. If it turns out they need to do something they can’t do on Linux, they have this other OS all ready to go. If it turns out that it doesn’t do anything as well as Linux-based systems already can, then they aren’t really out anything but some money and engineer time, which they have plenty of. Google likes to do this in a number of domains to ensure that they stay on top no matter which way the industry goes.

                                              1. 11

                                                Linux has accumulated a lot of irrelevant features (attack surface) over time?

                                                1. 4

                                                  They have the money and time to do it? Or perhaps they are tired of trying to make the fragmented android / linux ecosystem work for them amd want to take a new approach they can fully control. Ui-wise I’m happy to see that it seems to have a functional out-of-the-box app launcher ala Kiss, though I guess any ui component will massively change in the future.

                                                1. 1

                                                  Super hyped for web asm. I’m so sick of JS heavy websites slowing down to a crawl on my phone but as a dev I love the flexibility having a single page app and a separate backend gives me.

                                                  1. 1

                                                    I love the flexibility having a single page app and a separate backend gives me.

                                                    In a previous life, I did some web development (never as my primary job, but I had to write a web-based frontend to a bigger project because there was no one else to do it). I’m sure I didn’t invent the concept, but the app had a generic JSON-RPC interface and the web app was simply a JSON-RPC client running in the browser.

                                                    Made testing much simpler, and since the app had to be accessible to a lot of different things (not just browsers), the universal RPC interface really helped.

                                                    (This was long, long ago. I left that job in…2009? 2010? Long before WebAssembly was anything more than a “wouldn’t it be neat if…”.)

                                                    1. 2

                                                      I’m sure I didn’t invent the concept, but the app had a generic JSON-RPC interface and the web app was simply a JSON-RPC client running in the browser.

                                                      Yeah, that’s the idea with pump.io too, but you were 2 years ahead of that. :-)

                                                      Mastodon is pretty much that too – so much so that Pleroma can just implement the API and run the Mastodon frontend as an alternative frontend.

                                                  1. 1

                                                    A bit orthogonal but still related to the overall theme: are there enough performance/portability benefits of JITs to continue running server applications targeting bytecode platforms? JVM was originally built for safely running web applications, and the CLR seems to exist to allow for portability across the wide range of hardware running Windows.

                                                    Are fancy VMs and tiered JITs necessary in a world where we can cross-compile to most platforms we’d want to run on? Languages/run times like Go and Haskell have backends that target a wide range of architectures, and there’s no need get intimately familiar with things like the JVM instruction set and how to write “JIT friendly code”.

                                                    1. 2

                                                      IBM i (nee OS/400) has an interesting solution where software is delivered compiled for a virtual machine, then compiled from virtual machine bytecode to native code on installation. I would like to see that model expand to other platforms as well.

                                                      1. 2

                                                        OS/400 is just…so different in so many ways. So many really interesting ideas, but it’s very different from just about every other operating system out there.

                                                        I wish there were a way I could run it at home, just as a hobbyist.

                                                    1. 2

                                                      We must also be careful not to make the same fallacy in the other direction.

                                                      “It’s taboo to say group X is genetically inferior, but what if it’s true?”

                                                      “Sure, it’s possible, but the science is out on that because it’s incredibly difficult to eliminate all confounding variables. All the evidence we have so far says that if it’s true, the difference is minuscule and dwarfed by external factors and says nothing any specific individuals, if it’s true at all.”

                                                      “You’re just trying to be PC! Virtue signaling! Thought police!”

                                                      In other words, a lot of people mistake personal confirmation bias and ideas that go against the “moral fashion” as revolutionary, secretly correct, or “being open-minded”…this is in itself a “moral fashion,” simply with a different group of followers. And we certainly should be open-minded, and we certainly shouldn’t dismiss ideas out of hand based on what we would like to be true, but I’ve seen more than one person fall into the exact trap simply in the other direction.

                                                      1. 1

                                                        Is it just me or is that blog post 4 years old and the link to the game itself no longer operable?

                                                        I’d like to play FTL too, but I can’t find a link anywhere to the web version.

                                                        1. 1

                                                          Yes, the post is from 2014 as indicated by the submitted title…

                                                          The link might have changed but you can still play it on humble bundle, here’s a screenshot with FTL running and the URL visible: https://bsd.network/system/media_attachments/files/000/011/872/original/29d97af524763cf8.png

                                                        1. 2

                                                          If you haven’t read Consider the Lobster from David Foster Wallace (RIP), you should.