Func Prog Sweden
Func Prog Sweden
  • 134
  • 368 521
Painless stretchy web apps using a shorthand notation by Edward De Jong
With users now employing mobile devices as their primary computer,
it is important to be able to make your graphical interfaces stretch like rubber to accommodate the wide variety of screen sizes. Introducing Beads, a replacement for the typical web stack that enables you to create rubbery client/server web apps, by means of a graphical model that uses proportions instead of coordinates, and offers a concise notation for describing complex page layouts, coupled with a runtime that automatically deduces areas needing regen.
voicecarrier.com/lab/colors/colorchart.html
Edward De Jong
Mr. de Jong started programming in high school in Pasadena, California on an IBM 1620 punchcard computer that had 40k decimal digits of RAM, later used the Univac 1108 at JPL and the IBM System/370 at CalTech, graduated from MIT with a Bachelor’s degree. He progressed to HP minicomputers, to IBM and Apple Macintosh personal computers and finally to mobile devices and the web. He was the lead programmer on WordStar 2000, IBM DisplayWrite 5/Composer, Flying Colors / DragonBall Z / Ultraman paint program, Discus CD labeler, over 90 iPhone apps, and lately client / server web apps. His passion is for finding the maximum leverage tools for the solo programmer.
www.linkedin.com/in/edward-de-jong-6a15086/
Video sponsor - Ada Beat
adabeat.com
Merch
If you want to spread functional programming and support the channel, buy something from the shop:
funcprogsweden.myspreadshop.net/
The Chapters:
00:00 Introduction by Magnus Sedlacek
00:30 Painless stretchy web apps using a shorthand notation by Edward De Jong
01:00 Language Landscape
01:29 Motivation
02:19 Goal
03:24 Basics
04:26 Programs are made up of many short codes blocks
05:27 Tight coupling of drawing and event tracking
06:38 Spreadsheet-style closed arithmetic
07:36 Units of Measure
08:44 Easier to read, domain specific language with comments for regular expressions
09:32 No physical addresses
10:59 No Closures
11:23 Renaissance Era Proportional Layout Scheme
12:48 Autosizing text
13:52 Data versioning
14:27 Automatic re-execution of drawing code
16:18 Client + Server fusion
17:04 Result & Roadmap
17:24 Example 1 - Mortgage Calculator
18:35 Example 2 - Test 1
22:35 Example 3 - The color picker
24:37 Dividing the screen
26:12 Example 2 - Test 1
33:00 Real-time status monitor
36:40 Q & A
#funcprogsweden
Переглядів: 314

Відео

