Content worth reading/watching related primarily to software development with focus on Lean, DevOps, JVM, good code, productivity.
Don't wanna be here? Send us removal request.
Text
Essentially a tutorial of building and deploying a minimal, production-like Clojure web app with server-side rendering for managing bookmarks. Featuring Aero, Integrant, Reitit, next.jdbc, Hiccup, Fly.io. Uses tools.build to create an uberjar in a multi-stage Dockerfile. Socket REP in prod, accessible via VPN (fly proxy). GithubActions for deployment.
0 notes
Text
T. Heller's answer to how to use shadow-cljs in a fullstack setup with a CLJ backend. Some good productivity tips, such as adding a Cursive restart shortcut, which also syncs all modified files into the REPL, and simplifying shadow invocation with handy metadata (:shadow/requires-server). Check out also the follow-up, Supercharging the REPL Workflow (building css, leveraging shadow's fs-watch
0 notes
Text
Choices made by a Clojure SaaS support thingy for system components: Jetty 12 (websockets) with Ring, Reitit, PostgreSQL (with next.jdbc and HoneySQL), Integrant for component system, Aero for config, transactional emails via Resend (a service), deployment via fly.io. Frontend: UIx (a React wrapper) with re-frame, tailwind-css, DaisyUI (a comprehensive CSS component library built on top of tailwind), Portfolio 🇳🇴 for UI component documentation, shadow-cljs.
1 note
·
View note
Text
An addon to Tailwind CSS, which add semantic class names for pure CSS components such as an alert, accordion, button, ... . This overcomes the "primitiveness" of Tailwind. Used e.g. by ShipClojure.
0 notes
Text
Electric Clojure changes to a commercial, $480/month/developer license, but can be free until your company starts earning $200k and free for open source, research etc. It makes sense they need a source of income, and at least some existing users are very positive about it.
0 notes
Text
Leveraging the power and portability of WebAssembly, Extism is an off-the-shelf plug-in system just a library import away. Call plug-ins written in WASM from a number of host languages, such as Java, JS, Rust, and others.
0 notes
Text
Extism - make all software extendable via WASM plugins
Leveraging the power and portability of WebAssembly, Extism is an off-the-shelf plug-in system just a library import away. Execute plug-ins written in WASM from any number of host languages, including Java, JS, Rust and others.
0 notes
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