Docker Sandboxes (sbx) vs Sandcat
Since sandboxing agents is recent hobby of mine, I’ve been looking at the new Docker Sandboxes (sbx), and how they compare to Sandcat.
Recent content in Home on Adam Warski: programming articles & videos
Since sandboxing agents is recent hobby of mine, I’ve been looking at the new Docker Sandboxes (sbx), and how they compare to Sandcat.
My goal is to create an environment where I can let Claude Code work autonomously on an issue: write tests, code, iterate on the solution, and finally create a PR.
Why learn another editor in the first place? The main role of a good editor is to not get into your way while working, and maybe even help a bit from time to time.
Most Java/Scala/Groovy project depend on a number of libraries, these libraries depend on other libraries, and so on for many levels deep.
I recently wrote about Event Sourcing and Free Monads. The natural next step is combining the two!
Recently we released MacWire 2.0, with a number of new features and general code cleanup. The majority of the work was done by Bruno Bieth – thanks!
If you haven’t yet heard about Supler, it’s a Rapid Form Development library, working with your favorite Javascript frontend and Scala backend frameworks.
A couple of days ago MacWire 1.0 was released! If you don’t yet know what MacWire is: a light-weight and non-intrusive Scala Dependency Injection library.
It’s been some time since the last release of Supler. Just as a short reminder: Supler is a Rapid Form Development library, allowing you to use your favorite Javascript frontend, and Scala backend frameworks.
Quicklens is a small library which allows to modify deeply nested fields in case classes e.
TL;DR: Quicklens: modify deeply nested fields in case classes, e.g.: modify(person)(_.address.street.name).using(_.toUpperCase). Similar to lenses, but without the actual lens creation.
It’s 2015. Most of the new popular languages are more or less functional. The old ones, like Java, gain functional programming elements.
Supler is a library which makes writing complex forms easier. It has a server-side (Scala) and a client-side (JavaScript) component.
A couple of days ago MacWire 0.8.0 got released. It contains a couple of changes and new features.
Supler aims to make complex web forms development easier, without tying you to a web framework.
In the last two posts on reactmq, I described how to write a reactive, persistent message queue.
Let’s face it. Creating websites with complex forms is a pain. Writing the HTML in the frontend, the supporting javascript, defining mappings in the backed, server-side validation, and – let’s not forget, it’s 2014 – corresponding client-side validation, cause a lot of duplication of code and effort, and result in frustration.
MacWire is a Lightweight and Nonintrusive Scala Dependency Injection library. While it would be great to be able to define in a type-safe way the whole object graph for an application upfront, there are cases when it is necessary to access and extend it dynamically.
Some time ago I wrote how to implement a reactive message queue with Akka Streams. The queue supports streaming send and receive operations with back-pressure, but has one downside: all messages are stored in-memory, and hence in case of a restart are lost.
An updated and extended version of this post is available on SoftwareMill’s website. Below you can find the original content containing benchmarks from 2014.
SQS, Simple Message Queue, is a message-queue-as-a-service offering from Amazon Web Services. It supports only a handful of messaging operations, far from the complexity of e.
Docker is great for running isolated containers on a single node. However, most software systems run on multiple nodes, so in addition to Docker, we need some way of specifying which containers should run on which nodes.
Update 15/09/2014: introduced API changes from akka-streams 0.7. Update 30/10/2014: introduced API changes from akka-streams 0.
We have recently released version 2.0 of Codebrag, our code-review tool. Why a new code-review tool in the first place?
Recently I took part in the Discrete Optimization class at Coursera. I must say that it was the best MOOC I have attended so far, because of two factors.
Docker is a pretty new, but very exciting project; with Docker you can create lightweight, self-sufficient containers with any application inside, and later run the containers on a variety of hosts.
Indoor positioning is a very popular topic recently, mostly due to the iBeacon technology promoted by Apple, and adopted by other vendors.
The first Makerland is over – if you read only the first sentence of this blog, the conference was great, watch out for the second edition (hopefully there will be one)!
There’s a lot of hype about “big data” and a general trend to try to apply Hadoop to almost every problem.
I would like to describe a pure-Scala approach to modularity that we are successfully using in a couple of our Scala projects.
Recently I’ve been doing some simple face detection in a Scala-based project. The “industry standard” for such kind of tasks is OpenCV; face detection is one of its basic use-cases.
iBeacons are certainly a trending topic recently. They allow indoor positioning, letting your phone know that you are in range of a beacon.
A couple of weeks ago I read about Elm, a new functional language, which compiles to JavaScript and HTML.
I just came back from the BuildStuff conference in Vilnius, Lithuania (actually this was almost a week ago, but I was writing that back at the airport ;) ).
Apache Mahout is a “scalable machine learning library” which, among others, contains implementations of various single-node and distributed recommendation algorithms.
Recently we’ve been implementing a recommender system for Yap.TV: you can see it in action after installing the app and going to the “Just for you” tab.
Interceptors are very useful for implementing cross-cutting concerns. Classic use-cases include security, logging or transaction support.
This year I had the chance to attend JavaZone 2013. So far I mainly knew JavaZone from their conference trailers (e.
Macro Annotations are a new type of macros, which are one of the candidates for inclusion (see also comment by Eugene below) in the upcoming Scala 2.
The most recent release of MacWire (0.4) (a Scala macro to generate wiring code for class instantiation, DI container replacement) comes with new utilities which make it easier to integrate with frameworks which require by-class instance lookup.
Veripacks already allows to specify and verify which classes should be visible outside of a package (in a package-transitive way) as well as require importing and import packages within a project.
I was recently working a bit with Twitter’s Storm, and it got me wondering, how does it compare to another high-performance, concurrent-data-processing framework, Akka.
Factories are useful when we need to create multiple instances of a class at run-time, usually providing some parameters, but still without using new explicitly; we want to make some complex object creation abstract.
ElasticMQ 0.7.0, a message queueing system with an actor-based Scala and Amazon SQS-compatible interfaces, was just released.
Akka is a great tool for writing distributed applications. One thing that always surprised me though is that while being based on Scala, which is a very type-safe language, the elementary construct in Akka – an actor – is not really type safe.
MacWire generates new instance creation code of given classes, using values in the enclosing type for constructor parameters, with the help of Scala Macros.
One thing that I miss in GitHub is the ability to get e-mail notifications on each push/commit.
Using Dependency Injection is almost a standard when developing software. However, in many cases it may seem that using the pattern implicates using a DI container/framework.
Compare the two trees below. In both cases the goal is to have an application with two independent modules (frontend and reporting), and one shared/common module (domain).
You can look at dependency injection as a fancy name for passing parameters to a function (or constructor arguments to a constructor).