Witchcraft - Lessons From Porting Monads to Elixir by Brooklyn Zelenka
Переглядів 988День тому
Witchcraft, Algae, and Quark bring several utilities to Elixir from other languages like Haskell, enabling an easier, principled use of tools such as algebraic data types and monads. Witchcraft's goal was to feel fully idiomatic, and provide a gentle learning curve for learning the new concepts that it introduces. Porting concepts into new environments brings its own challenges: in this talk we...
Introduction to Roc Programming Language by Richard Feldman
Переглядів 25 тис.Місяць тому
Richard Feldman introduces the Roc programming language as a fast, friendly, and functional language in active development, featuring a small ecosystem. He covers Roc's syntax, emphasizing assignments, list.map, and lambdas, while highlighting its purely functional nature. Roc's error handling and type inference capabilities are discussed, showcasing how the compiler infers types and prevents e...
Building a Vite plugin for F# by Florian Verdonck
Переглядів 578Місяць тому
F# can be transpiled to JavaScript via the Fable project, offering a powerful alternative to vanilla JavaScript in the browser. Vite, having conquered the front-end world, is the preferred tool for many developers when starting a new front-end application. What sets Vite apart is its exceptional plugin system. The integration of Fable within this system presents a fascinating case study, markin...
Algebraic Effects from Scratch by Kit Langton
Переглядів 15 тис.2 місяці тому
Kit Langton explores algebraic effects, emphasizing separating syntax from semantics. Kit demonstrates this through the Kyo library, discussing syntax and semantics using method examples. He showcases handling failures and non-determinism, refactors code for efficiency, and introduces concepts like "and-then," "flatMap," and "map." The goal is to create a simple console DSL with type inference ...
Making Imperative Functional: Dyadic Decomposition by Eduardo Lemos
Переглядів 7612 місяці тому
Compressors are usually implemented imperatively. Pointers and mutation are in the spotlight and it is not hard to put yourself into some spaghetti code. How functional programming abstractions deal with it? In this presentation, I explain one instance in which some of them fit like a glove to the problem on hand, going all the way from intuition to actual code. doi.org/10.1109/VCIP47243.2019.8...
REPL-driving the browser by Josh Glover
Переглядів 3,6 тис.3 місяці тому
Josh Glover will show us how we can get out of the SPA and into the driver's seat of a souped-up ClojureScript REPL, avoiding the minefield of JavaScript tooling and getting straight to work. The barrier to entry for functional programming in the browser has never been lower! The cljcastr repo on Github: github.com/jmglov/cljcastr The blog post: jmglov.net/blog/2024-02-22-cljcastr.html The slid...
How do we optimise Scala build times? by James Thompson
Переглядів 1,3 тис.4 місяці тому
Build tools for Scala help you to compile projects as fast as possible. How does this work so we aren’t waiting all day for a one-line-change to rebuild? You will learn about the process of incremental compilation; the steps that you can take to optimise build times; and other developments in the Scala ecosystem to improve build times, from pipelined compilation to even batched parallel compila...
Programming with Effect Handlers by Sudha Parimala
Переглядів 6074 місяці тому
Sudha Parimala introduces the concept of effect handlers, a mechanism for nonlinear control flow in programs that allows for the suspension and resumption of computations. She explains that effect handlers are similar to exception handlers but can resume computation from where it was left off, and provides examples of how they can be used to build programming abstractions such as generators, as...
Functional Design: Applying past software architecture and design by Janet Carr
Переглядів 1,9 тис.5 місяців тому
Functional Design covers software design in functional programming with Clojure. Starting with functional programming basics, I'll demonstrate how to build some of the common functional programming abstractions like reducers, and how to think of functional programming abstractions by borrowing concepts from past software design principles. Janet Carr Independent Clojure consultant janetacarr.co...
Went: GoJS diagrams in PureScript by André Muricy
Переглядів 1,6 тис.5 місяців тому
Went: GoJS diagrams in PureScript by André Muricy
Better software design with domain modeling by Eric Normand
Переглядів 1,9 тис.6 місяців тому
Better software design with domain modeling by Eric Normand
ChatGPT as your Erlang coach by Georgiana Chelu
Переглядів 7847 місяців тому
ChatGPT as your Erlang coach by Georgiana Chelu
Introduction to fp-go, functional programming for golang by Dr. Carsten Leue
Переглядів 1,6 тис.7 місяців тому
Introduction to fp-go, functional programming for golang by Dr. Carsten Leue
Schema management with Scalameta by Lars Albertsson
Переглядів 8618 місяців тому
Schema management with Scalameta by Lars Albertsson
"Super Haskell": an introduction to Agda by André Muricy
Переглядів 4,4 тис.8 місяців тому
"Super Haskell": an introduction to Agda by André Muricy
Making a game with Elm and Lamdera by Martin Stewart
Переглядів 8989 місяців тому
Making a game with Elm and Lamdera by Martin Stewart
Functional Programming in Financial Markets by Damián Soriano
Переглядів 1,5 тис.9 місяців тому
Functional Programming in Financial Markets by Damián Soriano
Configuration Languages can also be functional by Till Schröder
Переглядів 10 тис.10 місяців тому
Configuration Languages can also be functional by Till Schröder
How APL made me a better Python developer by Rodrigo Girão Serrão
Переглядів 1,2 тис.10 місяців тому
How APL made me a better Python developer by Rodrigo Girão Serrão
Polynomial Functors: Jackpot by André Muricy
Переглядів 1,3 тис.Рік тому
Polynomial Functors: Jackpot by André Muricy
Intro to Swift (for functional programmers) by Adrian Sergheev
Переглядів 1,4 тис.Рік тому
Intro to Swift (for functional programmers) by Adrian Sergheev
Displaying current logged in user using Phoenix Presence by AbulAsar Sayyad
Переглядів 1,7 тис.Рік тому
Displaying current logged in user using Phoenix Presence by AbulAsar Sayyad
ELM - FUNctional language for frontend by Tomas Latal
Переглядів 8 тис.Рік тому
ELM - FUNctional language for frontend by Tomas Latal
Lessons learnt by Mikael Tönnberg
Переглядів 1,5 тис.Рік тому
Lessons learnt by Mikael Tönnberg
An Introduction to OCaml by Sudha Parimala
Переглядів 1,3 тис.Рік тому
An Introduction to OCaml by Sudha Parimala
Darklang, a functional language for the cloud by Paul Biggar
Переглядів 1,2 тис.Рік тому
Darklang, a functional language for the cloud by Paul Biggar
Intro to Rust by Michael Snoyman
Переглядів 2 тис.Рік тому
Intro to Rust by Michael Snoyman
Catch 'em All: Efficient Massive Tabular Data Handling with Tablecloth by Mey Beisaron
Переглядів 1,5 тис.Рік тому
Catch 'em All: Efficient Massive Tabular Data Handling with Tablecloth by Mey Beisaron
Hammers and Immutability by Emil Hernvall
Переглядів 400Рік тому
Hammers and Immutability by Emil Hernvall

