Skip to content

A gentle interactive tutorial showing how the Haskell ecosystem can quickly and easily produce advanced Web applications. No typing required!

License

Notifications You must be signed in to change notification settings

whatsupfudd/practical-haskell-1

Repository files navigation

Full Stack Deep Dive: What the deal with Haskell?

is one of these languages that most senior developers have heard mysterious tales about. But as most stuff of legends, few people have had practical experience with. That's unfortunate as by today's state of technology having Haskell experience should be a standard practice for full-stack developers and CTOs.

I write this Jupyter notebook to address that issue while trying to take a little of your time as possible.

Why? I've come to realize that Haskell is the best tool I've used to reach the Zen of programming, the most likely to give me balance between theory and practice, quick prototyping and long-term software production, time-tested approaches and innovative techniques. That's not a conclusion I've jumped to; I have over 40 years of software development under my belt, during which I've worked with many many programming ecosystems in many many kind of software development projects with many many types of people. I've started using Haskell about 10 years ago, I slowly integrated its ecosystem into my normal work setup and especially over the last 5 years I've seen it mature to become an extremely powerful tool for today's requirements.

To dig into important features of Haskell in the context of app development, this notebook doesn't go into setting up a development environment, compiling and running a first simple piece of code, and helping you going in your own environment. Instead I want to give a down-to-earth feeling of how, in the Haskell ecosystem, you produce a normal, modern, efficient web app, based on HTMX and Tailwind in the frontend, and with server-side rendering of templates filled with data provided by SQL queries, low-latency websocket communications... and security, distributed computing, 3rd party APIs, Javascript/C++/Python ecosystems integration, etc.

If I manage to get you interested and you want to get more experience, it is easy to get the Haskell ecosystem on your local machine, read some of the many resources to learn how to write Haskell code with language server and Copilot support, and move forward in the creation of software through the edit -- compile -- run -- observe loop.

To run the introduction, use docker compose with the following file (be careful, the README rendering may take away some required tabbing):

services:
  nginx:
    restart: always
    image: whatsupfudd/jupytell:1.1
    ports:
      - "9980:80"
      - "9443:443"
    volumes:
      - "/usr/share/nginx/html"
      - "/etc/nginx/certs"
    networks:
      - proxies
  jupyter:
    restart: always
    image: whatsupfudd/intro1:1.3
    networks:
      - proxies
networks:
  proxies:

Then using your browser, access the host you're running the docker containers on using port 9980: http://<host>:9980/lab.

Use password fuddfudd to connect. The two services created in the introduction will be accessible at:

  • 8181: /demo1
  • 8180: /demo2

About

A gentle interactive tutorial showing how the Haskell ecosystem can quickly and easily produce advanced Web applications. No typing required!

Topics

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published