Skip to content

Some motivational talks and examples for pushing Scala programming to its limits

Notifications You must be signed in to change notification settings

p-pavel/scala-typelevel-motivational

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Some motivational talks and examples for pushing Scala programming to its limits

Resources

Stars

Watchers

Forks

Releases

No releases published

Sponsor this project

 

Packages

No packages published

Languages