КОМЕНТАРІ

  • @PiotrTajchman
    @PiotrTajchman 2 дні тому

    Just don't.

  • @kaansouth8789
    @kaansouth8789 10 днів тому

    This language is so cool!

  • @JanusTroelsen
    @JanusTroelsen 13 днів тому

    People have been using multiple languages since forever. Linker scripts, make files, autoconf, the list goes on. Also, how is this related to functional programming? It looks might it might be related to dataflow programming, but i don't see higher order functions

    • @edwarddejong8025
      @edwarddejong8025 8 днів тому

      If you read the Turing Award lecture by John Backus who invented functional programming, he talks about software interchangeable parts, and making large programs out of smaller pieces. So this is an attempt to offer a more Lego-like experience for coding, where you snap together small chunks of code. You are correct it doesn't resemble languages like Haskell. Higher order function capability is expressed rather differently, but it has the same result. Hard to explain in a paragraph.

  • @isaactfa
    @isaactfa 13 днів тому

    I love the mortgage calculator as an example of a responsive layout because when flipping the screen the layout itself doesn't change at all, everything just gets wider by a seemingly completely arbitrary amount so that nothing lines up anymore. I also love the color picker. It's very responsive until the available vertical space gets too small and it hits a debugger break point and freezes the application. Very production ready. It also really doesn't want to starts scrolling, it just shrinks and/or hides content.

  • @viniciusataidedealbuquerqu2837
    @viniciusataidedealbuquerqu2837 18 днів тому

    I wasn't expecting this version of the language to be so good. the ! operator is beautiful

  • @zcizzorhandz5567
    @zcizzorhandz5567 25 днів тому

    I'm tired of the hobby languages, what problem is Roc solving specifically? If there's no specific problem it solves it's a waste of time.

  • @Kyler1Ace
    @Kyler1Ace 26 днів тому

    Really not a fan of the idea of "try->throw->catch-> try again inside the function that threw" idea near the end, that sounds like itd be extremely hard to reason through. Maybe resumes that affect the control flow of the thrower should explicitly be passed in as an argument and if they dont apply they go back up as normal and if they do they try the passed in thing

  • @BlowaterNostr
    @BlowaterNostr Місяць тому

    Roc has matured a lot since last time I watched Richard's talk. Will give it a try!

  • @budiardjo6610
    @budiardjo6610 Місяць тому

    wow, this person need to speak more. really nice project.

  • @c4tubo
    @c4tubo Місяць тому

    Wow, that's big news about you joining Zed. Grats for that. Looks like Roc is ready for someone (probably me) to implement Bye Bye Hello World.

  • @Rene-tu3fc
    @Rene-tu3fc Місяць тому

    haskell + rust + typescript. very interesting

  • @godDIEmanLIVE
    @godDIEmanLIVE Місяць тому

    Richard is a fantastic presenter.

  • @valerysmirnov9535
    @valerysmirnov9535 Місяць тому

    Sounds like mixture of OCaml and Nim with a platforms feature. Sounds great

  • @thepatzer
    @thepatzer Місяць тому

    A bit like Gleam without the BEAM?

  • @RobertLJ11
    @RobertLJ11 Місяць тому

    Thanks for the talk and demo..😀 I'm looking forward to trying out the language.

  • @tlacmen
    @tlacmen Місяць тому

    Would it be possible to use Roc as a scripting language in a game? Writing a custom platform to provide all interactions with the game. And have it safely run on players pc?

    • @KyleSmithNH
      @KyleSmithNH Місяць тому

      I would think so - it can compile to webassembly so there's at least an intention for the output artifact to be variable (and based on the platform?). Or do you mean people would write Roc _in_ the game? The REPL on their website means they've managed to embed the language and runtime, so you could too (not that it would be easy, haha).

    • @svenvancaem360
      @svenvancaem360 Місяць тому

      Yeah totally! Last I checked, someone in the Roc Zulip chat was working on exactly that already!

  • @fluffyunicorn7155
    @fluffyunicorn7155 Місяць тому

    It will be interesting to see the governance model for this language. I have used Elm in the past. Richard was also part of the Elm team. Elm is “public source” and not open source. You can not meaningfully contribute to the language if you are not part of the team. It is also the only language I know where FFI can only be used by packages that the language authors write. I will not use any language that has not reached 1.0 yet if I’m not comfortable that I can fix the bugs in the language that I run into.

    • @clo4
      @clo4 Місяць тому

      Roc is very much true open source. The largest contributor isn’t even Richard anymore, and there are loads of people that have made very meaningful contributions.

  • @MorganEarlJones
    @MorganEarlJones Місяць тому

    it's unusual to follow along with a video where the person live coding is using 1 release ahead of what the github pushes for every package lol I guess this video will stay relevant for longer that way though

  • @notoriouslycuriouswombat
    @notoriouslycuriouswombat Місяць тому

    someone get this man a bag of money, its stuff like this that can take Fsharp to many more users

  • @michaelmaloney3027
    @michaelmaloney3027 Місяць тому

    The REPL is broken on the front page: i.imgur.com/9biAk8A.png

  • @rosscousens6263
    @rosscousens6263 Місяць тому

    Richard Feldman is such an engaging and captivating presenter. He comes across as congenial and curious and it's always a pleasure to watch his talks. Really rooting for roc and I can see it's getting to a point where I could start using it myself!

  • @JT-mr3db
    @JT-mr3db Місяць тому

    Very interesting. If I’m not mistaken, different platforms could have completely different implementations of Stdin and Stdout?

    • @user-qm4ev6jb7d
      @user-qm4ev6jb7d Місяць тому

      Different platforms could have completely different APIs, or different implementations of the same APIs. Or they can have their own constraints on the Main that you're supposed to export (e.g. list of errors allowed on the top level, which the platform will then process).

  • @yurtle1851
    @yurtle1851 Місяць тому

    🔥

  • @web3tel
    @web3tel Місяць тому

    It is amazing, looks like a dream came true.

  • @arnemartt
    @arnemartt Місяць тому

    Wonderful talk, Richard is always on point, super engaging and insightful. Gotta turn off copilot though 😅

    • @rtfeldman
      @rtfeldman Місяць тому

      Personally I usually have it turned off, but a lot of people ask me what the experience is like when Copilot encounters a language that isn't in its corpus, so I wanted to include that in the demo. 😄

    • @arnemartt
      @arnemartt Місяць тому

      @@rtfeldman Hey, you're here! I've been following the development of Roc for a while and watched several of your talks, I love the language and I love your style and voice. Can't wait to see where Roc goes next 🙌

    • @rtfeldman
      @rtfeldman Місяць тому

      Thanks, appreciate it! I also don't usually read UA-cam comments, but sometimes people point them out to me 😆

  • @adelarsq
    @adelarsq Місяць тому

    Cool! Thanks for share!

  • @edbrito-swdev
    @edbrito-swdev Місяць тому

    I'm very excited to watch this through. Roc, along with Zig, is one of the newer programming languages that's grabbing my attention!

    • @ssmith5048
      @ssmith5048 Місяць тому

      zig is hardly new.... but yet still not stable.

  • @kitlangton
    @kitlangton Місяць тому

    Woo! Roc! 🎉

  • @masynchin
    @masynchin 2 місяці тому

    Bro just invented Free Monad

    • @kitlangton
      @kitlangton Місяць тому

      😜It's true. Though, I didn't explicitly state as much. One of the goals of this talk was to arrive at the Free Monad naturally by solving a series of concrete problems with our DSL. Hopefully, this made the design seem intuitive and almost obvious, even to those unaware of such concepts. Every functional effect system contains the Free Monad among its ingredients. Of course, Algebraic Effects build upon this by allowing for arbitrary, user-extensible syntax and interpretation.

  • @nhungduong9999
    @nhungduong9999 2 місяці тому

    ❤❤👆😃

  • @DisFunctor
    @DisFunctor 2 місяці тому

    Awesome talk! 1:01:41 was that a family guy reference I spotted? 😄

  • @alex.boisvert
    @alex.boisvert 2 місяці тому

    Thank you Kit! The progressive enhancements and your animations made it very easy to follow. Love your enthusiasm.

  • @Worr
    @Worr 2 місяці тому

    I would have liked a cycling hue filter on Kit throughout the session :(

  • @piraloco5864
    @piraloco5864 2 місяці тому

    TE AMO ANDRÉ MURICY ❤❤❤❤

  • @sandymaguire8236
    @sandymaguire8236 2 місяці тому

    Have you looked into finger trees at all? They generalize this silhouette idea very nicely!

  • @mar.yyyyyyyy
    @mar.yyyyyyyy 2 місяці тому

    🤍

  • @MrDejvidkit
    @MrDejvidkit 2 місяці тому

    More videos from Kit please!

  • @gorkempacaci
    @gorkempacaci 2 місяці тому

    Thank you, a great combo again. Does anyone know what's the animating presentation tool Kit Langton used here? Love how he highlights bits of code and moves things around smoothly. Very engaging.

    • @FuncProgSweden
      @FuncProgSweden 2 місяці тому

      The animation tool Kit used, is his own developed tool.

    • @gorkempacaci
      @gorkempacaci 2 місяці тому

      @@FuncProgSweden Thanks.

  • @PieterPrinsloo
    @PieterPrinsloo 2 місяці тому

    I really miss Kit's presentations. He really has such a way to make things simple. I would love to see more of him. Kit please make more videos ♥

  • @minecraftermad
    @minecraftermad 2 місяці тому

    35:00 effect wish list sounds a bit like what zig does with the explicit allocator passing, and try keyword.

  • @ww123ification
    @ww123ification 2 місяці тому

    The Clojure syntax seems to be very interesting, I have not come across anything like that. The equivalent of the code shown at 15:42 in F# will be either [0..4] |> List.map (fun x -> x + 1) |> List.filter (fun x -> x % 2 <> 0) or [0..4] |> List.map ((+) 1) |> List.filter ((<>) 0 >> (%) 2) - both variants look "boringly conventional"😀.

  • @mariobroselli3642
    @mariobroselli3642 2 місяці тому

    Is Elm more used in Sweden than in Germany? I saw No Elm Jobs on jobtensor.

  • @Ablocko
    @Ablocko 2 місяці тому

    The roc programming language seems to have something similar: m.ua-cam.com/video/7SidSvJcPd0/v-deo.html

  • @saurabhmehta7681
    @saurabhmehta7681 3 місяці тому

    Great project!

  • @michaelnardell991
    @michaelnardell991 3 місяці тому

    Quite apart from any aversion to NPM on my part, I really am interested in this talk and trying out the approach. I am captivated by REPLing into something as mysterious (at least to me) as the modern web browser. I had the REPL-into browser experience when I first tried out ClojureScript. For me, hot code reloading has eclipsed the REPL. I appreciate seeing a different avenue for getting the REPL back into ClojureScript.

  • @JoseTrigueros
    @JoseTrigueros 3 місяці тому

    Josh thanks for the lovely talk! I had heard of Scittle before, but didn't know what it was or how it could be used. Thanks for the demonstration, I also wanna get out of the SPA and use just _a little_ Javascript. Do you leave the REPL connection `script` tags when you ship to production or those have to be removed? P.S. I, too, was clapping whenever you picked up the bottle 👏

  • @jmgimeno
    @jmgimeno 4 місяці тому

    Does this works only on sbt or in scala-cli as well?

    • @jamie_thompson_
      @jamie_thompson_ 4 місяці тому

      Scala CLI uses Zinc for incremental compilation, but as it is single project only - it can not benefit from anything else I talked about (compiling subprojects in parallel, pipelining of subprojects, outline) - possibly if you use some other tool to manage several Scala CLI projects you could build these features on top

  • @MrDejvidkit
    @MrDejvidkit 4 місяці тому

    Is it possible to parallelise the work inside of the module? or scapa is already doing it?

  • @MrDejvidkit
    @MrDejvidkit 4 місяці тому

    I have a question, how can you optimize PATmAT compilation phase?

    • @jamie_thompson_
      @jamie_thompson_ 4 місяці тому

      Hey, might I ask you to be more specific? but perhaps right from the start you could try breaking up your cases into smaller methods if you have a long chain

  • @Mimicry161
    @Mimicry161 4 місяці тому

    Interesting concept.