https://futureofcoding.org/ logo
Docs
Join the conversationJoin Slack
Channels
administrivia
announcements
bot-dark-forest
devlog-together
in-alberta
in-boston
in-germany
in-israel
in-london
in-nyc
in-ontario
in-seattle
in-sf
in-socal
introduce-yourself
linking-together
of-end-user-programming
of-functional-programming
of-graphics
of-logic-programming
of-music
present-company
random-encounters
reading-together
share-your-work
thinking-together
two-minute-week
wormholes
Powered by Linen
linking-together
  • f

    Felix Kohlgrüber

    05/08/2019, 12:48 PM
    Seems like most people aren't seeing the "bigger picture" and therefore just achieve local maxima. At Google IO yesterday they showed that their new smart speaker thing can pause music when you make a certain gesture (

    https://youtu.be/lyRPyRKHO8M?t=4604▾

    ). In the video, the woman gets called on her smartphone and then uses a gesture to pause the music. Probably better than a voice command, but they won't get my applause until they either forward the call to the smart speaker or reduce music volume automatically when the smartphone gets called. It's 2019 and two devices used by the same person in the same room still can't cooperate on something like this. That's kind of embarrassing, isn't it? Anyway, the crowd seemed to love it...
    s
    • 2
    • 1
  • s

    Scott Anderson

    05/10/2019, 8:12 PM
    This article is an interesting overview https://www.nature.com/articles/d41586-018-05588-x
    👍 1
    j
    • 2
    • 2
  • s

    Scott Anderson

    05/15/2019, 5:03 PM
    https://www.gamasutra.com/view/news/342113/Designing_Baba_is_Yous_delightfully_innovative_rulewriting_system.php
    w
    • 2
    • 1
  • d

    Daniel Hines

    05/17/2019, 6:29 PM
    I have this book. I know I’m sounding like yet another entitled dev, but the main turnoff for TLA+ (for me anyway) is the editor.
    d
    • 2
    • 1
  • e

    Edward de Jong / Beads Project

    05/17/2019, 8:41 PM
    One of the features of some next-gen projects is to eliminate the need for techniques like TLA+ and UML. The concept is to make the specification the final code, and skip the implementation phase. Since TLA+ and UML do not produce a final product you have then the errors related to mapping those into executable code. In my own work i go from sketch, to data structure design, to executable spec which is the final product. I believe that is the shortest way to the goal.
    👍 1
    i
    • 2
    • 2
  • i

    ibdknox

    05/20/2019, 7:20 PM
    yeah, we ended up with explicit watches where you told us what you wanted
    • 1
    • 2
  • p

    pbiggar

    05/20/2019, 8:43 PM
    @ogadaki Good to know. Will prioritize that one.
    👍 1
    o
    • 2
    • 1
  • p

    pbiggar

    05/20/2019, 8:44 PM
    @ogadaki Basically, we struggled at the intersection of “how does this language actually work” and “can people understand this”. An example of the former was “what is the lifecycle of a HTTP request that touches a DB”, and of the latter “can we make
    if (x % 5 == 0)
    easy to read, understand, and edit”
    d
    • 2
    • 3
  • p

    pbiggar

    05/20/2019, 8:45 PM
    With the latter, @Peter van Hardenberg told us (paraphrased) “ive never felt so stupid when coding”, which is a strong indication that your language is on the wrong track 🙂
    😄 1
    p
    • 2
    • 1
  • e

    Edward de Jong / Beads Project

    05/21/2019, 6:36 AM
    I will remind people that the Luna people are going for a very hard target, which is having dual graphical + textual representation, freely convertible. Also, i added info on Jonathan Blow's Jai language, which i estimate will release in 2020. It is an extremely thorough implementation, designed for building games, and is already greatly superior to C++ IMHO in its current state. Of course we can only see videos at this point, but you can tell it is real, and coming.
    y
    s
    k
    • 4
    • 15
  • e

    Edward de Jong / Beads Project

    05/23/2019, 7:45 AM
    Unicode exemplifies the tyranny of committees staffed with people who don't care how much damage they do as they erect their perfectly hypercomplex edifice. It started out nice, hey, let's stop overloading code points in the 256 char range. They quickly add a bunch of characters and things are okay, but then they continue to add more and more obscure alphabets, then they go off the rails are add the "astral" set of characters beyond UTF16, and turn it into an icon database, which changes every year, sure to break on older operating systems. Unicode was not designed to be an art database, yet that is their current intention, with multiple flavors of coloration as they make it more and more ridiculously complicated. I wish they would stop, or at least only revise it once every 10 years like the census.
    👍 1
    d
    d
    • 3
    • 3
  • s

    Stefan

    05/23/2019, 3:56 PM
    Or you could see Unicode as a case study of how to build and maintain an international, cultural, technological building block that enables communication across cultures and deals with the challenges that come with it. Including complexities introduced when actively trying to deal with diversity and taking cultural bias out of a technology.
    ❤️ 1
    💯 8
    d
    e
    • 3
    • 2
  • s

    shalabh

    05/23/2019, 4:40 PM
    https://www.hillelwayne.com/post/alan-kay/
    👍 3
    d
    • 2
    • 4
  • s

    shalabh

    05/30/2019, 4:24 AM
    https://uxdesign.cc/introducing-mercury-os-f4de45a04289
    👍 8
    v
    w
    +2
    • 5
    • 7
  • s

    stevekrouse

    05/30/2019, 3:33 PM
    Really easy and fascinating study on internet voting in Estonia. As is often the case with our wacky community, I imagine the platform/medium that this paper is hosted on will be of equal or more interest to many of you then the content/message itself. It’s a way to collaboratively annotate papers. This paper has like a dozen or so comments all from the same guy, and I found them quite helpful https://fermatslibrary.com/s/security-analysis-of-the-estonian-internet-voting-system
    👍 1
    😎 1
    • 1
    • 1
  • s

    shalabh

    06/02/2019, 4:56 PM
    https://www.devever.net/~hl/objectworld Rethinking files In Unix, everything is a file. This is often viewed as a positive, but it's often a poor abstraction for many things. This discussion goes into some of the issues.
    ❤️ 2
    🤔 2
    m
    k
    • 3
    • 3
  • r

    robenkleene

    06/03/2019, 8:32 PM
    Apple just announced a new framework SwiftUI that uses a "declarative syntax", and includes features in Xcode that allow editing source code and seeing the user interface changes live (it's not clear to me yet whether that can be done while the application is running, or only with a non-interactive preview of the UI) https://developer.apple.com/xcode/swiftui/
    👍 3
    i
    s
    s
    • 4
    • 6
  • y

    yoz

    06/03/2019, 11:33 PM
    One of the things that hit me in the SwiftUI XCode demo (in the opening keynote, not PSOTU): at the very beginning, he clicks the rendered “Hello world” widget in the simulator panel; XCode focuses the editor panel and highlights the code for the widget instance in question. It’s blink-and-you’ll-miss-it fast, and the audience don’t react at all. I’d like to know: which existing web framework + IDE combos currently do this? Specifically: click a rendered component in a page (in a browser, or browser preview panel) and be taken to the code that instantiates that component?
    👍 4
    d
    i
    +6
    • 9
    • 20
  • g

    Garth Goldwater

    06/06/2019, 5:43 PM
    terminology bikeshedding: I find this view taken by tiddlywiki to be kind of charming, as I often find generic terms get overloaded with overlapping definitions and implications from other applications of the same word. any opinions?
    😀 3
    👍 6
    f
    • 2
    • 2
  • d

    Daniel Garcia

    06/10/2019, 7:02 AM
    Adding to @yoz earlier point, here is a full video of SwiftUI, it looks quite impressive https://developer.apple.com/videos/play/wwdc2019/204/
    s
    d
    +3
    • 6
    • 22
  • r

    robenkleene

    06/11/2019, 6:36 PM
    The just announced new Dropbox is potentially interesting to this group https://www.dropbox.com/features/new Mainly as an attempt to improve the file system.
    Quietly living inside file managers built by operating-system companies “served us well,” says Dropbox CEO and cofounder Drew Houston.
    👍 2
    d
    • 2
    • 4
  • y

    yoz

    06/11/2019, 6:54 PM
    A separate thread based on @Daniel Hines’s comment https://futureofcoding.slack.com/archives/C5U3SEW6A/p1560278279045900?thread_ts=1560278176.045100&cid=C5U3SEW6A I’ve thought about WinFS on and off for years, often hearing the same refrain from others who yearn for what WinFS might have been. And now I’m turning on it: if a filesystem-level database was that good an idea, we’d have it already. I’m being deliberately provocative here because I genuinely want to know what problems WinFS could have solved that 1. aren’t just as solvable at app/userspace level (sorry, I’m not an OS expert) 2. are based on what we know of WinFS’s actual API and capabilities, rather than capabilities of other databases that we wish a filesystem would have. (I’m also interested in apps using other databasey filesystem features, but it’s a slightly different discussion)
    👍 1
    d
    s
    +4
    • 7
    • 35
  • d

    Dan Stocker

    06/11/2019, 10:05 PM
    How would you try to get developers on board with a FoC solution (eg. VPL), that is turning into a product? Let's say the product can be shown to perform better from a technical point of view than its mainstream alternatives, integrates well with conventional code, and also has a kind of "coolness" quality to it. How and through what channels would you approach developers to try it / use it?
    k
    e
    j
    • 4
    • 4
  • g

    Garth Goldwater

    06/13/2019, 10:14 PM
    https://suhr.github.io/wcpl/intro.html additional info
    k
    f
    w
    • 4
    • 25
  • g

    Garth Goldwater

    06/13/2019, 10:18 PM
    apparently my favorite type of PL content is half-finished stuff from outsiders lol
    ❤️ 4
    f
    • 2
    • 4
  • g

    Garth Goldwater

    06/18/2019, 7:14 AM
    >> Enter TurboEditor. Because of this one simple little thing (not so little actually) that my friend found, we were able to decompile the entire CanDo program and figure out how it worked. Remember that important thing? Yes, that’s right, CanDo is actually written in itself and it could actually modify pieces that are currently executing. Let me clarify this just a little. One card could modify another card, then pull that card into focus. The actual card wasn’t currently executing, but the deck was. In fact, we came to find that CanDo was merely a facade. We also found that there was a very powerful object oriented, fully reentrant, self-modifying, programming language under that facade of a UI. In fact, this is how CanDo’s UI worked. Internally, it could take an element, decompile it, modify it and then recompile it right away and make it go live, immediately adding the updated functionality to a button or slider.
    While CanDo could modify itself, it never did this. Instead, it utilized a parent-child relationship. It always created a child sandbox for user-created decks. This sandbox area is where the user built new CanDo Decks. Using this sandbox approach, this is how CanDo built and displayed a preview of your deck’s window. The sandbox would then be saved to a deck file and then executed as necessary.
    f
    • 2
    • 1
  • w

    wtaysom

    06/19/2019, 5:17 AM
    YouTube recommended a video about Arrow Types to me.

    https://www.youtube.com/watch?v=McnKrV0aDjo▾

    😆 4
    j
    • 2
    • 1
  • d

    Dan Cook

    06/22/2019, 3:43 PM
    I think a lot of y'alls might like Matt Parker's stuff (aka standupmaths) on YouTube, if you're a math person at all
    g
    • 2
    • 1
  • s

    Stefan

    06/28/2019, 12:27 PM
    A young aspiring programmer asks you as an expert and mentor:
    "I want to understand the most important programming paradigms and learn about the broadest set of language features out there. What is the minimal set of programming languages I should look at? Popularity and how widely used these languages are doesn't matter, I just want the highest 🤯:🤓 ratio to maximize my learning."
    Here's what I think: • C — for a simple, pragmatic, influential, and still widely used procedural language and to understand memory management • Smalltalk — for a highly dynamic language and environment, message passing and the origins of OOP • Lisp — because you wouldn't take me seriously if I left it off such a list • Haskell — for a pure functional, strongly typed language with laziness and strong compiler support (error checking, synthesis, etc.) • Forth — for an even simpler, but still highly expressive, extensible, and dynamic language • Datalog — for logic programming and constraint solvers (or maybe Prolog instead?) • Erlang — for actor model and concurrent programming What would you respond?
    d
    e
    +7
    • 10
    • 14
  • s

    shalabh

    07/01/2019, 7:40 PM
    https://gist.github.com/halgari/f431b2d1094e4ec1e933969969489854 Blurb titled "What I want from a Type System".
    k
    m
    +2
    • 5
    • 16
Powered by Linen
Title
s

shalabh

07/01/2019, 7:40 PM
https://gist.github.com/halgari/f431b2d1094e4ec1e933969969489854 Blurb titled "What I want from a Type System".
k

Kartik Agaram

07/01/2019, 7:42 PM
I was reading this as well, felt related to the Dark thread on #feedback (https://futureofcoding.slack.com/archives/CCL5VVBAN/p1561573844118300) which has veered away from the OP somewhat.
s

shalabh

07/01/2019, 8:09 PM
One aspect I'm interested is in if any type systems encourage/require extensive 'column types'. What I mean is typically you have this
class Person:
   name: string
Now as soon as you deference
person.name
you've lost all context - you just have a string. Would be nice to have more meaning attached to the values themselves. You can kind of solve this by newtype/aliasing but it's very clunky and may require defining both a new type and the field with the same name.
👍 3
m

Miles Sabin

07/01/2019, 8:28 PM
The way that shapeless models records in Scala is to represent a field
name: SomeType
as an element of an
HList
with the type
Tagged[SomeType, "name"]
where the "name" is a literal type, ie. the singleton type of the String precisely equal to "name".
Is that what you're looking for, or are you after more structure?
s

Scott Anderson

07/01/2019, 10:10 PM
"2) Value types in structures would need to be nominal, not structural. I really don't care if I get a tuple of [Int32, String], I very rarely care what the machine level types are, what I really want is [ProductID, ProductName], what the underlying types are doesn't really matter to me." 😭
I think this is fine in certain applications and certain domains
but in other applications you absolutely need to care about the machine level types in order to hit performance or memory targets
k

Kartik Agaram

07/02/2019, 4:07 AM
Value types in structures would need to be nominal, not structural. I really don't care if I get a tuple of
[Int32, String]
, I very rarely care what the machine level types are, what I really want is
[ProductID, ProductName]
, what the underlying types are doesn't really matter to me.
The article is using nominal vs structural in a way that I can sympathize with but haven't seen before. Is
int32
a nominal type because you (often) can't cast it to a boolean? Or is it a structural type because you can use the same operations on it as
int64
? Our categories seem to break down at the event horizon of primitive types. Between this and Rich Hickey's recent critique [1], I feel like I'm seeing the word 'types' with new eyes in 2019. [1]

https://www.youtube.com/watch?v=YR5WdGrpoug▾

👏 2
s

shalabh

07/03/2019, 4:43 PM
Thanks @Miles Sabin - looks interesting, will check it out. The context I'm after is not just the name of the field and it's type, but also it's container type.
The tension between machine types and domain types hasn't been satisfactorily resolved in any language afaik. Do 'types' declare how bits are laid out in memory or do they declare what the domain meaning is? Without a good solution here, what we have is excessive domain model corruption to appease the machine layout. Starting with C, you had struct packing where you'd suffle fields in a perfectly readable struct just to make it efficient. Then you have the 'array of structs' vs 'structs of arrays' problem. This happens in databases too - the question of how much to normalize. There is absolutely no change to the domain data model across many implementation choices, yet the 'domain logic' code ends up being so tightly coupled to these decisions that switching it requires changing code all over the place. I think what the essay is saying that they want to work more with the domain types than memory layout types. Languages that I know of don't actually separate these two ideas - I wonder if there are any languages that do. E.g. if you define your domain types in a high level type system that is not tied to a specific memory layout. Then separately you define mappings between the domain types and machine types...
❤️ 1
s

Stefan

07/03/2019, 5:01 PM
@shalabh Sounds like you might want to look at what I just posted in #general: https://futureofcoding.slack.com/conversation/C5T9GPWFL/p1562167414128600
👍 1
k

Kartik Agaram

07/03/2019, 7:25 PM
@shalabh I like your categories better than 'nominal' and 'structural', which constantly slide past my brain. Arguably your requirement is met even by Java, using interfaces. Perhaps interfaces are just under-used? Part of the problem is that they make it too easy to exit them because their methods often operate on memory layout types. What if we required types within interfaces to only be other interfaces? Is this a well-known 'design pattern' or something? It isn't quite a Facade. http://wiki.c2.com/?CategoryStructuralPatterns
Just posted my question elsewhere: https://www.reddit.com/r/ProgrammingLanguages/comments/c97flm/languages_distinguishing_between_machine_types
Somebody there mentioned refinement types, which seem at first glance to be an interesting halfway point to dependent types.
I've also received a suggestion to check out Ada 2012: https://www.adacore.com/uploads/books/pdf/SafeSecureAdav2015-covered.pdf (page 21)
s

shalabh

07/08/2019, 3:32 PM
Yeah structural vs nominal seems to only apply for composite user defined types. Primitive types are.. both? Interfaces do seem like one possible way to decouple the domain aspects from the machine representation aspects, but as you say, often use the machine types across the interface boundary.
What if we required types within interfaces to only be other interfaces?
This is somwhat the thing I'm looking for. Maybe it's possible as a design pattern. I feel this idea needs to be provided by the system. One key aspect would be the definition of the 'mapping' between the domain types and the machine types. If this was powerful there's no reason to always clump domain structs together in memory. Perhaps it's also possible have multiple possible underlying representations used in different scenarios for the same domain types and have the system be aware of this mapping. Higher level logic could be written against the domain data model only and optimizations would be defined only in the mappings/hints to machine types.
View count: 1