1. 2

    The page seems to have hijacked scrolling, or otherwise broken it really badly. My up/down keys seem to highlight different paragraphs of text, whilst the usual scroll commands don’t seem to do anything, nor do PageUp/Down.

    In fact, it seems to have taken over all key presses, breaking my keyboard shortcuts (I found this out when I gave up trying to read it, and found that my close-page shortcut stopped working too)

    1. 2

      Yeah, that is what notion.so does, I also find it quite annoying. On the other hand, it is really superior platform for writing blogs.

    1. 2

      Wow, that’s really great. I am thinking about some hackable smartwatches for some time now.

      1. 2

        Nice! Do you have any idea how slow you are compared to the standard Self VM or the same code on Python?

        Also does RPython give you multiple OS threads or goes it have a GIL like CPython?

        I found your notes on general differences between tinySelf and the original Self - they look very much like changes I’ve thought about before which probably means they’re genuine pain points in the current Self syntax.

        When you talk about using ; as a cascade operator do you mean like in Smalltalk 80, ie

        a b: 2; c: 4.           ==>.       a b: 2.  a c: 4.
        

        or a true cascade ie

        a b: 2; c: 4.           ==>.       (a b: 2) c: 4.
        

        Which is what Tim Budd did for his Little Smalltalk and is IMO much better ;)

        1. 1

          Nice! Do you have any idea how slow you are compared to the standard Self VM or the same code on Python?

          Right now still too much slow. This takes ~700ms: simple_while_benchmark.self (where whileTrue is not a primitive and is defined here: stdlib.tself). Both Self and Python was significantly faster on my computer, if I remember it correctly, something around 20ms or less.

          Also does RPython give you multiple OS threads or goes it have a GIL like CPython?

          It should be without GIL, as it transcompiles to <backend> (currently C). I have no idea how threads work. They should, but I wasn’t using them yet and instead implemented my own light-weight multitasking.

          When you talk about using ; as a cascade operator do you mean like in Smalltalk 80, ie

          Yeah, like in Smalltalk. We actually had this conversation in Self maillist a few years ago and I remembered it when I was writing the parser, but when I thought about it, I use first pattern much more often than second. I think it would be best to support both with different syntax, but I didn’t yet thought of any character that would be useful and meaningful.

        1. 1

          There is literally nothing new about this. There is even a book about them and linters check them for years now: The Little Book of Python Anti-Patterns

          1. 1

            @colin - what about this release in particular is especially of interest to the lobsters community?

            1. 5

              I for one work in Linux, Windows, and macOS, and I’m definitely interested in learning about Visual Studio as much as Xcode or that Vala post.

              1. 1

                I do too! And so am I! I was sincerely wondering if there was anything in particular that made this release special or noteworthy.

                This wasn’t a “Windows SUX keep yer crap off mah lawn!” comment :)

                1. 2

                  From what I hear the performance gains are significant. Universal search is improved. More C# refactorings. F# 4.6 support for Visual Studio.

                  1. 1

                    Got it! Sorry, I’m so used to anti-Microsoft attitudes I’m practically reflexive at this point.

                    For my two cents, the speed improvements and collaborative editing both promise to be major boons. I am thankfully less impacted by the C++ improvements these days, but colleagues of mine are psyched about those for cross-plat porting ease, too.

                    1. 1

                      Nah. They serve their customers very well. There are a LOT of banks and other businesses who don’t need to operate “at scale” who are very well served by the ecosystem.

                      Are you mostly doing C# these days? Curious why you’re not so much impacted by the C++ improvements.

                      FWIW I think C# is a really nice language. It’s like Java with some of the Gosling induced neuroses removed :)

                      (To be fair most of which have been fixed in Java 8+)

                      1. 2

                        I’m actually mostly doing Kotlin these days; even the C# stuff I do is mostly maintenance. Kotlin is almost as good as C#, so that’s okay, but I honestly still miss the .NET ecosystem.

                        I’m not currently doing C++ on any platform, at least for awhile, so it’s not anything VS-specific.

                        1. 1

                          Very interesting! Does Kotlin use the underlying Java ecosystem for library support and the like? And is this for mobile or multi-presentation?

                          (If I’m asking too many questions feel free to tell me to buzz off :)

                          I know almost nothing about the Kotlin ecosystem.

                          1. 2

                            I definitely don’t mind.

                            Kotlin has three variants: one targeting the JVM, which is what people almost always mean when they say they use Kotlin; a version targeting JavaScript; and a version doing native compilation (currently in beta). The JVM variant leverages the underlying Java ecosystem heavily as a main selling point: it’s designed to be easy to consume Java from Kotlin and vice-versa, meaning that you can have your cake and eat it too. (This feels very different from, say, calling F# code from C#, which isn’t hard, but definitely leaks through pretty badly. It feels more like VB.NET/C# interop.)

                            In practice, this works pretty well: Kotlin libraries get null-safety, coroutines, a better collections library, and so on, while still getting access to the full Java ecosystem, and it’s quite easy to expose Kotlin back to Java without issue. (A great example of this is my favorite lightweight web server for the JVM, Javalin, which is written in a mix of Java and Kotlin and feels at home in either language.) It’s also becoming the official language for Android development, as Google’s now released official Android libs that take advantage of Kotlin-specific features, and begun using it for some internal work they’re doing.

                            In our case, we’re using it as a safer and more expressive language than Java for writing server apps. Kotlin adds null safety, structs, covariant and contravariant generics, named parameters, and a bunch of other stuff you’d recognize from C#, plus adds some of its own stuff, like type-safe constructor DSLs and easy-to-sue immutable collections.

                            1. 1

                              Very cool! It sounds like Kotlin is scratching the itch a lot of people hoped Scala would, but then discovered that, to use the word of a founder I once met, Scala is “A very sharp tool.”

                              Thanks for the explanation. Now I’m curious enough to go do some digging :)

                              1. 1

                                Yep. One complaint I’m very used to hearing from Scala peeps is, “but Scala already did this!” Which is almost always true; they’re simply leaving out the adjective, “poorly.” Or, if you prefer my extremely sarcastic summary: “Scala’s my go-to when I want the compile times of C++, paired with the memory footprint of Java and the conceptual simplicity of Haskell.”

                                1. 1

                                  “Scala’s my go-to when I want the compile times of C++, paired with the memory footprint of Java and the conceptual simplicity of Haskell.”

                                  THAT seems to be the crux of it - Scala tried to do so much and embody so many different and in some cases fairly arcane concepts that many of the war stories I heard were people getting themselves into deeper water than they’d intended when tried and true ‘boring’ techniques probably would have done the job.

                                  1. 1

                                    If you try Kotlin and find you like it, but think that everything’s just a bit too damn simple, feel free to take a look at Arrow, which abuses the living crap out of Kotlin annotations to bring you full-blown monads, up to and including Haskell’s actual IO monad. It’s…a thing.

                                    Thankfully, the Kotlin ecosystem in general trends pretty hard to practicality and simplicity. Arrow gets used (we’re using it where I work for some things), but it’s actually a pretty atypical Kotlin library.

                                    1. 1

                                      I will NEVER look at a programming language and say “This is too damn simple” :)

                                      I’m annoyed with the Python community at the moment for complexifying the language by degree to save a few lines of code here and there.

                2. 2

                  Everything?

                  1. 1

                    Why?

                    1. 1

                      Because it’s an awesome and popular tool.

                      1. 2

                        Yeah many people agree that whether you love Microsoft or Windows or you don’t - the Visual Studio suite is and has been among the best and most complete developer environments for decades at this point.

                        I was using it to write C++ (MFC for those who remember - or can’t forget :) for a Big Finance firm in the 90s and it was quite an impressive piece of software back then.

                        1. 1

                          I mean then we can have new posts about every release of every popular tool. Sublime, Vim, Emacs, PyCharm, .. whatever. I see no point of getting all this spam, when I can just simply subscribe to newsletter / git from my favorite popular tool.

                  1. 5

                    “Bicycle for the mind” was not a promise. It was a marketing phrase to sell computers.

                    1. 5
                      1. 1
                        1. 1

                          Hah, nice.

                        2. 5

                          It is none the less an evocative metaphor, and not entirely bullshit either: early personal computers were much more like bicycles. Bicycles require your participation: you can’t just sit there, you have to pedal. Once you have obtained one, you don’t need to keep buying fuel, just occasional lubricant. Bicycle components are largely standardized and “user-serviceable” with a handful of standard tools. I have put many good bikes together from quality used parts scrounged from local shops. It’s fairly easy to learn how to build and maintain bicycles, especially relative to automobiles. If you’re attentive, the machine itself will teach you.

                          But, bicycles are a relatively mature technology that has evolved through the 19th and 20th centuries. For example, the now stereotypical diamond frame was originally called the “safety” bicycle, as it didn’t pitch the rider headfirst as easily as the “ordinary” high-wheelers. And when thinking of bicycles as urban infrastructure, especially in the US, one must face the history of political influence and propaganda wielded by the automobile (and petroleum) industry.

                          I think that there are more interesting parallels between transportation and computing than will fit in a blog post, let alone a Lobsters comment.

                          1. 14

                            I feel that the near-monthly article about the “demise” of RSS misses one crucial point: while the perceived fraction of people using RSS may have gone down over the last decade, it is largely because newer Internet users are more on board with curated news feeds, and RSS users fragmented towards alternatives to Google reader, making them more difficult to see. Virtually all of the GReader users I knew of at the time of shutdown still use Feedly, NewsBlur, or Innoreader.

                            1. 9

                              I agree. RSS is not dead, but those who think that “RSS didn’t take over the entire internet, so it must be dead” are wrong. It’s still a crucial part of podcasts, and many major blog platforms still support it. There are many, many mobile and desktop RSS clients.

                              But yea, this recurring meme of “RIP RSS” is getting really tiresome.

                              1. 1

                                Innoreader ,o/

                              1. 3

                                Still on my language tinySelf. Since last time I’ve posted here I’ve implemented tail call optimization and all kind of stuff, so it is possible to run basic scripts. It is still kind of fragile and impractical, but I am slowly getting there. Yesterday, I’ve measured the speed and it is really slow, but that is probably ok, since there is no optimizations yet.

                                I’ve done a lot of work around, like created a series of article in Czech language about the interpreter, which should be fun, because there is not really anything like that on the Czech net. I’ve also written small series of articles about Self and it should be finished soon, so that was fun too.

                                  1. 1

                                    I think they would laugh at my measly gigabytes.

                                  1. 2

                                    As always, my full list is here: http://kitakitsune.org/raw/doctene_knihy.txt

                                    This year is the first time I’ve done writeup on books I liked in english: Books that changed my point of view.

                                    I would definitely recommend:

                                    Best book this year so far was definitely Mastery.

                                    1. 6

                                      Books I enjoyed in 2018 and think are worth reading include:

                                      • [fiction] Harry Potter and the Methods of Rationality; basically the Harry Potter universe except Harry is taught the scientific method from a young age, which leads him to approach magic in a completely different way. I never thought I’d like any fan fiction, but this was really amazing!
                                      • [non-fiction] Sync: The Emerging Science of Spontaneous Order; this book examines the phenomenon of synchronisation, looking at examples from nature and from man-made machines. It’s very accessible and a fairly easy read, while going into enough detail to be thought provoking.
                                      • [fiction] Old Man and the Sea; I think this is one of Hemmingway’s shortest stories (which is why I read it). I found the book very powerful and worth the time.
                                      • [fiction] The Kite Runner; Another very popular book about somebody who grows up in 80’s Afganistan, sees the transition from it being a peaceful country to it being a war torn one, and then moves to the US as a refugee. It was probably one of the most moving books I’ve ever read, and I want to read ‘A thousand splendid suns’, which is by the same author, soon.
                                      • [non-fiction] Whole Earth Discipline: An Ecopragmatist Manifesto; A rather opinionated take on climate change and politics. Makes very strong arguments for technological solutions to climate change such as nuclear power and GMO’s, though it is controversial in the field for precisely this reason. It’s quite long, but I really enjoyed it.
                                      1. 2

                                        Loved the Kite Runner, can indeed recommend that you read more of the same author. It does get a bit “same, same” after a while. So I also recommend reading a few other authors before you come back.

                                        The Old Man and the Sea, funnily enough, didn’t really fascinate me. Might have to read it again.

                                        Your last book reminds me of “The Wizard and the Prophets”, which I haven’t read, but was paraphrased in the Freakanomics podcast episode “Two (Totally Opposite) Ways to Save the Planet (Ep. 346)”. Found it thought-provoking and irritating – but in a good way. Quote from the podcast description: “The environmentalists say we’re doomed if we don’t drastically reduce consumption. The technologists say that human ingenuity can solve just about any problem.”

                                        1. 2

                                          +1 for Harry Potter and the Methods of Rationality. That and the concept of rationality from Yudkowsky changed the way how I look at the world.

                                          1. 2

                                            I put off reading harry potter and the methods of rationality when I first heard of it because of it being sold as fanfiction, but it might be my favorite book.

                                            1. 1

                                              Absolutely, I can’t recommend it enough!

                                          1. 9

                                            I read Neal Stephenson’s Anathem and loved it. Blew my mind. It did take a while to get going, though. But totally worth it.

                                            1. 2

                                              Anathem is really wonderful, I would suggest it too.

                                            1. 3

                                              Does anyone here use / love D? I’ve not taken the time to learn it, but from what I’ve seen it seems like I might enjoy it more than go but still less than Rust.

                                              1. 2

                                                I like it. Imho it is decent language with nice features.

                                                1. 2

                                                  I really love it. I blogged about my attempt to really learn it in earnest:

                                                  http://jordi.inversethought.com/blog/advent-of-d/

                                                1. 3

                                                  Support for loops in my toy programming language tinySelf.

                                                  I am kind of stuck on this one, because it is “bytecode and stack” programming language, and cycles are just messages to block (anonymous “lambda” object closure) repeated as long as the block is true or false.

                                                  [a = b] whileTrue: [do something]
                                                  

                                                  “Primitive” methods (implemented in “native code”) can’t get result of the block evaluation, and there is no support for jumps in bytecode (also I consider this quite inelegant). And implementation with recursion will eat up all stack without tail call optimization, which is something I want to avoid right now. So, I am not sure how to implement it. I am kind of inclined to use forth-like instruction stack, which will have precedence over bytecode-crunching-loop, so primitive would be able to put there instructions like “get result of the evaluation of this block, evaluate block with body and then call again this primitive”, but I did not yet decided whether this is what I want.

                                                  So, my weekend plans are to think about this, maybe draw few diagrams, or try few approaches and decide what suits me best.

                                                  Other than that, I would also like to do some writing, I have some stories and blogs which I would like to finish.

                                                  1. 1

                                                    Oh, interesting puzzle. Would it be hard to implement TCO? It seems like the right answer.

                                                    1. 3

                                                      Continue to crunch issues in my pet language tinySelf. I have to implement exceptions and exception handling.

                                                        1. 1

                                                          CherryTree

                                                          +1 for CherryTree

                                                        1. 7

                                                          VS Code has way to much telemetry built in for my liking. Also, there’s pretty much no way to turn it off completely either.

                                                          1. 8

                                                            You shoud seriously look at the napoleon / google doc: https://sphinxcontrib-napoleon.readthedocs.io/en/latest/

                                                            This is already implemented and supported standard.

                                                            1. 3

                                                              Yes indeed. For those unfamiliar, here are (from the link) examples of the two docstring styles that Napoleon (a Sphinx extension) parses and renders. PyCharm, too, parses Numpy and Google docstrings and uses the information for tooltips, static analysis, etc.

                                                              Google style:

                                                                  """Summary line.
                                                              
                                                                  Extended description of function.
                                                              
                                                                  Args:
                                                                      arg1 (int): Description of arg1
                                                                      arg2 (str): Description of arg2
                                                              
                                                                  Returns:
                                                                      bool: Description of return value
                                                              
                                                                  """
                                                                  return True
                                                              

                                                              NumPy style:

                                                                  """Summary line.
                                                              
                                                                  Extended description of function.
                                                              
                                                                  Parameters
                                                                  ----------
                                                                  arg1 : int
                                                                      Description of arg1
                                                                  arg2 : str
                                                                      Description of arg2
                                                              
                                                                  Returns
                                                                  -------
                                                                  bool
                                                                      Description of return value
                                                              
                                                                  """
                                                                  return True
                                                              
                                                              1. 2

                                                                Hmm, Google’s style + napoleon extension does seem quite good. I wonder if I should update my style guide. I suggested that you should just bite the bullet and use Sphinx style there due to the doc auto-gen benefits, but seems like this is best of both worlds.

                                                                1. 2

                                                                  Nice style guide! Changing it to recommend Numpy and/or Google style over Sphinx style gets a big +1 from me, it’s what I myself teach students. We’re all data analysts/statisticians (‘data scientists’), so in our case we use Numpy style, which is also used by Scipy, Pandas, and Scikit-learn (and certainly others, too).

                                                                  1. 1

                                                                    I am using Google’s style for quite few years and I have to say, that I didn’t yet seen anything better. So yes from me.