1.  

    Having a shadow prod seems like a great idea.

    1.  

      I used Pocket for a long time, mostly because cellular network don’t work in subway in our city. Unfortunately, latest versions of it, at least on iOS, are unusable: one wrong swipe and it switches to page flipping and back (this can’t be turned off) and usually it downloads article lazily, when I first open it, making whole “offline” feature useless.

      Now I usually send links to myself in Telegram and view in regular browsers, mostly in “reading mode” because lots of articles has css making them unreadable both on desktop and mobile. Btw, Telegram has Pocket-like “content striping” functionality (and offline too), but only for some websites.

      Also, what frustrated in Pocket that it tended to remove code examples from websites, almost always. Seems that it even removed simple <pre> blocks. And Mathjax is very popular thing, and of course it didn’t work in Pocket (but formulas were visible in raw TeX format).

      1.  

        Yeah, the iOS version pf Pocket is a bit frustrating only because it’s so tantalizingly close to perfect that the gaps drive me nuts, especially, since the Android version doesn’t have the same issues. The most notable one for me, which you didn’t mention, is that sharing is a blocking operation on iOS but not on Android. Like you, I mostly use it on the subway.

      1. 8

        Personally I trust Russ Cox’s judgement… though I could see how people who worked on ‘dep’ would be furious. Go has a reputation for taking community direction with a grain of salt. The go team certainly is not afraid to do unpopular things in the goal of simplicity.

        1. 6

          I am reminded of this comment from Russ, which I think explains rather a lot: https://news.ycombinator.com/item?id=4535977

            1.  

              vgo is certainly different than dep, and in some ways it’s simpler, but in other ways it pushes a lot more complexity on the user. I think on balance it’s got to be a wash, at least for now.

              1.  

                What are the complexities pushed onto the users?

            1. 2

              this is an extremely loose definition of computer

              1. 2

                it is just bad editorialising. the real summary is just that most common mathematical models of neurons are generally not complex enough to model biology. (or even interesting behaviours, as any LSTM fan will hasten to observe)

                as an aside, this is yet another reason why I like evolutionary ANNs more than typical workflows - this sort of detailed sub-structure can and does evolve without intervention.

                1.  

                  I don’t think we know enough to conclusively say that yet. Structure and emergent complexity can often arise in simplistic systems. There’s a very good book about this called “Think Complexity” which is basically a small primer on complexity theory. Basically though sometimes similar levels of complexity arise in systems, even when the agents themselves are vastly more complex. I’m not saying you’re wrong, you could very well be right. I am saying we don’t have the theoretical framework to say you are conclusively right either.

                2. 1

                  Yeah, it’s more like a gate.

                  1.  

                    Not really, though. The author is explicitly asserting that each neuron is not a simple, linear gate, but rather it’s capable of performing multiple different non-linear functions whose behavior is capable of being complexly self-modulated.

                1. 2

                  The Operation Transform approach from Wave did end up getting used for Google Docs, which does have hundreds of millions of users.

                  1. 2

                    It’s good to see FB finally do the right thing here.

                    1. 2

                      APIs are useful even when you have full access to the underlying source code!

                      But being able to read existing code is actually a more valuable skill than being able to write greenfield code. Incredibly, this is not what engineers get tested for during interviews.

                      1. 3

                        I find it interesting that he starts with Google as an example.

                        If I had to name a company which has a product that is relatively simple in technical terms a search engine would certainly not be on top of my list. It seems relatively obvious to me that creating a good search engine is a tough achievement. Sure, creating some kind of search engine is probably easy - but then you end up with another Bing, not another Google.

                        1. 3

                          I’m sure Bing has well over a thousand people working on it too. I think it’s a respectable effort – it must be the second best search engine AFAICT.

                          FWIW I joined Google when it had around 3,000 employees, in early 2005. So this was 6 months after GMail came out, but before Google Maps came out, so Google was still a search engine.

                          I remember my former coworkers asking why the company was so damn big. They thought it should be like 50 engineers and 50 non-technical people. It was just a website with a box, so how hard can it be?

                          I don’t think their reaction was stupid, as I think pretty much everybody thought that at the time. Certainly it was a shock to see how much technology there was behind the scenes.

                          1. 2

                            Bing is actually quite good; it’s probably only about 3-4 years behind Google & you’ll recall that Google was still pretty damn good 4 years ago. DDG may be a better example of an 80% search engine ;-p

                          1. 9

                            I recently told my boss I could rewrite 80% of our project from scratch in a few months, with two caveats.

                            1. I choose which 80% of the features
                            2. I’m not making any promises about the other 20%
                            1. 4

                              Is that really helpful at all?

                              1. 1

                                Nope. He and I both knew that the ugly 20% that I would exclude is actually indispensable from the customers’ perspective. We were talking about our ongoing efforts to modernize the product, and I brought it up to illustrate the same point that this blogger does.

                            1. 6

                              #1 is not true on Macs, which all come with Python installed by default.

                              1. 2

                                As well as Ruby.

                              1. 3

                                I don’t seem to be able to reply there, so I’ll just say that there is a minimal BBC BASIC-only environment available for the Raspberry Pi courtesy of the RISC OS people here.

                                1. 1

                                  Hasn’t it been discontinued?

                                  1. 1

                                    The card has, but the zip file is still there if you want to make your own SD card.

                                  1. 2

                                    This is a hoax: that will show a dialog, that says it is a hoax. A hint that this is a hoax is already in the URL - 1st of April 2013.

                                  1. 3

                                    He’s right. My desk right now has a huge tower next to my monitor and it would be rad if i could go back to the old configuration of my monitor sitting on top a desktop computer.

                                    1. 6

                                      I’ve got one of these tiny fan-less systems as desktop. You can screw them to the back of the monitor. Or simply have it lay on the back of the desk somewhere. Works great for me, and no big desktop needed.

                                      (Mine happens to be a zbox, but there are more brands)

                                      1. 1

                                        that’s sweet, i’ve always wanted to set one of those up with a raspberry pi

                                      2. 1

                                        Surely you don’t still have a CRT?

                                        1. 1

                                          no but the stand that comes with my monitor isn’t tall enough and it seems like most monitor stands aren’t

                                      1. 7

                                        Wow, this is an excellent description of the problems. Interestingly, Google Maps struggled with all the same technical challenges (although not the political ones) and it took a concerted effort from dozens of people for years to address them. This stuff is really hard work even under the best of conditions!

                                        1. 18

                                          Correctness is not why I prefer static types; I find code with static types much easier to read.

                                          1. 11

                                            I’m going through an episode of this right now. I’ve been hacking on a popular package manager written in Ruby. I love the app, its ecosystem, and its governance and consider it to be one of the most successful software projects written in Ruby and one of the most successful open source projects for its target platform. You’ve probably guessed what it is by now.

                                            Ruby wasn’t my first language (PHP) or my second (Java) or my third (Smalltalk). However, Ruby was what I used outside of work for everything for about five years between when I stopped doing PHP for work and started doing… XSL, HTML, and JavaScript. While I don’t know Rails very well because my tasks with it were rarely web-oriented, I do know Ruby pretty well.

                                            Or at least did.

                                            You see, I got into Scala at the end of 2013 when I transferred departments temporarily and then eventually permanently. To my Ruby mind, Scala was the marriage of Java and Ruby with all of that Scheme goodness I’d enjoyed in college after learning Smalltalk.

                                            So, for the last 4+ years, my brain has been Scala. Sure, I’ve used Ruby here and there, but the tracing skills atrophied as my needs for debugging Ruby dried up. I’ve gotten really used to debugging with IntelliJ, using code completions, not needing to keep a documentation browser tab open all of the time, etc.

                                            These days, just tracing down what’s coming from where in Ruby is… a slog.

                                            I feel like a lot of the Ruby code I encounter works on assumptions and not assurances. It makes me uncomfortable now. These days, I’m doing Scala and Rust at work. To encode those assurances I fear would tremendously slow down the execution of the interpreted Ruby code and greatly reduce the simplicity therein by introducing far more repeated incantation, the kind of complexity handled at compile time in compiled languages.

                                            1. 7

                                              So weird that you’re saying this, because in another post ( http://www.drmaciver.com/2016/07/it-might-be-worth-learning-an-ml-family-language/ ), MacIver says:

                                              I’ve been noticing something recently when teaching Python programmers to use Hypothesis that has made me reconsider somewhat.

                                              That skill is this: Keeping track of what the type of the value in a variable is.

                                              In particular this seems to come up when the types are related but distinct.

                                              … this is by far the second most common basic usage error people make with it….

                                              … it’s definitely a common pattern. It also appears to be almost entirely absent from people who have used Haskell (and presumably other ML-family languages – any statically typed language with type-inference and a bias towards functional programming really)

                                              … in an ML family language, where the types are static but inferred, you are constantly playing a learning game with the compiler as your teacher (literally a typing tutor): Whenever you get this wrong, the compiler tells you immediately that you’ve done so and localises it to the place where you’ve made the mistake.

                                              This is probably a game worth playing.

                                              1. 3

                                                To me, this is the game played when not using an IDE with completions! To each their own – some folks prefer to memorize methods or keep documentation open – but completions allow me to work faster and not have to keep as much in my head from session to session.

                                            2. 9

                                              Yes, types actually communicate a great deal about the intentions and expected inputs and outputs of functions. If a function returns a Weight, that is a lot different than something returning a Velocity and might cause you to question the name of the function “GetVelocity”.

                                              1. 7

                                                Which is also an important part of correctness in the maintenance phase: the most expensive phase for both defects and changes.

                                              1. 1

                                                Finally, a DSL that’s trying to solve a real problem.

                                                1. 2

                                                  isn’t that most DSLs?

                                                  1. 1

                                                    Another one you mean? There are other ones.

                                                    1. 1

                                                      Oh, I didn’t know about those!

                                                      1. 2

                                                        Thing to remember is there’s several kinds of DSL’s. One kind that will often be unnecessary or questionable is an external DSL designed to aid a language that doesnt itself have DSL’s. These are like a combo of configuration files and libraries. However, the people using languages like LISP or Red designed to do DSL’s as easily as libraries will have a lot of useful ones.

                                                        The benefit of a good, embedded DSL is that it just lets you express the solution more easily. Most libraries you find useful could probably be turned into DSL’s. It’s just a matter of whether a shift in language style is justified. GUI, web, and database programming probably benefited most from syntax/style changes DSL’s give, including 4GL’s that are DSL-like.

                                                  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. 6

                                                        I wish the browser wars meant we got some more variety rather than more of the same. We are getting boxed in between two vendors (three if you count webkit/safari).

                                                        While I understand everyone wants their browser to be snappy, and speed perception drives user adoption, I have other priorities.

                                                        • I’d like the browser to help me with usability using larger fonts or disable some effects (gradients and low contrast are the new blink).
                                                        • Videos sometimes dont play at all, or have choppy sound. But the native video players in my system can play the same stream just fine. Why can’t I just outsource playback to the OS?
                                                        • input handling in the browser always defers to the web page. Sometimes I just want to scroll the page or paste on an input field - but the webpage defined some bindings that prevent me from doing it. I tried to hack around this with some webkitgtk code, but even then I was not 100% successful (lets face it I want normal mode in my browser)

                                                        I’m savvy enough to have a long list of hacks to do some of this stuff. But it seems to be getting harder to do it. I consider Firefox to be the most configurable of the two, but each release breaks something or adds some annoyance that breaks something else. Currently I’m seriously pondering switching from firefox to chromium because alsa does not work with the new sandbox.

                                                        The wide scope of browser APIs means they are more like full operating systems than single applications. In fact I think my laptop lacks the disk/ram to build chrome from source. Webkit is likely the most hackable of the bunch, but then again I have no experience with CEF. It seems likely that the major browsers will continue to converge until they become more or less the same, unless some other player steps up.

                                                        1. 10

                                                          Firefox is introducing support for decentralized protocols in FF 59. The white-listed protocols are:

                                                          • Dat Project (dat://)
                                                          • IPFS (dweb:// ipfs:// ipns://)
                                                          • Secure Scuttlebutt (ssb://)

                                                          I think that’s moving things in an interesting direction as opposed to doing more of the same.

                                                          1. 7

                                                            Hey! I made that patch! :-D

                                                            so basically the explanation is simple. There is a whitelist of protocols you can have your WebExtension take over.

                                                            If the protocol you want to control is not on that whitelist such as an hypothetical “catgifs:” protocol, you need to prefix it like: “web+catgifs” or “ext+catgifs” depending if it will be used from the Add-on or by redirection to another Web page. This makes it inconvenient to use with lots of decentralization protocols because in many other clients we are already using urls such as “ssb:” and “dat:” (eg, check out beaker browser). In essence this allows us to implement many new cool decentralization features as add-ons now that we can take over protocols, so, you could be in Firefox browsing the normal web and suddenly see a “dat:” link, normally you’d need to switch clients to a dat enabled app, now, you can have an add-on display that content in the current user-agent you’re using.

                                                            Still, there is another feature that we need before we can start really implementing decentralization protocols as pure WebExtensions, we need both TCP and UDP APIs like we had in Firefox OS (as an example, Scuttlebutt uses UDP to find peers in LAN and its own muxrpc TCP protocol to exchange data, DAT also uses UDP/TCP instead of HTTP).

                                                            I have been building little experiments in Firefox for interfacing with Scuttlebutt which can be seen at:

                                                            https://viewer.scuttlebot.io/%25csKtp9VmxTjJoKy17O7GA6%2F3S8

                                                            https://viewer.scuttlebot.io/%25uBev5w8m8iZGVbQDo9fpr%2BCXLB

                                                            I hope to start a conversation in the add-ons list about TCP and UDP APIs for WebExtensions soon :-)

                                                            1. 1

                                                              Fantastic work! :)

                                                          2. 2

                                                            Well, on Windows you have a 3rd option: IE.

                                                          1. 7

                                                            Other suggestions: Kathleen Booth wrote the first assembly language. Glenda Schroeder wrote the first the command-line shell.

                                                            1. 5

                                                              Missing Ingrid Daubechies, who invented wavelet compression (used for JPEG).

                                                              1. 3

                                                                Do you mean JPEG2000? JPEG doesn’t use wavelet compression.

                                                                1. 1

                                                                  Yes, JPEG 2000. Isn’t that just the most recent revision of JPEG though?

                                                                  1. 3

                                                                    It’s a new standard.

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

                                                                    As of 2018, there are very few digital cameras that encode photos in the JPEG 2000 format, and many applications for viewing and editing photos still do not support it.[citation needed]

                                                                    As a keen amateur photographer I can say that many photographers capture images in RAW format, which is postprocessed and output as a JPEG (or a print). Other output options are TIFF… and that’s basically it.

                                                                    Mobile phones output JPEG, or in Apple’s case HEIF in newer phone software. I’m not sure if the underlying technology in HEIF is related to JPEG 2000.

                                                                    JPEG 2000 offers a lot of potential upsides but faces the classic chicken-and-egg problem of disrupting deeply entrenched formats.

                                                                    1. 3

                                                                      HEIF is a container format. Its big selling point is that it specifies how to use H.264 and H.265 encodings for image sequences: this makes it very efficient for those bursts of photos that iPhones do now. H.265 does also beat JPEG for single images but less dramatically so.

                                                                      A HEIF file can also contain audio and text synced to particular images in a sequence, which makes it nice for animations.

                                                                      HEIF itself is codec agnostic. Anything that’s compatible with the ISO Base Media File Format can go in it. So you could put JPEG or JPEG2000 images in a HEIF file. People have done this to store thumbnails or preview images as JPEGs.

                                                                    2. 2

                                                                      It’s a different standard, not used much in the wild.