Code Monkey home page Code Monkey logo

scala-typelevel-motivational's Introduction

(Hopefully) motivational talk on using Scala as a specification language

The code is in src folder, I will collect it hear as text. PLEASE take a look inside the src, the code IS mostly text and organised as a book:

src

This is work-in-progress intended to be finished today, 2024-06-28, so if you are interested, check the page periodically or look at the commits.

I started my journey with software engineering ~30 years ago, professionally worked with C, C++, Java, Smalltalk, C#, Python, Haskell, Agda, Scala, and more.

I currently see the microservices catastrophe marching and the rise of ancient evil like Go.

My interests include:

  • Scala as an industrial-grade specification language
    • type-level and meta-programming utilities
    • development of tagless final ideas for Scala and its capabilities (see this to get a high level picture)
    • development of parametric parametricity ideas for Scala
    • development of techniques and tools to push Scala into proof assistant similar to Agda (ability to discuss the topic with the type checker)
    • express industrial knowledge as the Scala specs and develop the libraries from this (consider industrial patterns like "event sourcing", or "CQRS" expressed not as words but as formal executable spec)
    • develop the techniques for API design and evolution connected to the types in Scala
      • Can I pass the immutable source files to the developers and if they come with something that will make this code compile I can be pretty sure they implemented the spec? (yes, we can run Scalacheck and munit in compile time)
      • Can API evolution be connected to subtyping?
        • Can the structure of our specs reflect the stages of the design, including elaboration and refinement leading to more and precise types?
  • software engineering with Scala on the JVM using OSGi and general capability/requirement model and packages in the JVM sense
    • a tool to automatically generate OSGi bundles and Karaf feature repositories from Scala libraries (the development of this theme)
  • IDE to support proper Scala development which isolates the developer from dealing with project and dependencies focusing on automatically finding the dependencies from Maven Central. Tightly integrated with OSGi container to get the illusion of live code development and automating proper OSGi bundle creation

Unfortunately, there're little chances to continue this work due to time limitations (limiting factor being the cigarettes and food supply and also accommodation) and the lack of general interest in the topic.

But if you are interested, please consider sponsorship and participating in the discussions.

From my experience in latest years I can't make living from being a software engineer, so this is an experiment with alternatives. Your sponsorship will allow me to buy a pack of cigarettes or two, maybe some food or even pay the rent, so I can continue on the list above.

scala-typelevel-motivational's People

Contributors

p-pavel avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.