Anyone willing to help me get set up with something like miso?

For the last few years I’ve been working (off and on) on a teaching language for FP and discrete math. One of the big goals is to build a browser-based IDE which runs completely client-side, so students can code in their browsers without installing anything, and I don’t have to worry about running a server. Thanks to amazing technology like GHCJS, miso, reflex, etc., this seems like it should be entirely doable.

However, every time I sit down to try building such a thing, I end up getting completely bogged down in details of nix and stack and .cabal files and whatnot, and never even get off the ground. There are usually nice examples of building a new site from scratch, but I can never figure out the right way to incorporate my large amount of existing Haskell code. Should I have one package? Two separate packages for the website and the language implementation? How can I set things up to build either/both a command-line REPL and a web IDE?

I’m wondering if there is someone experienced with GHCJS and miso who would be willing to help me get things set up. (I’m also open to being convinced that some other combination of technologies would be better for my use case.) I’m imagining a sort of pair-programming session via videoconference. I am pretty flexible in terms of times so don’t worry about whether your time zone matches mine. And if there’s something I can help you with I’m happy to do an exchange.

If you’re interested and willing, send me an email: byorgey at gmail. Thanks!

About Brent

Assistant Professor of Computer Science at Hendrix College. Functional programmer, mathematician, teacher, pianist, follower of Jesus.
This entry was posted in haskell and tagged , , , , . Bookmark the permalink.

6 Responses to Anyone willing to help me get set up with something like miso?

  1. James Tien says:

    Hey Brent,

    > build a browser-based IDE which runs completely client-side, so students can code in their browsers without installing anything, and I don’t have to worry about running a server

    Could you help me elaborate more on this? When I saw “a browser-based IDE running completely client-side”, I imagine the students would still have to at least installing the IDE, spin it up locally, and access it via a local URL. However, that still involves some installation, so I’d love to confirm :)

    Also, if I may suggest, would a containerized development environment an option for you? There are multiple ways of achieving this, but I’m explicitly referring to VScode container here: https://code.visualstudio.com/docs/remote/containers . With it, you can prepare a fully-configured development environment for your students. All they have to do will be installing VScode, cloning the container configuration repo, spinning the container up and that’s it. With proper configuration, they don’t have to touch cabal, stack, or GHC explicitly. You can even pre-populate homework inside if you like. I’m pretty sure I have seen some containers for Haskell, but they are not on top of my head right now.

    I don’t know if this would be too much for a math class, but it’s a trending standardizing development environment practice nowadays that I’ve seen many positive cases, so I’d like to share with you :)

    • Brent says:

      Hi James, thanks for your comment!

      > I imagine the students would still have to at least installing the IDE, spin it up locally, and access it via a local URL. However, that still involves some installation, so I’d love to confirm

      No, that’s not what I mean at all! I mean that the client will be compiled to JavaScript (or WebAssembly? something like that) and run completely inside their browser. So all they have to do is point their browser at a specific URL. Thus containerized development environments are irrelevant for me. I definitely don’t want students to have to install VSCode or anything like that.

  2. jinwoo68 says:

    I heard a lot of good things about CodeWorld. https://code.world/

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

This site uses Akismet to reduce spam. Learn how your comment data is processed.