RSSAmplifier

Blog

Home on Adam Warski: programming articles & videos

Recent content in Home on Adam Warski: programming articles & videos

warski.orgRSS feed ↗158 posts

Latest posts

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.

Secure & Dangerous Claude Code + VS Code setup

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 I started learning Emacs in 2016

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.

Add a “dependencies” badge & tree to your project using UpdateImpact

Most Java/Scala/Groovy project depend on a number of libraries, these libraries depend on other libraries, and so on for many levels deep.

Event sourcing + free monads = free sourcing?

I recently wrote about Event Sourcing and Free Monads. The natural next step is combining the two!

MacWire 2.0: composing modules & cleanup

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!

When & why to use Supler for web forms?

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.

MacWire 1.0 is here!

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.

Supler update: 0.3.0 release

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: traversing options and lists

Quicklens is a small library which allows to modify deeply nested fields in case classes e.

Quicklens: modify deeply nested case class fields

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.

In today’s post-OO world, is dependency injection still relevant?

It’s 2015. Most of the new popular languages are more or less functional. The old ones, like Java, gain functional programming elements.

Supler 0.2.0: docs and features added, bugs removed

Supler is a library which makes writing complex forms easier. It has a server-side (Scala) and a client-side (JavaScript) component.

MacWire 0.8.0: towards 1.0, tagging, anonymous functions support

A couple of days ago MacWire 0.8.0 got released. It contains a couple of changes and new features.

Supler 0.1.0: complex forms made easier

Supler aims to make complex web forms development easier, without tying you to a web framework.

Clustering reactmq with akka-cluster

In the last two posts on reactmq, I described how to write a reactive, persistent message queue.

Introducing Supler: a Functional Reactive Form Library

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 0.7: dynamically accessing the object graph

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.

Making the Reactive Queue durable with Akka Persistence

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.

Evaluating persistent, replicated message queues (updated w/ Kafka)

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.

Benchmarking SQS

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.

Cluster-wide Java/Scala application deployments with Docker, Chef and Amazon OpsWorks

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.

Reactive Queue with Akka Reactive Streams

Update 15/09/2014: introduced API changes from akka-streams 0.7. Update 30/10/2014: introduced API changes from akka-streams 0.

Codebrag: why post- and per- commit?

We have recently released version 2.0 of Codebrag, our code-review tool. Why a new code-review tool in the first place?

Functional Discrete Optimization @ Coursera with Scala

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.

Spray server in a Docker container

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.

Inverse beacon positioning

Indoor positioning is a very popular topic recently, mostly due to the iBeacon technology promoted by Apple, and adopted by other vendors.

Makerland, hackaton and turtles

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)!

Big data: when single node is better than clustered

There’s a lot of hype about “big data” and a general trend to try to apply Hadoop to almost every problem.

Using Scala traits as modules, or the “Thin Cake” Pattern

I would like to describe a pure-Scala approach to modularity that we are successfully using in a couple of our Scala projects.

Using JavaCV with Scala and SBT

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.

How do iBeacons work?

iBeacons are certainly a trending topic recently. They allow indoor positioning, letting your phone know that you are in range of a beacon.

Traffic simulation game in Elm

A couple of weeks ago I read about Elm, a new functional language, which compiles to JavaScript and HTML.

BuildStuff 2013 is over – looking forward to ’14!

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 ;) ).

Using Amazon’s Elastic Map Reduce to compute recommendations with Apache Mahout 0.8

Apache Mahout is a “scalable machine learning library” which, among others, contains implementations of various single-node and distributed recommendation algorithms.

Creating an on-line recommender system with Apache Mahout

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.

MacWire 0.5: Interceptors

Interceptors are very useful for implementing cross-cutting concerns. Classic use-cases include security, logging or transaction support.

Java Zone 2013 trip report

This year I had the chance to attend JavaZone 2013. So far I mainly knew JavaZone from their conference trailers (e.

Automatic generation of delegate methods with Macro Annotations

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.

Dependency Injection in Play! with MacWire

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.

Verifying usage of 3rd party libraries using Veripacks

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.

Akka vs Storm

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.

Implementing factories in Scala & MacWire 0.3

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: long polling, non-blocking implementation using Akka and Spray

ElasticMQ 0.7.0, a message queueing system with an actor-based Scala and Amazon SQS-compatible interfaces, was just released.

Typed ask for Akka

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 0.2: Scopes are simple!

MacWire generates new instance creation code of given classes, using values in the enclosing type for constructor parameters, with the help of Scala Macros.

Per-commit e-mail GitHub notifications

One thing that I miss in GitHub is the ability to get e-mail notifications on each push/commit.

MacWire 0.1: Framework-less Dependency Injection with Scala Macros

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.

How to replace a build module with Veripacks

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).

Dependency injection with Scala macros: auto-wiring

You can look at dependency injection as a fancy name for passing parameters to a function (or constructor arguments to a constructor).