Text
youtube
This is wild. Fulcro purely on the server-side, with a custom render fn that either returns or prints hiccup - so that you can play with all the concepts, focusing on them and data, instead of getting distracted by the UI. You could add a tap> and hook it into something like Portal to also display the UI... . Amazing! The repo is here: https://github.com/awkay/beginner-drafting
0 notes
Text
Solving differential equations for efficient, physics-based animation in the browser. Now I wish I remembered more from my studies 😅. A custom rendering engine bypassing React, and doing direct DOM manipulation and drawing links into a 2D canvas, while having a layer for each node. We also learn that browsers may be dumb and waste 90% time trying to render off-screen layers. A lot of great engineering here!
Whenever we want to improve performance, the solution is often to go one layer lower and replace some existing code with code created just for our own use case. So instead of depending on React to sync changes, we have written our own rendering engine which orchestrates everything in each frame. And instead of rendering nodes with HTML, we have written our own rendering into canvases.
The next reasonable step is to go further and implement our own low-level rendering on the GPU directly.
1 note
·
View note
Text
A wonderful initiative to rewrite key building blocks of today's networks in memory-safe Rust - TLS, a reverse proxy, zlib for compression, ... .
0 notes
Text
From ThoughtWorks radar 10/2024:
[Trial] ClickHouse is an open-source, columnar online analytical processing (OLAP) database for real-time analytics. It started as an experimental project in 2009 and has since matured into a highly performant and linearly scalable analytical database. Its efficient query processing engine together with data compression makes it suitable to run interactive queries without pre-aggregation. ClickHouse is also a great storage choice for OpenTelemetry data. Its integration with Jaeger allows you to store massive volumes of traces and analyze them efficiently.
0 notes
Text
From ThoughtWorks Radar:
Bruno is an open-source desktop alternative to Postman and Insomnia for API testing, development and debugging. It aims to provide superior collaboration, privacy and security with its simple offline- only design. Collections are stored directly in your filesystem — written in a custom plain text markup language, Bru Lang, and can be shared with Git or a version control tool of your choice to collaborate. Bruno is available both as a desktop app and a CLI tool. It also offers an official VS Code extension, with plans for additional IDE support.
0 notes
Text
Run a full Postgres database locally in WASM (with reactivity and live sync). PostgreSQL compiled to WASM and thus usable within the browser, with some popular extensions and extra reactivity/sync features, in 3MB compressed. Currently, only a single connection is allowed. In-memory or persistent via IndexedDB.
0 notes
Text
GraalWasm is an open-source WebAssembly runtime compatible with the WebAssembly 1.0 specification. It runs WebAssembly programs in binary format and can be used to embed and leverage WebAssembly modules in Java applications. GraalWasm is in active development and implements a number of WebAssembly feature extensions. Feedback, bug reports, and contributions are welcome.
0 notes
Text
Small Language Models
In response [to the cost, privacy, and size issues of LLM], we’re now seeing growing interest in small language models (SLMs). In comparison to their more popular siblings, they have fewer weights and less precision, usually between 3.5 billion and 10 billion parameters. Recent research suggests that, in the right context, when set up correctly, SLMs can perform as well as or even outperform LLMs. And their size makes it possible to run them on edge devices. We’ve previously mentioned Google’s Gemini Nano, but the landscape is evolving quickly, with Microsoft introducing its Phi-3 series, for example.
From ThoughtWorks Tech Radar 10/2024.
0 notes
Text
This is very meta: using the moldable interactive coding tool Clerk to build a Clerk-based report builder inside Clerk... The UI is used to construct a data transformation pipeline by selecting one of offered, data-dependent choices at each new step, which reaches back to server-side and updates and re-renders the source code 🤯.
In any case, a good demonstration of how to develop and troubleshoot and compose custom Clerk viewers and its other capabilities. There is also a good lesson that finding the right DSL that allows building complex reports is very hard.
A lot of interesting references throughout and at the bottom of the paper.
0 notes
Text
A reference for constructing a data transformation DSL
Abstract— A spreadsheet-like “direct manipulation” interface is more intuitive for many non-technical database users compared to traditional alternatives, such as visual query builders. The construction of such a direct manipulation interface may appear straightforward, but there are some significant challenges. First, individual direct manipulation operations cannot be too complex, so expressive power has to be achieved through composing (long) sequences of small operations. Second, all intermediate results are visible to the user, so grouping and ordering are material after every small step. Third, users often find the need to modify previously specified queries. Since manipulations are specified one step at a time, there is no actual query expression to modify. Suitable means must be provided to address this need. Fourth, the order in which manipulations are performed by the user should not affect the results obtained, to avoid user confusion.
Shamelessly stolen from the Live Programming a Live Programming Environment: An Experience Report.
0 notes
Text
A non-blocking, reactive replacement for JDBC, based on t the Reactive Streams specification. There are drivers for all the popular RDBMS. V. 1.0 released in 4/2024. (Though the only pure-Java, non-Spring client has been archived 4 years ago... .)
0 notes
Text
Clojure wrapper for whisper.cpp for recording audio and transcribing it to text.
0 notes
Text
Mike has about 50 questions he expects all professional software engineers he works with to be able to answer. Many of them are widely applicable, and useful to think about. This mind-map provides a visual summary of them, useful as a quick reminder and review tool.
0 notes
Text
youtube
Electric Clojure is a brave, ground breaking experiment at radically simplifying the development of full-stack web applications. With Electric, you don't need to manually transfer data to the client and deal with state management there. Instead, you write your full-stack app in cljc files, with e/client and e/server markers, and let the compiler figure out the split and network communication for you. I've been rather skeptical of the feasibility of this, but Dustin & Co. have put a lot of thought into it and it seems to actually work. (At least for rather interactive, backoffice and business apps without need for pixel perfection.)
You cannot just drop Electric into your code base and expect everything to work magically, there is some learning curve, even though the rules are sane and intuitive. You have to understand how Electric works and what piece of code runs where and when data crosses the network, and you need to learn Electric's superset of Clojure, with e/fn, e/for, an asynchronous let (since some parts of it may run on the server, others, concurrently, on the client), and get used to work with "differential reactive streams / signals" (= streams of diff info) instead of sequences of raw data. But compared to the complexity of React and manual state and network management, you are much better off anyway - and you get fine grained reactivity, where only changes are transferred and directly alter the relevant DOM (using the built-in dom library).
This talk introduces Electric v3 and improvements since v2, with fewer pitfalls and less need for macros. It is fascinating that all of this has been built by just four people. I am very much looking forward to actually trying this out and seeing for myself how well it works.
2 notes
·
View notes
Text
Choose the right programming language depends, among others, on the environment - do we expect changing requirements, is performance our top priority, or is it a high-stakes, high-risk environment?
Source: The talk How to transfer Clojure goodness to other languages by Elango Cheran and Timothy Pratley from Conj 2023
1 note
·
View note
Text
A summary of what's new in Clojure 1.12 - clojure.repl.deps/add-lib(s), the new, more convenient clojure.java.process alternatve clojure.java.shell, array class syntax (^"[Ljava.lang.String;" -> String/1), Java methods as values (Class/.method, ../staticMethod, ../new) and type hints for them.
0 notes
Text
A predecessor to the InstantDB introduction post, an exploration of challenges in creating web applications and their backend for frontend, arguing that they would be solved by a database (with data authorization). Such as the fact that a lot of plumbing is necessary to get, cache, prepare data for views, over different channels (RPC/REST vs. websockets). It becomes even more complicated when you want to get updates of changes from the backend, undo/redo, ... . And on the backend you need to make all the endpoints...,
0 notes