urweb

Ur/Web, or the Ur programming language and the Ur/Web domain-specificlanguage standard and library, is an ecosystem designed to promotevery safe webdevelopment. The system has some interesting ideas like validatingrequests, queries, HTML and SQL, and has an inbuilt ORM for expressingdatabase interactions. It's also super easy to install with Nix!

Unfortunately, it's software developed on master without rigoroustesting practices and the documentation can be lacking at times (thoughit is very good for a research effort). In my limited time using theframework, I found that I would frequently struggle with errors relatedto bad parses; if I used the wrong syntax at some point, I would receivean error that felt incredibly inconsistent with the code I was writing -I wish the system had more logging to inform the user of where the erroroccurs at the least!

It's also clear that the framework operates entirely independent of anyprogress in the web development space – which leads to some interestingideas but foregoes several nice-to-haves of current systems. Urweb,though, is in it for the long haul.

Ur/web does seem to have decent Emacs support, though I had someinitial trouble getting urweb-mode to run in Emacs out of the box.

Starting Out

If you're starting and you're a beginner, don't bother with the manualat first. Install the \`urweb\` package with Nix (use a nix-shell!) andjump straight to the examples. I found that without the proper contextthe manual and reference weren't super useful; they focus on theprogramming language itself rather than the ecosystem surrounding webdevelopment, which is likely why you're using the framework.

Of course, once you're familiar with using the ecosystem, go back to thereference to learn more about the language!

Links

the Urweb repository the main demo asprovided in the repo a greatwriteup on why urweb is worthtryinghttp://expdev.net/urtutorial/ decent tutorial ur/Web part of BazQuxReader sources Useful Ur/Webfunctions. ur programming languages -web dev w this!

In this article
starting-out
Revisions
DateHash
2023-02-22
Navigation
Previousgetting-things-done
Nextfirefox
Uppages