brassica
htmx
brassica | htmx | |
---|---|---|
7 | 566 | |
21 | 32,837 | |
- | 3.1% | |
8.2 | 9.6 | |
30 days ago | 3 days ago | |
Haskell | JavaScript | |
GNU General Public License v3.0 or later | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
brassica
-
Calling Haskell from Swift
I’ve done something like this before to call Haskell from C++ (in [0]), so that I can build my GUI using Qt. It worked pretty well, except that I ran into various difficult-to-resolve linking problems on both Windows and Linux. After a year or two of trying to maintain it, I gave up and switched to a protocol where both sides pass JSON over stdin/stdout. This particular piece of software doesn’t require a huge amount of communication or shared data, so it works well enough.
The really nice thing about the original interop code, though, is that GHC’s new WASM backend uses essentially the same foreign function interface to export functions to JavaScript. So with only some minor modifications, I was able to get the same program working on a webpage [1], which I think is pretty cool.
[0] https://github.com/bradrn/brassica
[1] At the risk of DDOS’ing my poor little home server: https://bradrn.com/brassica/
-
Haskell WebAssembly in the Browser
GHC’s WASM backend is already really useful! I also used it to port one of my own programs to the browser [0], albeit not using the DOM as this person did. Documentation is still sparse, but it’s a very similar process to creating a shared foreign library.
[0] https://github.com/bradrn/brassica
-
GUI development with Rust and GTK 4
No experience with Rust, but for a couple of personal projects I’ve written the logic in Haskell and the GUI in C++ (e.g. https://github.com/bradrn/brassica/blob/master/ARCHITECTURE....). It works pretty well, at least for smaller projects — the basic idea is that the Haskell code gets compiled into a library (static on Windows, dynamic on Linux) which the C++ side can link to. I’d imagine doing the same with Rust would be even easier, since it’s less of a pain to marshal stuff across the language barrier.
-
Ask HN: What are your “scratch own itch” projects?
The biggest one for me is undoubtedly my custom keyboard layout Conkey [0], which I use constantly (including for typing this very comment). I hate the way the base US layout tends to get distorted in other keyboard layouts with good support for non-ASCII characters, so Conkey had the explicit goal of retaining that basic unshifted layout. I’ve also ended up porting Conkey to Mac and Linux — and given that I’m slowly switching from Windows to Linux, at least the Linux ports have ‘scratched my own itch’ too, which is nice.
Also, I made a utility to archive the full text of every website I view and store it in a SQLite database for searching. It’s proven pretty useful when I want to find something I saw a while ago and then forgot. (I haven’t attempted to open-source it, though — it consists of three entirely separate components, two of which were a pain to set up. I must try to get it into a more usable state one of these days.)
What else… my sound change applier [1], perhaps? Not that I use it very much, because I only need it on those occasions when I want to do some conlanging, which I haven’t had much time for recently. Actually, sound change appliers strike me as being very much a ‘scratch own itch’ type of project in general… sometimes it feels like every conlanger has written their own, and no two can agree on a nice design. Everyone just has their own unique preferred way of doing things.
[0] https://github.com/bradrn/Conkey
[1] https://github.com/bradrn/brassica
-
‘Missing C libraries’ when compiling haskell-gi-base on Windows
Recently I’ve been trying to do some GTK+ programming again, as a change from my more recent attempts to use Qt with Haskell. Alas, when I try to build the example application from the documentation, I get an error:
- Brassica architecture (plus some general advice on calling statically linked Haskell from C)
- Rustdoc Résumé
htmx
-
🕸️ Web development trends we will see in 2024 👀
HTMX is another library that gained popularity due to its server-first approach to rendering data, although seeking a much simpler way of appealing to developers.
-
Reusable Input Datalist
When I work with HTMX I need isolated component that can be reusable a form. So I create a PHP Function that generate the Input Datalist.
-
HTMZ inspired form subission
I was inspired by htmz (which was in turn inspired by htmx) and how the author got pretty close to a basic htmx-like experience just using an iframe. I wanted to push it a little further so whipped this demo together. My submission demonstrates progressive enhancement for the form - with js enabled the request targets an iframe that is inserted into the dom, meaning the page doesn't actually navigate (similar to event.preventDefault()). The iframe receives the html response from the request and on load triggers a function to swap out it's contents into the main page.
-
Example Java Application with Embedded Jetty and a htmx Website
As described on htmx.org: "htmx gives you access to AJAX, CSS Transitions, WebSockets and Server Sent Events directly in HTML, using attributes, so you can build modern user interfaces with the simplicity and power of hypertext"
-
Show HN: ZakuChess, an open source web game built with Django, Htmx and Tailwind
Apart from the source code itself, the repo's README also gives a bit more details about the various packages I used.
1. htmx: https://htmx.org/
-
Show HN: Alpine Ajax – If Htmx and Alpine.js Had a Baby
Also, there’s some response header juggling you have to do when submitting forms that have a validation step before redirecting: https://github.com/bigskysoftware/htmx/issues/369
I’ve tried to iron out any footguns or server requirements I’ve bumped into while using HTMX & Hotwire in my projects.
-
🤓 My top 3 Go packages that I wish I'd known about earlier
✨ In recent months, I have been developing web projects using GOTTHA stack: Go + Templ + Tailwind CSS + htmx + Alpine.js. As soon as I'm ready to talk about all the subtleties and pitfalls, I'll post it on my social networks.
- FLaNK Stack 26 February 2024
-
Go + Hypermedia - A Learning Journey (Part 1)
I've been digging into HTMX lately (using Python web frameworks) and find the concepts and approach to be interesting and promising. The idea of hypermedia driven systems over the current practice of JavaScript based frameworks (I never really got into React, played with Vue, and enjoy Svelte/SvelteKit) and the ability to chose your language/framework for the backend while primarily leveraging HTML/CSS on the frontend just seems refreshing.
-
Htmx become 0 clause BSD-licensed
Apparently it changed from 2-clause BSD: https://github.com/bigskysoftware/htmx/commit/e16f1865a494b6...
(The zero clause license drops the requirements for preserving the copyright notice when distributing)
What are some alternatives?
kn - kn — nvgt/fldrs/qckly
Alpine.js - A rugged, minimal framework for composing JavaScript behavior in your markup.
PoC_CVEs - PoC_CVEs
Vue.js - This is the repo for Vue 2. For Vue 3, go to https://github.com/vuejs/core
FeedTheMonkey - Desktop client for the TinyTinyRSS feed reader.
astro - The web framework for content-driven websites. ⭐️ Star to support our work!
floem - A native Rust UI library with fine-grained reactivity
unpoly - Progressive enhancement for HTML
files_reader
react-snap - 👻 Zero-configuration framework-agnostic static prerendering for SPAs
gvsbuild - GTK stack for Windows
django-unicorn - The magical reactive component framework for Django ✨