<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Home on Adam Warski: programming articles &amp; videos</title><link>https://warski.org/</link><description>Recent content in Home on Adam Warski: programming articles &amp; videos</description><generator>Hugo -- gohugo.io</generator><language>en-us</language><lastBuildDate>Wed, 03 Jun 2026 12:00:00 +0000</lastBuildDate><atom:link href="https://warski.org/index.xml" rel="self" type="application/rss+xml"/><item><title>Docker Sandboxes (sbx) vs Sandcat</title><link>https://warski.org/blog/docker-sandboxes-sbx-vs-sandcat/</link><pubDate>Wed, 03 Jun 2026 12:00:00 +0000</pubDate><guid>https://warski.org/blog/docker-sandboxes-sbx-vs-sandcat/</guid><description>Since sandboxing agents is recent hobby of mine, I&amp;rsquo;ve been looking at the new Docker Sandboxes (sbx), and how they compare to Sandcat.</description></item><item><title>Secure &amp; Dangerous Claude Code + VS Code setup</title><link>https://warski.org/blog/secure-dangerous-claude-code-vs-code-setup/</link><pubDate>Fri, 06 Feb 2026 12:00:00 +0000</pubDate><guid>https://warski.org/blog/secure-dangerous-claude-code-vs-code-setup/</guid><description>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.</description></item><item><title>Why I started learning Emacs in 2016</title><link>https://warski.org/blog/2016/08/why-i-started-learning-emacs-in-2016/</link><pubDate>Thu, 25 Aug 2016 12:22:44 +0000</pubDate><guid>https://warski.org/blog/2016/08/why-i-started-learning-emacs-in-2016/</guid><description>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.</description></item><item><title>Add a “dependencies” badge &amp; tree to your project using UpdateImpact</title><link>https://warski.org/blog/2016/02/add-a-dependencies-badge-tree-to-your-project-using-updateimpact/</link><pubDate>Wed, 24 Feb 2016 16:22:28 +0000</pubDate><guid>https://warski.org/blog/2016/02/add-a-dependencies-badge-tree-to-your-project-using-updateimpact/</guid><description>Most Java/Scala/Groovy project depend on a number of libraries, these libraries depend on other libraries, and so on for many levels deep.</description></item><item><title>Event sourcing + free monads = free sourcing?</title><link>https://warski.org/blog/2015/10/event-sourcing-free-monads-free-sourcing/</link><pubDate>Wed, 28 Oct 2015 16:48:54 +0000</pubDate><guid>https://warski.org/blog/2015/10/event-sourcing-free-monads-free-sourcing/</guid><description>I recently wrote about Event Sourcing and Free Monads. The natural next step is combining the two!</description></item><item><title>MacWire 2.0: composing modules &amp; cleanup</title><link>https://warski.org/blog/2015/09/macwire-2-0-composing-modules-cleanup/</link><pubDate>Wed, 30 Sep 2015 07:49:01 +0000</pubDate><guid>https://warski.org/blog/2015/09/macwire-2-0-composing-modules-cleanup/</guid><description>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!</description></item><item><title>When &amp; why to use Supler for web forms?</title><link>https://warski.org/blog/2015/06/when-why-to-use-supler-for-web-forms/</link><pubDate>Tue, 30 Jun 2015 14:07:03 +0000</pubDate><guid>https://warski.org/blog/2015/06/when-why-to-use-supler-for-web-forms/</guid><description>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.</description></item><item><title>MacWire 1.0 is here!</title><link>https://warski.org/blog/2015/04/macwire-1-0-is-here/</link><pubDate>Tue, 07 Apr 2015 13:20:30 +0000</pubDate><guid>https://warski.org/blog/2015/04/macwire-1-0-is-here/</guid><description>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.</description></item><item><title>Supler update: 0.3.0 release</title><link>https://warski.org/blog/2015/03/supler-update-0-3-0-release/</link><pubDate>Thu, 19 Mar 2015 12:21:50 +0000</pubDate><guid>https://warski.org/blog/2015/03/supler-update-0-3-0-release/</guid><description>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.</description></item><item><title>Quicklens: traversing options and lists</title><link>https://warski.org/blog/2015/03/quicklens-traversing-options-and-lists/</link><pubDate>Sat, 14 Mar 2015 16:52:37 +0000</pubDate><guid>https://warski.org/blog/2015/03/quicklens-traversing-options-and-lists/</guid><description>Quicklens is a small library which allows to modify deeply nested fields in case classes e.</description></item><item><title>Quicklens: modify deeply nested case class fields</title><link>https://warski.org/blog/2015/02/quicklens-modify-deeply-nested-case-class-fields/</link><pubDate>Sat, 28 Feb 2015 19:51:46 +0000</pubDate><guid>https://warski.org/blog/2015/02/quicklens-modify-deeply-nested-case-class-fields/</guid><description>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.</description></item><item><title>In today’s post-OO world, is dependency injection still relevant?</title><link>https://warski.org/blog/2015/02/in-todays-post-oo-world-is-dependency-injection-still-relevant/</link><pubDate>Mon, 23 Feb 2015 11:54:13 +0000</pubDate><guid>https://warski.org/blog/2015/02/in-todays-post-oo-world-is-dependency-injection-still-relevant/</guid><description>It’s 2015. Most of the new popular languages are more or less functional. The old ones, like Java, gain functional programming elements.</description></item><item><title>Supler 0.2.0: docs and features added, bugs removed</title><link>https://warski.org/blog/2015/01/supler-0-2-0-docs-and-features-added-bugs-removed/</link><pubDate>Fri, 30 Jan 2015 12:55:44 +0000</pubDate><guid>https://warski.org/blog/2015/01/supler-0-2-0-docs-and-features-added-bugs-removed/</guid><description>Supler is a library which makes writing complex forms easier. It has a server-side (Scala) and a client-side (JavaScript) component.</description></item><item><title>MacWire 0.8.0: towards 1.0, tagging, anonymous functions support</title><link>https://warski.org/blog/2015/01/macwire-0-8-0-towards-1-0-tagging-anonymous-functions-support/</link><pubDate>Tue, 20 Jan 2015 15:14:52 +0000</pubDate><guid>https://warski.org/blog/2015/01/macwire-0-8-0-towards-1-0-tagging-anonymous-functions-support/</guid><description>A couple of days ago MacWire 0.8.0 got released. It contains a couple of changes and new features.</description></item><item><title>Supler 0.1.0: complex forms made easier</title><link>https://warski.org/blog/2014/12/supler-0-1-0-complex-forms-made-easier/</link><pubDate>Tue, 16 Dec 2014 13:05:35 +0000</pubDate><guid>https://warski.org/blog/2014/12/supler-0-1-0-complex-forms-made-easier/</guid><description>Supler aims to make complex web forms development easier, without tying you to a web framework.</description></item><item><title>Clustering reactmq with akka-cluster</title><link>https://warski.org/blog/2014/11/clustering-reactmq-with-akka-cluster/</link><pubDate>Tue, 04 Nov 2014 13:05:42 +0000</pubDate><guid>https://warski.org/blog/2014/11/clustering-reactmq-with-akka-cluster/</guid><description>In the last two posts on reactmq, I described how to write a reactive, persistent message queue.</description></item><item><title>Introducing Supler: a Functional Reactive Form Library</title><link>https://warski.org/blog/2014/09/introducing-supler-a-functional-reactive-form-library/</link><pubDate>Wed, 17 Sep 2014 18:58:28 +0000</pubDate><guid>https://warski.org/blog/2014/09/introducing-supler-a-functional-reactive-form-library/</guid><description>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.</description></item><item><title>MacWire 0.7: dynamically accessing the object graph</title><link>https://warski.org/blog/2014/07/macwire-0-7-dynamically-accessing-the-object-graph/</link><pubDate>Tue, 22 Jul 2014 11:24:42 +0000</pubDate><guid>https://warski.org/blog/2014/07/macwire-0-7-dynamically-accessing-the-object-graph/</guid><description>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.</description></item><item><title>Making the Reactive Queue durable with Akka Persistence</title><link>https://warski.org/blog/2014/07/making-the-reactive-queue-durable-with-akka-persistence/</link><pubDate>Thu, 03 Jul 2014 12:17:32 +0000</pubDate><guid>https://warski.org/blog/2014/07/making-the-reactive-queue-durable-with-akka-persistence/</guid><description>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.</description></item><item><title>Evaluating persistent, replicated message queues (updated w/ Kafka)</title><link>https://warski.org/blog/2014/07/evaluating-persistent-replicated-message-queues/</link><pubDate>Tue, 01 Jul 2014 12:08:01 +0000</pubDate><guid>https://warski.org/blog/2014/07/evaluating-persistent-replicated-message-queues/</guid><description>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.</description></item><item><title>Benchmarking SQS</title><link>https://warski.org/blog/2014/06/benchmarking-sqs/</link><pubDate>Tue, 24 Jun 2014 12:05:33 +0000</pubDate><guid>https://warski.org/blog/2014/06/benchmarking-sqs/</guid><description>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.</description></item><item><title>Cluster-wide Java/Scala application deployments with Docker, Chef and Amazon OpsWorks</title><link>https://warski.org/blog/2014/06/cluster-wide-javascala-application-deployments-with-docker-chef-and-amazon-opsworks/</link><pubDate>Thu, 12 Jun 2014 11:50:45 +0000</pubDate><guid>https://warski.org/blog/2014/06/cluster-wide-javascala-application-deployments-with-docker-chef-and-amazon-opsworks/</guid><description>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.</description></item><item><title>Reactive Queue with Akka Reactive Streams</title><link>https://warski.org/blog/2014/06/reactive-queue-with-akka-reactive-streams/</link><pubDate>Tue, 10 Jun 2014 12:32:54 +0000</pubDate><guid>https://warski.org/blog/2014/06/reactive-queue-with-akka-reactive-streams/</guid><description>Update 15/09/2014: introduced API changes from akka-streams 0.7.
Update 30/10/2014: introduced API changes from akka-streams 0.</description></item><item><title>Codebrag: why post- and per- commit?</title><link>https://warski.org/blog/2014/05/codebrag-why-post-and-per-commit/</link><pubDate>Wed, 21 May 2014 10:56:59 +0000</pubDate><guid>https://warski.org/blog/2014/05/codebrag-why-post-and-per-commit/</guid><description>We have recently released version 2.0 of Codebrag, our code-review tool.
Why a new code-review tool in the first place?</description></item><item><title>Functional Discrete Optimization @ Coursera with Scala</title><link>https://warski.org/blog/2014/05/functional-discrete-optimization-coursera-with-scala/</link><pubDate>Tue, 13 May 2014 10:43:21 +0000</pubDate><guid>https://warski.org/blog/2014/05/functional-discrete-optimization-coursera-with-scala/</guid><description>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.</description></item><item><title>Spray server in a Docker container</title><link>https://warski.org/blog/2014/05/spray-server-docker-container/</link><pubDate>Tue, 06 May 2014 11:47:38 +0000</pubDate><guid>https://warski.org/blog/2014/05/spray-server-docker-container/</guid><description>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.</description></item><item><title>Inverse beacon positioning</title><link>https://warski.org/blog/2014/04/inverse-beacon-positioning/</link><pubDate>Thu, 24 Apr 2014 12:15:39 +0000</pubDate><guid>https://warski.org/blog/2014/04/inverse-beacon-positioning/</guid><description>Indoor positioning is a very popular topic recently, mostly due to the iBeacon technology promoted by Apple, and adopted by other vendors.</description></item><item><title>Makerland, hackaton and turtles</title><link>https://warski.org/blog/2014/03/makerland-hackaton-and-turtles/</link><pubDate>Fri, 21 Mar 2014 14:35:49 +0000</pubDate><guid>https://warski.org/blog/2014/03/makerland-hackaton-and-turtles/</guid><description>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)!</description></item><item><title>Big data: when single node is better than clustered</title><link>https://warski.org/blog/2014/03/big-data-when-single-node-is-better-than-clustered/</link><pubDate>Thu, 06 Mar 2014 13:22:44 +0000</pubDate><guid>https://warski.org/blog/2014/03/big-data-when-single-node-is-better-than-clustered/</guid><description>There’s a lot of hype about “big data” and a general trend to try to apply Hadoop to almost every problem.</description></item><item><title>Using Scala traits as modules, or the “Thin Cake” Pattern</title><link>https://warski.org/blog/2014/02/using-scala-traits-as-modules-or-the-thin-cake-pattern/</link><pubDate>Tue, 25 Feb 2014 13:07:28 +0000</pubDate><guid>https://warski.org/blog/2014/02/using-scala-traits-as-modules-or-the-thin-cake-pattern/</guid><description>I would like to describe a pure-Scala approach to modularity that we are successfully using in a couple of our Scala projects.</description></item><item><title>Using JavaCV with Scala and SBT</title><link>https://warski.org/blog/2014/01/using-javacv-with-sbt/</link><pubDate>Fri, 24 Jan 2014 15:40:40 +0000</pubDate><guid>https://warski.org/blog/2014/01/using-javacv-with-sbt/</guid><description>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.</description></item><item><title>How do iBeacons work?</title><link>https://warski.org/blog/2014/01/how-ibeacons-work/</link><pubDate>Mon, 13 Jan 2014 20:34:29 +0000</pubDate><guid>https://warski.org/blog/2014/01/how-ibeacons-work/</guid><description>iBeacons are certainly a trending topic recently. They allow indoor positioning, letting your phone know that you are in range of a beacon.</description></item><item><title>Traffic simulation game in Elm</title><link>https://warski.org/blog/2014/01/traffic-simulation-game-in-elm/</link><pubDate>Tue, 07 Jan 2014 12:08:10 +0000</pubDate><guid>https://warski.org/blog/2014/01/traffic-simulation-game-in-elm/</guid><description>A couple of weeks ago I read about Elm, a new functional language, which compiles to JavaScript and HTML.</description></item><item><title>BuildStuff 2013 is over – looking forward to ’14!</title><link>https://warski.org/blog/2013/12/buildstuff-2013-is-over-looking-forward-to-14/</link><pubDate>Tue, 17 Dec 2013 19:37:27 +0000</pubDate><guid>https://warski.org/blog/2013/12/buildstuff-2013-is-over-looking-forward-to-14/</guid><description>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 ;) ).</description></item><item><title>Using Amazon’s Elastic Map Reduce to compute recommendations with Apache Mahout 0.8</title><link>https://warski.org/blog/2013/10/using-amazons-elastic-map-reduce-to-compute-recommendations-with-apache-mahout-0-8/</link><pubDate>Tue, 15 Oct 2013 11:35:18 +0000</pubDate><guid>https://warski.org/blog/2013/10/using-amazons-elastic-map-reduce-to-compute-recommendations-with-apache-mahout-0-8/</guid><description>Apache Mahout is a “scalable machine learning library” which, among others, contains implementations of various single-node and distributed recommendation algorithms.</description></item><item><title>Creating an on-line recommender system with Apache Mahout</title><link>https://warski.org/blog/2013/10/creating-an-on-line-recommender-system-with-apache-mahout/</link><pubDate>Tue, 08 Oct 2013 14:54:51 +0000</pubDate><guid>https://warski.org/blog/2013/10/creating-an-on-line-recommender-system-with-apache-mahout/</guid><description>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.</description></item><item><title>MacWire 0.5: Interceptors</title><link>https://warski.org/blog/2013/10/macwire-0-5-interceptors/</link><pubDate>Tue, 01 Oct 2013 13:14:19 +0000</pubDate><guid>https://warski.org/blog/2013/10/macwire-0-5-interceptors/</guid><description>Interceptors are very useful for implementing cross-cutting concerns. Classic use-cases include security, logging or transaction support.</description></item><item><title>Java Zone 2013 trip report</title><link>https://warski.org/blog/2013/09/java-zone-2013-trip-report/</link><pubDate>Sun, 22 Sep 2013 11:26:46 +0000</pubDate><guid>https://warski.org/blog/2013/09/java-zone-2013-trip-report/</guid><description>This year I had the chance to attend JavaZone 2013. So far I mainly knew JavaZone from their conference trailers (e.</description></item><item><title>Automatic generation of delegate methods with Macro Annotations</title><link>https://warski.org/blog/2013/09/automatic-generation-of-delegate-methods-with-macro-annotations/</link><pubDate>Sat, 07 Sep 2013 12:03:37 +0000</pubDate><guid>https://warski.org/blog/2013/09/automatic-generation-of-delegate-methods-with-macro-annotations/</guid><description>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.</description></item><item><title>Dependency Injection in Play! with MacWire</title><link>https://warski.org/blog/2013/08/dependency-injection-in-play-with-macwire/</link><pubDate>Wed, 21 Aug 2013 17:05:37 +0000</pubDate><guid>https://warski.org/blog/2013/08/dependency-injection-in-play-with-macwire/</guid><description>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.</description></item><item><title>Verifying usage of 3rd party libraries using Veripacks</title><link>https://warski.org/blog/2013/08/verifying-usage-of-3rd-party-libraries-using-veripacks/</link><pubDate>Mon, 05 Aug 2013 18:16:38 +0000</pubDate><guid>https://warski.org/blog/2013/08/verifying-usage-of-3rd-party-libraries-using-veripacks/</guid><description>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.</description></item><item><title>Akka vs Storm</title><link>https://warski.org/blog/2013/06/akka-vs-storm/</link><pubDate>Tue, 25 Jun 2013 10:57:46 +0000</pubDate><guid>https://warski.org/blog/2013/06/akka-vs-storm/</guid><description>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.</description></item><item><title>Implementing factories in Scala &amp; MacWire 0.3</title><link>https://warski.org/blog/2013/06/implementing-factories-in-scala-macwire-0-3/</link><pubDate>Tue, 18 Jun 2013 10:47:38 +0000</pubDate><guid>https://warski.org/blog/2013/06/implementing-factories-in-scala-macwire-0-3/</guid><description>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.</description></item><item><title>ElasticMQ 0.7.0: long polling, non-blocking implementation using Akka and Spray</title><link>https://warski.org/blog/2013/06/elasticmq-0-7-0-long-polling-non-blocking-implementation-using-akka-and-spray/</link><pubDate>Thu, 06 Jun 2013 09:02:03 +0000</pubDate><guid>https://warski.org/blog/2013/06/elasticmq-0-7-0-long-polling-non-blocking-implementation-using-akka-and-spray/</guid><description>ElasticMQ 0.7.0, a message queueing system with an actor-based Scala and Amazon SQS-compatible interfaces, was just released.</description></item><item><title>Typed ask for Akka</title><link>https://warski.org/blog/2013/05/typed-ask-for-akka/</link><pubDate>Tue, 21 May 2013 09:42:25 +0000</pubDate><guid>https://warski.org/blog/2013/05/typed-ask-for-akka/</guid><description>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.</description></item><item><title>MacWire 0.2: Scopes are simple!</title><link>https://warski.org/blog/2013/04/macwire-0-2-scopes-are-simple/</link><pubDate>Thu, 25 Apr 2013 18:14:51 +0000</pubDate><guid>https://warski.org/blog/2013/04/macwire-0-2-scopes-are-simple/</guid><description>MacWire generates new instance creation code of given classes, using values in the enclosing type for constructor parameters, with the help of Scala Macros.</description></item><item><title>Per-commit e-mail GitHub notifications</title><link>https://warski.org/blog/2013/04/per-commit-e-mail-github-notifications/</link><pubDate>Tue, 16 Apr 2013 14:34:59 +0000</pubDate><guid>https://warski.org/blog/2013/04/per-commit-e-mail-github-notifications/</guid><description>One thing that I miss in GitHub is the ability to get e-mail notifications on each push/commit.</description></item><item><title>MacWire 0.1: Framework-less Dependency Injection with Scala Macros</title><link>https://warski.org/blog/2013/04/macwire-0-1-framework-less-dependency-injection-with-scala-macros/</link><pubDate>Thu, 04 Apr 2013 11:07:53 +0000</pubDate><guid>https://warski.org/blog/2013/04/macwire-0-1-framework-less-dependency-injection-with-scala-macros/</guid><description>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.</description></item><item><title>How to replace a build module with Veripacks</title><link>https://warski.org/blog/2013/03/how-to-replace-a-build-module-with-veripacks/</link><pubDate>Tue, 26 Mar 2013 21:05:34 +0000</pubDate><guid>https://warski.org/blog/2013/03/how-to-replace-a-build-module-with-veripacks/</guid><description>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).</description></item><item><title>Dependency injection with Scala macros: auto-wiring</title><link>https://warski.org/blog/2013/03/dependency-injection-with-scala-macros-auto-wiring/</link><pubDate>Thu, 14 Mar 2013 21:33:04 +0000</pubDate><guid>https://warski.org/blog/2013/03/dependency-injection-with-scala-macros-auto-wiring/</guid><description>You can look at dependency injection as a fancy name for passing parameters to a function (or constructor arguments to a constructor).</description></item><item><title>Veripacks 0.3: importing packages (transitively, of course)</title><link>https://warski.org/blog/2013/03/veripacks-0-3-importing-packages-transitively-of-course/</link><pubDate>Tue, 12 Mar 2013 19:33:36 +0000</pubDate><guid>https://warski.org/blog/2013/03/veripacks-0-3-importing-packages-transitively-of-course/</guid><description>Previous versions of Veripacks focused on defining what classes are visible outside of a package hierarchy (exporting).</description></item><item><title>xsbt-proguard-plugin – taking over, new release</title><link>https://warski.org/blog/2013/02/xsbt-proguard-plugin-taking-over-new-release/</link><pubDate>Tue, 19 Feb 2013 14:20:56 +0000</pubDate><guid>https://warski.org/blog/2013/02/xsbt-proguard-plugin-taking-over-new-release/</guid><description>I recently took over the maintenance of xsbt-proguard-plugin from siasia. The plugin lets you create single “fat” jars from your project, using the Proguard library.</description></item><item><title>Veripacks 0.2: exporting subpackages</title><link>https://warski.org/blog/2013/02/veripacks-0-2-exporting-subpackages/</link><pubDate>Sun, 03 Feb 2013 13:35:31 +0000</pubDate><guid>https://warski.org/blog/2013/02/veripacks-0-2-exporting-subpackages/</guid><description>Veripacks 0.1 allowed to specify which classes should be exported from a package hierarchy, by using a simple @Export annotation, and later verify that the specification is met.</description></item><item><title>Dry parameter names</title><link>https://warski.org/blog/2013/01/dry-parameter-names/</link><pubDate>Sat, 26 Jan 2013 18:56:34 +0000</pubDate><guid>https://warski.org/blog/2013/01/dry-parameter-names/</guid><description>How often do you see code like this, especially when using dependency injection, single-responsibility principle, and other “good practices”?</description></item><item><title>Updating to Scala 2.10: ElasticMQ and scala-macro-debug</title><link>https://warski.org/blog/2013/01/updating-to-scala-2-10-elasticmq-and-scala-macro-debug/</link><pubDate>Mon, 21 Jan 2013 18:37:17 +0000</pubDate><guid>https://warski.org/blog/2013/01/updating-to-scala-2-10-elasticmq-and-scala-macro-debug/</guid><description>As Scala 2.10 was released some time ago, it is high time to update the projects using 2.</description></item><item><title>Veripacks 0.1 – Verify Package Specifications</title><link>https://warski.org/blog/2013/01/veripacks-0-1-verify-package-specifications/</link><pubDate>Sat, 05 Jan 2013 18:31:57 +0000</pubDate><guid>https://warski.org/blog/2013/01/veripacks-0-1-verify-package-specifications/</guid><description>Using some free time during my Christmas &amp;amp; New Year break, I worked on a new project, which implements some of the ideas from my earlier blog “Let’s turn packages into a module system”.</description></item><item><title>Starting with Scala Macros: a short tutorial</title><link>https://warski.org/blog/2012/12/starting-with-scala-macros-a-short-tutorial/</link><pubDate>Sun, 02 Dec 2012 19:22:56 +0000</pubDate><guid>https://warski.org/blog/2012/12/starting-with-scala-macros-a-short-tutorial/</guid><description>Using some time during the weekend, I decided to finally explore one the new features in the coming Scala 2.</description></item><item><title>Event streaming with MongoDB</title><link>https://warski.org/blog/2012/11/event-streaming-with-mongodb/</link><pubDate>Tue, 27 Nov 2012 13:41:24 +0000</pubDate><guid>https://warski.org/blog/2012/11/event-streaming-with-mongodb/</guid><description>MongoDB is a really great “NoSQL” database, with a very wide range of applications. In one project that we are developing at SoftwareMill, we used it as a replicated event storage, from which we stream the events to other components.</description></item><item><title>ElasticMQ is now synced to Maven central</title><link>https://warski.org/blog/2012/11/elasticmq-is-now-synced-to-maven-central/</link><pubDate>Mon, 19 Nov 2012 11:41:53 +0000</pubDate><guid>https://warski.org/blog/2012/11/elasticmq-is-now-synced-to-maven-central/</guid><description>Thanks to Sonatype OSS repositories, ElasticMQ version 0.6.1 is now synced to central. All of the artifacts, except the standalone server (which depends on Ostrich, which isn’t available in the central repo) are synchronized.</description></item><item><title>Let’s turn packages into a module system!</title><link>https://warski.org/blog/2012/11/lets-turn-packages-into-a-module-system/</link><pubDate>Thu, 08 Nov 2012 19:22:30 +0000</pubDate><guid>https://warski.org/blog/2012/11/lets-turn-packages-into-a-module-system/</guid><description>Many projects are divided into modules/subprojects using the build system (Maven, Gradle, SBT …); and writing modular code is generally a Good Thing.</description></item><item><title>ElasticMQ 0.6: batch operations, strict/relaxed SQS-compatibility mode</title><link>https://warski.org/blog/2012/10/elasticmq-0-6-batch-operations-strictrelaxed-sqs-compatibility-mode/</link><pubDate>Sat, 20 Oct 2012 11:49:53 +0000</pubDate><guid>https://warski.org/blog/2012/10/elasticmq-0-6-batch-operations-strictrelaxed-sqs-compatibility-mode/</guid><description>Summer is definitely over, so it’s about time to release a new version of ElasticMQ (0.</description></item><item><title>Unexpected problems with Apache and mod_rewrite under high load</title><link>https://warski.org/blog/2012/09/unexpected-problems-with-apache-and-mod_rewrite-under-high-load/</link><pubDate>Tue, 18 Sep 2012 09:44:33 +0000</pubDate><guid>https://warski.org/blog/2012/09/unexpected-problems-with-apache-and-mod_rewrite-under-high-load/</guid><description>In one of the projects that we are currently working on we have a fairly typical setup with one server (Apache with mod_rewrite) proxying traffic to backend servers.</description></item><item><title>Missing OO and FP bridge in Scala</title><link>https://warski.org/blog/2012/08/missing-oo-and-fp-bridge-in-scala/</link><pubDate>Sat, 18 Aug 2012 11:09:38 +0000</pubDate><guid>https://warski.org/blog/2012/08/missing-oo-and-fp-bridge-in-scala/</guid><description>Scala blends functional and object-oriented programming in many nice ways. You can use both FP an OO-like constructs whichever fits the current problem better.</description></item><item><title>Connecting a piano pedal to a computer</title><link>https://warski.org/blog/2012/08/connecting-a-piano-pedal-to-a-computer/</link><pubDate>Wed, 15 Aug 2012 13:58:40 +0000</pubDate><guid>https://warski.org/blog/2012/08/connecting-a-piano-pedal-to-a-computer/</guid><description>It’s good to do something different once in a while. In my case, “different” still means things involving a computer – but far from the Java&amp;amp;Scala programming that I do daily.</description></item><item><title>Generational caching and Envers</title><link>https://warski.org/blog/2012/07/generational-caching-and-envers/</link><pubDate>Fri, 13 Jul 2012 11:47:12 +0000</pubDate><guid>https://warski.org/blog/2012/07/generational-caching-and-envers/</guid><description>Konrad recently shared on our company’s technical room an interesting article on how caching is done is a big polish social network, nk.</description></item><item><title>Implementing message replication in ElasticMQ with JGroups</title><link>https://warski.org/blog/2012/06/implementing-message-replication-in-elasticmq-with-jgroups/</link><pubDate>Tue, 12 Jun 2012 19:10:34 +0000</pubDate><guid>https://warski.org/blog/2012/06/implementing-message-replication-in-elasticmq-with-jgroups/</guid><description>ElasticMQ is a messaging server, with a Scala, Java, and an Amazon SQS-compatible interface. It supports guaranteed messaging by replicating the messages across a cluster of servers, and message persistence with journalling.</description></item><item><title>Hibernate 4.1.4: Envers tests run&amp;pass on multiple DBs</title><link>https://warski.org/blog/2012/05/hibernate-4-1-4-envers-tests-runpass-on-multiple-dbs/</link><pubDate>Thu, 31 May 2012 08:59:15 +0000</pubDate><guid>https://warski.org/blog/2012/05/hibernate-4-1-4-envers-tests-runpass-on-multiple-dbs/</guid><description>Envers is an entity auditing framework, making it possible to store and query for historical data.</description></item><item><title>ElasticMQ 0.5: journalling, stand-alone server</title><link>https://warski.org/blog/2012/05/elasticmq-0-5-journalling-stand-alone-server/</link><pubDate>Tue, 29 May 2012 05:29:12 +0000</pubDate><guid>https://warski.org/blog/2012/05/elasticmq-0-5-journalling-stand-alone-server/</guid><description>ElasticMQ is a message queue server, with Scala, Java, and an Amazon SQS-compatible interface. It also supports guaranteed messaging via replicating the messages across a cluster of servers.</description></item><item><title>Frameworks vs Libraries as Inheritance vs Composition?</title><link>https://warski.org/blog/2012/04/frameworks-vs-libraries-as-inheritance-vs-composition/</link><pubDate>Tue, 17 Apr 2012 06:04:21 +0000</pubDate><guid>https://warski.org/blog/2012/04/frameworks-vs-libraries-as-inheritance-vs-composition/</guid><description>For quite some time inheritance was the dominant model of structuring programs in OO languages like Java.</description></item><item><title>ElasticMQ 0.4: message replication</title><link>https://warski.org/blog/2012/03/elasticmq-0-4-message-replication/</link><pubDate>Wed, 28 Mar 2012 05:52:47 +0000</pubDate><guid>https://warski.org/blog/2012/03/elasticmq-0-4-message-replication/</guid><description>ElasticMQ is a message queue system, with Java, Scala and an Amazon SQS-compatible REST interface.</description></item><item><title>ElasticMQ 0.3: new API, new in-memory storage</title><link>https://warski.org/blog/2012/02/elasticmq-0-3-new-api-new-in-memory-storage/</link><pubDate>Mon, 06 Feb 2012 20:52:35 +0000</pubDate><guid>https://warski.org/blog/2012/02/elasticmq-0-3-new-api-new-in-memory-storage/</guid><description>ElasticMQ 0.3 just got released! ElasticMQ is a simple message queue system, which exposes both a native and an Amazon SQS-compatible interface.</description></item><item><title>ElasticMQ 0.2 – support for delayed queues and messages</title><link>https://warski.org/blog/2012/01/elasticmq-0-2-support-for-delayed-queues-and-messages/</link><pubDate>Thu, 12 Jan 2012 16:52:54 +0000</pubDate><guid>https://warski.org/blog/2012/01/elasticmq-0-2-support-for-delayed-queues-and-messages/</guid><description>Time to start blogging in 2012 :)
I just released version 0.2 of ElasticMQ – a simple message queue system, which implements the Amazon SQS interface.</description></item><item><title>ElasticMQ 0.1 released!</title><link>https://warski.org/blog/2011/10/elasticmq-0-1-released/</link><pubDate>Wed, 12 Oct 2011 10:04:08 +0000</pubDate><guid>https://warski.org/blog/2011/10/elasticmq-0-1-released/</guid><description>ElasticMQ is a simple messaging system, exposing an SQS-compatible REST interface. It can run using an in-memory H2 database (ideal for testing), or backed by a normal database (e.</description></item><item><title>Envers bundled with JBoss AS 7.0.2!</title><link>https://warski.org/blog/2011/09/envers-bundled-with-jboss-as-7-0-2/</link><pubDate>Wed, 28 Sep 2011 20:05:03 +0000</pubDate><guid>https://warski.org/blog/2011/09/envers-bundled-with-jboss-as-7-0-2/</guid><description>Using Envers is now even easier! Since version 7.0.2, Envers comes bundled with JBoss Application Server.</description></item><item><title>How to handle inheritance and @Audited?</title><link>https://warski.org/blog/2011/09/how-to-handle-inheritance-and-audited/</link><pubDate>Thu, 08 Sep 2011 12:13:05 +0000</pubDate><guid>https://warski.org/blog/2011/09/how-to-handle-inheritance-and-audited/</guid><description>Some Envers uses had problems because of the limited flexibility in specifying which fields from superclasses (especially those annotated with @MappedSuperclass) should be audited or not.</description></item><item><title>Blending Ruby (on Rails) and CDI on OpenBlend 2011</title><link>https://warski.org/blog/2011/09/blending-ruby-on-rails-and-cdi-on-openblend-2011/</link><pubDate>Thu, 08 Sep 2011 08:56:57 +0000</pubDate><guid>https://warski.org/blog/2011/09/blending-ruby-on-rails-and-cdi-on-openblend-2011/</guid><description>I will have the pleasure to speak on OpenBlend 2011, in exactly a week: 15th September 2011, which will take place in Ljubljana, Slovenia.</description></item><item><title>Modules, modules, modules …</title><link>https://warski.org/blog/2011/08/modules-modules-modules/</link><pubDate>Tue, 30 Aug 2011 18:34:39 +0000</pubDate><guid>https://warski.org/blog/2011/08/modules-modules-modules/</guid><description>I think everybody will agree that writing modular applications and modularity in general is a good thing.</description></item><item><title>Introducing ElasticMQ: Scala SQS alternative</title><link>https://warski.org/blog/2011/08/introducing-elasticmq-scala-sqs-alternative/</link><pubDate>Tue, 16 Aug 2011 05:22:48 +0000</pubDate><guid>https://warski.org/blog/2011/08/introducing-elasticmq-scala-sqs-alternative/</guid><description>Wanting to explore Scala and some new Scala/Java libraries I started writing ElasticMQ. It is a simple message queueing system, following closely Amazon SQS semantics and exposing a REST SQS-like interface.</description></item><item><title>Using Envers with AS7</title><link>https://warski.org/blog/2011/08/using-envers-with-as7/</link><pubDate>Thu, 04 Aug 2011 05:42:00 +0000</pubDate><guid>https://warski.org/blog/2011/08/using-envers-with-as7/</guid><description>Recently I tried deploying a web application which uses Envers into AS7, but unfortunately I encountered some problems (see the forum discussion).</description></item><item><title>Trying to understand CAP</title><link>https://warski.org/blog/2011/07/trying-to-understand-cap/</link><pubDate>Tue, 19 Jul 2011 11:38:28 +0000</pubDate><guid>https://warski.org/blog/2011/07/trying-to-understand-cap/</guid><description>The CAP theorem, stated by Brewer and proved by Gilbert and Lynch specifies a property of distributed systems.</description></item><item><title>Envers: track entity types changed in revisions</title><link>https://warski.org/blog/2011/07/envers-track-entity-types-changed-in-revisions/</link><pubDate>Mon, 04 Jul 2011 10:02:57 +0000</pubDate><guid>https://warski.org/blog/2011/07/envers-track-entity-types-changed-in-revisions/</guid><description>Łukasz Antoniak, who is a regular contributor to Envers (thanks!), recently finished working on HHH-5580, a feature which enables you to quickly retrieve the entity types that have been modified in a revision, by optionally storing them in a dedicated table.</description></item><item><title>Static typing is a great static analysis tool</title><link>https://warski.org/blog/2011/06/static-typing-is-a-great-static-analysis-tool/</link><pubDate>Mon, 27 Jun 2011 15:48:25 +0000</pubDate><guid>https://warski.org/blog/2011/06/static-typing-is-a-great-static-analysis-tool/</guid><description>Statically-typed languages are great because, well, they have static typing. However very often developing using a dynamically-typed language is much more convenient.</description></item><item><title>After Confitura 2011</title><link>https://warski.org/blog/2011/06/after-confitura-2011/</link><pubDate>Mon, 13 Jun 2011 14:31:13 +0000</pubDate><guid>https://warski.org/blog/2011/06/after-confitura-2011/</guid><description>Confitura 2011 went past very quickly, it was a great conference and a great occasion to meet with the polish Java community on the SPOINA after-party.</description></item><item><title>CDI Portable Extensions on Confitura 2011</title><link>https://warski.org/blog/2011/06/cdi-portable-extensions-on-confitura-2011/</link><pubDate>Wed, 01 Jun 2011 18:08:39 +0000</pubDate><guid>https://warski.org/blog/2011/06/cdi-portable-extensions-on-confitura-2011/</guid><description>In less than two weeks (11th June) I will have the opportunity to present a talk on CDI &amp;amp; Portable Extensions during the Confitura 2011 conference, organized by the Warsaw JUG.</description></item><item><title>Envers &amp; TorqueBox on RivieraJUG – May 6th</title><link>https://warski.org/blog/2011/05/envers-torquebox-on-rivierajug-may-6th/</link><pubDate>Mon, 02 May 2011 06:13:49 +0000</pubDate><guid>https://warski.org/blog/2011/05/envers-torquebox-on-rivierajug-may-6th/</guid><description>This Friday (6th of May) I will have the pleasure to present two talks: one on Envers and one on Torquebox, thanks to an invitation from the RivieraJUG.</description></item><item><title>DI in Scala: Cake Pattern pros &amp; cons</title><link>https://warski.org/blog/2011/04/di-in-scala-cake-pattern-pros-cons/</link><pubDate>Fri, 29 Apr 2011 06:14:08 +0000</pubDate><guid>https://warski.org/blog/2011/04/di-in-scala-cake-pattern-pros-cons/</guid><description>I’ve been looking at alternatives for java-style DI and DI containers which would use pure Scala; a promising candidate is the Cake Pattern (see my earlier blog post for information on how the Cake Pattern works).</description></item><item><title>Envers and Hibernate 4.0.0.Alpha2 – automatic listener registration</title><link>https://warski.org/blog/2011/04/envers-and-hibernate-4-0-0-alpha2-automatic-listener-registration/</link><pubDate>Mon, 18 Apr 2011 06:46:23 +0000</pubDate><guid>https://warski.org/blog/2011/04/envers-and-hibernate-4-0-0-alpha2-automatic-listener-registration/</guid><description>Development of Hibernate4 is well under way, with the Alpha2 version released recently. It contains one major improvement which is quite significant for Envers, namely Integrators (see HHH-5562 &amp;amp; HHH-6081).</description></item><item><title>Ruby on Rails + CDI/Weld on Torquebox example app</title><link>https://warski.org/blog/2011/03/ruby-on-rails-cdiweld-on-torquebox-example-app/</link><pubDate>Fri, 11 Mar 2011 12:04:30 +0000</pubDate><guid>https://warski.org/blog/2011/03/ruby-on-rails-cdiweld-on-torquebox-example-app/</guid><description>For almost a year we’ve been successfully using Torquebox together with CDI/Weld as a base for two of our services: JBison and Circular.</description></item><item><title>Timing interceptor for CDI/Weld</title><link>https://warski.org/blog/2011/03/timing-interceptor-for-cdiweld/</link><pubDate>Tue, 01 Mar 2011 15:31:42 +0000</pubDate><guid>https://warski.org/blog/2011/03/timing-interceptor-for-cdiweld/</guid><description>Lately we did some performance tuning, and in order to find out which methods are the hotspots I wrote a simple timing interceptor (it uses some code from a Seam forum post by Tobias Hill).</description></item><item><title>Dependency Injection in Scala: Extending the Cake Pattern</title><link>https://warski.org/blog/2010/12/di-in-scala-cake-pattern/</link><pubDate>Tue, 14 Dec 2010 09:38:42 +0000</pubDate><guid>https://warski.org/blog/2010/12/di-in-scala-cake-pattern/</guid><description>Continuing the mini-series on Dependency Injection (see my previous blogs: problems with DI, assisted inject for CDI and improving assisted inject), I took a look at how DI is handled in Scala.</description></item><item><title>Improving autofactories/assisted inject</title><link>https://warski.org/blog/2010/12/improving-autofactoriesassisted-inject/</link><pubDate>Tue, 07 Dec 2010 14:22:07 +0000</pubDate><guid>https://warski.org/blog/2010/12/improving-autofactoriesassisted-inject/</guid><description>In my two previous posts I wrote about some problems with DI and a solution to part of those problems: assisted inject (as known in Guice)/autofactories (my implementation for CDI).</description></item><item><title>DB test: run tests with a database using Arquillian</title><link>https://warski.org/blog/2010/11/db-test-run-tests-with-a-database-using-arquillian/</link><pubDate>Tue, 30 Nov 2010 13:38:56 +0000</pubDate><guid>https://warski.org/blog/2010/11/db-test-run-tests-with-a-database-using-arquillian/</guid><description>DB test is a set of helper classes which let you run tests that use a database.</description></item><item><title>DI and OO: Assisted Inject in CDI / Weld</title><link>https://warski.org/blog/2010/10/di-and-oo-assisted-inject-in-cdi-weld/</link><pubDate>Tue, 26 Oct 2010 15:22:36 +0000</pubDate><guid>https://warski.org/blog/2010/10/di-and-oo-assisted-inject-in-cdi-weld/</guid><description>My last post sparked quite a lot of interest – thanks for all the comments both on the blog and on dzone!</description></item><item><title>Dependency injection discourages object-oriented programming?</title><link>https://warski.org/blog/2010/10/dependency-injection-discourages-object-oriented-programming/</link><pubDate>Wed, 13 Oct 2010 16:05:41 +0000</pubDate><guid>https://warski.org/blog/2010/10/dependency-injection-discourages-object-oriented-programming/</guid><description>Suppose you have a Product entity and that you want to implement a method which sends the product to a customer (let’s call it ship).</description></item><item><title>New Envers contributor</title><link>https://warski.org/blog/2010/09/new-envers-contributor/</link><pubDate>Mon, 27 Sep 2010 05:55:34 +0000</pubDate><guid>https://warski.org/blog/2010/09/new-envers-contributor/</guid><description>I’d like to welcome Erik-Berndt Scheper as our new Envers contributor. His first commit was yesterday (rev 20717 and 20718), resolving the HHH-5560 issue.</description></item><item><title>Envers at JBoss One Day Talk 2010</title><link>https://warski.org/blog/2010/09/envers-at-jboss-one-day-talk-2010/</link><pubDate>Sat, 25 Sep 2010 08:44:44 +0000</pubDate><guid>https://warski.org/blog/2010/09/envers-at-jboss-one-day-talk-2010/</guid><description>I will be presenting Envers (data auditing in Hibernate) at JBoss One Day Talk 2010 in Munich, on the 1st of October.</description></item><item><title>Envers query performance improvements with end-revision column</title><link>https://warski.org/blog/2010/09/261/</link><pubDate>Fri, 24 Sep 2010 07:47:50 +0000</pubDate><guid>https://warski.org/blog/2010/09/261/</guid><description>Thanks to the patch provided by Matthew B. Jones, and improved by Erik-Berndt Scheper, the new Envers ValidTimeAuditStrategy (which will be renamed to ValidityAuditStrategy in upcoming releases) now leverages the additional information held in the end-revision column when creating queries; they no longer need to use subselects to find an entity at a given revision (JIRA issue HHH-5372).</description></item><item><title>Envers 1.2.3-hibernate-3.3 – backport release</title><link>https://warski.org/blog/2010/08/envers-1-2-3-hibernate-3-3-backport-release/</link><pubDate>Sat, 21 Aug 2010 15:23:52 +0000</pubDate><guid>https://warski.org/blog/2010/08/envers-1-2-3-hibernate-3-3-backport-release/</guid><description>Hernan Chanfreau backported some of the recent Envers changes and fixes from the 3.5 branch. The detailed list of the backported issues can be found in this forum post.</description></item><item><title>New features in cdi-ext</title><link>https://warski.org/blog/2010/08/new-features-in-cdi-ext/</link><pubDate>Mon, 02 Aug 2010 18:28:15 +0000</pubDate><guid>https://warski.org/blog/2010/08/new-features-in-cdi-ext/</guid><description>Tomek Szymański just commited two new features to cdi-ext.
The first is the ability to secure JSF pages when using the Nav component to handle navigation (more on it here).</description></item><item><title>Ruby on Rails + CDI? Why not! Enter TorqueBox + Weld</title><link>https://warski.org/blog/2010/07/ruby-on-rails-cdi-why-not-enter-torquebox-weld/</link><pubDate>Tue, 27 Jul 2010 12:07:33 +0000</pubDate><guid>https://warski.org/blog/2010/07/ruby-on-rails-cdi-why-not-enter-torquebox-weld/</guid><description>I guess many people are often “unsatisfied” with how JSF works and how much time it sometimes takes to do a simple thing.</description></item><item><title>Initial valid-time support in Envers</title><link>https://warski.org/blog/2010/07/initial-valid-time-support-in-envers/</link><pubDate>Fri, 02 Jul 2010 12:12:42 +0000</pubDate><guid>https://warski.org/blog/2010/07/initial-valid-time-support-in-envers/</guid><description>I just commited initial support for valid-time auditing in Envers, a feature that a lot of users has been (directly or indirectly) asking for.</description></item><item><title>NEnvers</title><link>https://warski.org/blog/2010/07/nenvers/</link><pubDate>Thu, 01 Jul 2010 17:51:01 +0000</pubDate><guid>https://warski.org/blog/2010/07/nenvers/</guid><description>If you are a .NET and NHibernate user, soon you’ll be able to use Envers in your project!</description></item><item><title>Object Services in Scala</title><link>https://warski.org/blog/2010/06/object-services-in-scala/</link><pubDate>Mon, 21 Jun 2010 16:39:46 +0000</pubDate><guid>https://warski.org/blog/2010/06/object-services-in-scala/</guid><description>Using Scala’s implicits it’s possible to implement Object Services in a much more “user-friendly” way. Just to remind, the goal is to extend a class hierarchy with a method, polymorphically.</description></item><item><title>Object Services, or bridging anemic and rich models, in CDI/Weld</title><link>https://warski.org/blog/2010/05/object-services-or-bridging-anemic-and-rich-models-in-cdiweld/</link><pubDate>Thu, 27 May 2010 09:43:31 +0000</pubDate><guid>https://warski.org/blog/2010/05/object-services-or-bridging-anemic-and-rich-models-in-cdiweld/</guid><description>Rich domain models are certainly a nice, object-oriented idea, but I always had one problem with them: what if they become bloated with completely unrelated methods?</description></item><item><title>CDI &amp; Weld Extensions in Git</title><link>https://warski.org/blog/2010/05/cdi-weld-extensions-in-git/</link><pubDate>Mon, 17 May 2010 19:37:46 +0000</pubDate><guid>https://warski.org/blog/2010/05/cdi-weld-extensions-in-git/</guid><description>Hello,
I’ve created a new cdiext project at github, initially with two extensions:
Stackable Security Interceptors, about which I blogged here and here.</description></item><item><title>JSR-308, checkers framework and static analysis on GeeCON</title><link>https://warski.org/blog/2010/04/jsr-308-checkers-framework-and-static-analysis-on-geecon/</link><pubDate>Mon, 26 Apr 2010 17:58:50 +0000</pubDate><guid>https://warski.org/blog/2010/04/jsr-308-checkers-framework-and-static-analysis-on-geecon/</guid><description>I’ll be speaking about the JSR-308 specification (annotations on java types), which will be part of Java 7, on the GeeCON conference, which will take place from the 13th till the 14th of May 2010 in Poznan, Poland.</description></item><item><title>Extending the security interceptor for Weld/JSF2</title><link>https://warski.org/blog/2010/04/extending-the-security-interceptor-for-weldjsf2/</link><pubDate>Tue, 13 Apr 2010 09:22:52 +0000</pubDate><guid>https://warski.org/blog/2010/04/extending-the-security-interceptor-for-weldjsf2/</guid><description>In my previous post, I described how to create a simple security interceptor, which checks conditions defined using EL expressions, e.</description></item><item><title>Hibernate 3.5-Final, Envers included, released!</title><link>https://warski.org/blog/2010/04/hibernate-3-5-final-envers-included-released/</link><pubDate>Thu, 01 Apr 2010 06:33:05 +0000</pubDate><guid>https://warski.org/blog/2010/04/hibernate-3-5-final-envers-included-released/</guid><description>Hibernate 3.5 was just released; congratulations to Steve and the whole team!
It’s the first final Hibernate release that includes Envers.</description></item><item><title>Simple security interceptor in Weld/JSF2</title><link>https://warski.org/blog/2010/03/simple-security-interceptor-in-weldjsf2/</link><pubDate>Wed, 31 Mar 2010 13:52:30 +0000</pubDate><guid>https://warski.org/blog/2010/03/simple-security-interceptor-in-weldjsf2/</guid><description>Waiting for the Seam3 security module, I wrote a simple security interceptor (inspired by the Seam2 security annotation).</description></item><item><title>JSF2 navigation: post->redirect->get</title><link>https://warski.org/blog/2010/03/jsf2-navigation-post-redirect-get/</link><pubDate>Thu, 11 Mar 2010 20:25:07 +0000</pubDate><guid>https://warski.org/blog/2010/03/jsf2-navigation-post-redirect-get/</guid><description>JSF2 improves a lot both how navigation can be done (you can now return a view id from an action method, no need to describe every navigation case in faces-config.</description></item><item><title>Projects Using Envers wikipage</title><link>https://warski.org/blog/2010/02/projects-using-envers-wikipage/</link><pubDate>Mon, 01 Feb 2010 20:07:24 +0000</pubDate><guid>https://warski.org/blog/2010/02/projects-using-envers-wikipage/</guid><description>I just created a new “Projects Using Envers” wikipage; so if you are using Envers in your project, make sure to add it to the list!</description></item><item><title>Envers 1.2.2 released!</title><link>https://warski.org/blog/2009/12/envers-122-released/</link><pubDate>Fri, 18 Dec 2009 12:17:59 +0000</pubDate><guid>https://warski.org/blog/2009/12/envers-122-released/</guid><description>After quite a long break, I’m happy to announce a new release of Envers (available on the downloads page, or via Maven).</description></item><item><title>Dependency Injection and replacing dependencies in CDI/Weld</title><link>https://warski.org/blog/2009/12/dependency-injection-and-replacing-dependencies-in-cdiweld/</link><pubDate>Wed, 16 Dec 2009 21:37:27 +0000</pubDate><guid>https://warski.org/blog/2009/12/dependency-injection-and-replacing-dependencies-in-cdiweld/</guid><description>From time to time, in a system I develop, which uses EJB3 beans as the basic “component model”, I have a need to do some operations using a new entity manager (but still in the same transaction).</description></item><item><title>Nonnull-check generator: a scala compiler plugin</title><link>https://warski.org/blog/2009/10/nonnull-check-generator-a-scala-compiler-plugin/</link><pubDate>Thu, 15 Oct 2009 15:04:45 +0000</pubDate><guid>https://warski.org/blog/2009/10/nonnull-check-generator-a-scala-compiler-plugin/</guid><description>Recently I played a bit with compiler plugins for Scala.
My goal is to write a plugin which would generate checks in code for methods annotated with JSR305 annotations.</description></item><item><title>Typestate checker – checking iterators</title><link>https://warski.org/blog/2009/09/typestate-checker-checking-iterators/</link><pubDate>Wed, 23 Sep 2009 17:02:54 +0000</pubDate><guid>https://warski.org/blog/2009/09/typestate-checker-checking-iterators/</guid><description>In the new 0.2.2 release of the typestate checker (an extension to the JSR308 checkers framework), you can now specify a state, to which an object transits, if a method returns true or false using the afterTrue and afterFalse elements in state annotations.</description></item><item><title>Javarsovia, static analysis and annotations</title><link>https://warski.org/blog/2009/07/javarsovia-static-analysis-and-annotations/</link><pubDate>Thu, 02 Jul 2009 19:15:32 +0000</pubDate><guid>https://warski.org/blog/2009/07/javarsovia-static-analysis-and-annotations/</guid><description>If you’ll be in Warsaw this weekend, and if you speak polish, be sure not to miss Javarsovia, a one-day conference organized by the Warsaw JUG.</description></item><item><title>Envers on Jazoon</title><link>https://warski.org/blog/2009/06/envers-on-jazoon/</link><pubDate>Sun, 21 Jun 2009 09:15:57 +0000</pubDate><guid>https://warski.org/blog/2009/06/envers-on-jazoon/</guid><description>If you’ll be attending Jazoon next week, be sure not to miss the Envers presentation! It will take place on Wednesday (24th July), at 4pm (here are the presentation details).</description></item><item><title>Envers 1.2.1.GA released</title><link>https://warski.org/blog/2009/06/envers-121ga-released/</link><pubDate>Sat, 06 Jun 2009 08:44:18 +0000</pubDate><guid>https://warski.org/blog/2009/06/envers-121ga-released/</guid><description>Yesterday I uploaded a new release of Envers, 1.2.1.GA. It is mainly a bugfix release, but there is also one new feature.</description></item><item><title>StaticAccess detector for FindBugs</title><link>https://warski.org/blog/2009/05/staticaccess-detector-for-findbugs/</link><pubDate>Mon, 11 May 2009 17:30:19 +0000</pubDate><guid>https://warski.org/blog/2009/05/staticaccess-detector-for-findbugs/</guid><description>The StaticAccess detector is a FindBugs plugin, which lets you verify that methods do not rely on static (global) state, that is, that they don’t read or write static variables which aren’t constant.</description></item><item><title>New features in Typestate Checker</title><link>https://warski.org/blog/2009/04/new-features-in-typestate-checker/</link><pubDate>Tue, 14 Apr 2009 18:51:35 +0000</pubDate><guid>https://warski.org/blog/2009/04/new-features-in-typestate-checker/</guid><description>I’ve uploaded a new version (0.2) of the typestate checker (for an introduction, see this blog post), which contains bug fixes and much improved exception handling.</description></item><item><title>Envers 1.2.0.GA in Maven repository; JSR308 typestate and maven plugin in GIT</title><link>https://warski.org/blog/2009/03/envers-120ga-in-maven-repository-jsr308-typestate-and-maven-plugin-in-git/</link><pubDate>Wed, 11 Mar 2009 16:21:27 +0000</pubDate><guid>https://warski.org/blog/2009/03/envers-120ga-in-maven-repository-jsr308-typestate-and-maven-plugin-in-git/</guid><description>The recently released Envers 1.2.0.GA finally made it to the JBoss Maven repository; you can find it here:</description></item><item><title>Envers 1.2.0.GA released!</title><link>https://warski.org/blog/2009/03/envers-120ga-released/</link><pubDate>Thu, 05 Mar 2009 17:09:08 +0000</pubDate><guid>https://warski.org/blog/2009/03/envers-120ga-released/</guid><description>Today Envers 1.2.0.GA has been released! It is a Hibernate 3.3 compatible version of the newest Envers codebase, which will be included as a module in Hibernate 3.</description></item><item><title>JSR308 Checkers Maven2 plugin</title><link>https://warski.org/blog/2009/02/jsr308-checkers-maven2-plugin/</link><pubDate>Wed, 04 Feb 2009 18:11:54 +0000</pubDate><guid>https://warski.org/blog/2009/02/jsr308-checkers-maven2-plugin/</guid><description>I’ve written a prototype JSR308 Checkers Maven2 plugin. You can use the plugin to run any checker on the sources of your module(s).</description></item><item><title>Envers in Anvers!</title><link>https://warski.org/blog/2008/12/envers-in-anvers/</link><pubDate>Thu, 04 Dec 2008 18:29:22 +0000</pubDate><guid>https://warski.org/blog/2008/12/envers-in-anvers/</guid><description>December came, so it’s time for Devoxx! (formerly JavaPolis)
If you are planning to visit Antwerp this year, make sure to come and see the Envers presentation (first conference day, 3pm)!</description></item><item><title>Typestate checker – introduction</title><link>https://warski.org/blog/2008/11/typestate-checker-introduction/</link><pubDate>Mon, 17 Nov 2008 18:17:29 +0000</pubDate><guid>https://warski.org/blog/2008/11/typestate-checker-introduction/</guid><description>When dealing with mutable objects in Java, we quite often see that “states” of the class considered emerge.</description></item><item><title>Envers moves to Hibernate!</title><link>https://warski.org/blog/2008/10/envers-moves-to-hibernate/</link><pubDate>Thu, 30 Oct 2008 11:08:13 +0000</pubDate><guid>https://warski.org/blog/2008/10/envers-moves-to-hibernate/</guid><description>I’m happy to announce that Envers is now a module of Hibernate! This means that:</description></item><item><title>Adding structure to Seam events</title><link>https://warski.org/blog/2008/10/adding-structure-to-seam-events/</link><pubDate>Thu, 23 Oct 2008 13:19:07 +0000</pubDate><guid>https://warski.org/blog/2008/10/adding-structure-to-seam-events/</guid><description>The idea described here is originally by Tomek Szymański. I just enhanced it a little.</description></item><item><title>Envers 1.1.0.GA released</title><link>https://warski.org/blog/2008/10/envers-110ga-released/</link><pubDate>Tue, 21 Oct 2008 18:29:18 +0000</pubDate><guid>https://warski.org/blog/2008/10/envers-110ga-released/</guid><description>Today Envers 1.1.0.GA has been released. For the impatient: go straight to the downloads! :) This release contains only minor modifications from the last beta version.</description></item><item><title>Envers on JDD 08</title><link>https://warski.org/blog/2008/10/envers-on-jdd-08/</link><pubDate>Tue, 14 Oct 2008 07:51:39 +0000</pubDate><guid>https://warski.org/blog/2008/10/envers-on-jdd-08/</guid><description>If you’ll be visting Java Developers’ Day 2008 in Cracow, Poland on Thursday, be sure to stop by and see my presentation of Envers.</description></item><item><title>Envers 1.1.0.beta2 released with collections support</title><link>https://warski.org/blog/2008/09/envers-110beta2-released-with-collections-support/</link><pubDate>Sat, 27 Sep 2008 08:44:29 +0000</pubDate><guid>https://warski.org/blog/2008/09/envers-110beta2-released-with-collections-support/</guid><description>Today Envers 1.1.0.beta2 has been released. This release focuses on supporting persistent collections. In earlier versions, it was only possible to version collections belonging to one-to-many bidirectional relations.</description></item><item><title>Envers on Herbstcampus 2008</title><link>https://warski.org/blog/2008/09/envers-on-herbstcampus-2008/</link><pubDate>Fri, 19 Sep 2008 16:04:02 +0000</pubDate><guid>https://warski.org/blog/2008/09/envers-on-herbstcampus-2008/</guid><description>Yesterday I came back from Herbstcampus 2008 in Nürnberg. I gave there a talk on Envers.</description></item><item><title>Envers is back from vacations</title><link>https://warski.org/blog/2008/09/envers-is-back-from-vacations/</link><pubDate>Wed, 03 Sep 2008 09:58:52 +0000</pubDate><guid>https://warski.org/blog/2008/09/envers-is-back-from-vacations/</guid><description>Hello,
after a vacation break, Envers is back with a 1.1.0.beta1 release. You can find the release notes here.</description></item><item><title>Envers 1.0.0.GA released!</title><link>https://warski.org/blog/2008/07/envers-100ga-released/</link><pubDate>Wed, 16 Jul 2008 10:51:30 +0000</pubDate><guid>https://warski.org/blog/2008/07/envers-100ga-released/</guid><description>Today the first general availability version of Envers has been released (downloads, release notes).
This is a stable version containig all the features found in the preview and beta versions.</description></item><item><title>Bi-temporal versioning with Envers</title><link>https://warski.org/blog/2008/06/bi-temporal-versioning-with-envers/</link><pubDate>Mon, 16 Jun 2008 16:22:43 +0000</pubDate><guid>https://warski.org/blog/2008/06/bi-temporal-versioning-with-envers/</guid><description>With the recent addition of queries to Envers, it is now possible to easily retrieve data in a bi-temporal way.</description></item><item><title>Envers beta – now with queries!</title><link>https://warski.org/blog/2008/06/envers-beta-now-with-queries/</link><pubDate>Thu, 12 Jun 2008 11:03:37 +0000</pubDate><guid>https://warski.org/blog/2008/06/envers-beta-now-with-queries/</guid><description>So far Envers made it easy to store historical data; now, with version 1.0.0.beta1 (download here), you can also query it, in two “dimensions”: for entities at a given revision and for revisions, at which an entity changed.</description></item><item><title>What data should be stored in versions tables? – a poll</title><link>https://warski.org/blog/2008/06/what-data-should-be-stored-in-versions-tables-a-poll/</link><pubDate>Wed, 04 Jun 2008 08:10:28 +0000</pubDate><guid>https://warski.org/blog/2008/06/what-data-should-be-stored-in-versions-tables-a-poll/</guid><description>Hello,
I’ve posted a poll on what data should be stored in versions tables in Envers, see here and cast your vote:</description></item><item><title>Envers preview 3: logging data for revisions, Seam demo</title><link>https://warski.org/blog/2008/05/envers-preview-3-logging-data-for-revisions-seam-demo/</link><pubDate>Tue, 06 May 2008 12:57:24 +0000</pubDate><guid>https://warski.org/blog/2008/05/envers-preview-3-logging-data-for-revisions-seam-demo/</guid><description>With the preview 3 release of Envers, you can easily associate additional data with revisions. This could be, for example, the name of the user making the change.</description></item><item><title>Value-to-variable binding “let” tag for JSF, Facelets and Seam</title><link>https://warski.org/blog/2008/04/value-to-variable-binding-let-tag-for-jsf-facelets-and-seam/</link><pubDate>Mon, 28 Apr 2008 10:54:56 +0000</pubDate><guid>https://warski.org/blog/2008/04/value-to-variable-binding-let-tag-for-jsf-facelets-and-seam/</guid><description>The “let” tag enables you to bind the value of any expression to a variable and later reuse it, without recalculating the value.</description></item><item><title>Envers preview 2: versioning relations</title><link>https://warski.org/blog/2008/04/envers-preview-2-versioning-relations/</link><pubDate>Tue, 22 Apr 2008 09:39:41 +0000</pubDate><guid>https://warski.org/blog/2008/04/envers-preview-2-versioning-relations/</guid><description>You can now download a second preview version of the Envers library!
As a quick reminder, the library enables you to easily version your JPA entities, by simply annotating their properties with @Versioned; it works as an extension to Hibernate and Hibernate Entity Manager.</description></item><item><title>Introducing Envers: Easy Entity Versioning</title><link>https://warski.org/blog/2008/04/introducing-envers-easy-entity-versioning/</link><pubDate>Thu, 10 Apr 2008 13:06:30 +0000</pubDate><guid>https://warski.org/blog/2008/04/introducing-envers-easy-entity-versioning/</guid><description>Hello,
Envers is a project which enables you to version your entities, simply by annotating them with @Versioned!</description></item><item><title>Clean URLs in Seam: URLRewriteFilter</title><link>https://warski.org/blog/2008/03/clean-urls-in-seam-urlrewritefilter/</link><pubDate>Mon, 31 Mar 2008 12:10:34 +0000</pubDate><guid>https://warski.org/blog/2008/03/clean-urls-in-seam-urlrewritefilter/</guid><description>Starting with Seam 2.0.1 (annoucement here, download here) you can fully use UrlRewriteFilter to make URLs in your Seam app nice and clean.</description></item><item><title>Instant Facelets: changes in .xhtml and no redeploying</title><link>https://warski.org/blog/2007/12/instant-facelets-changes-in-xhtml-and-no-redeploying/</link><pubDate>Fri, 07 Dec 2007 12:02:56 +0000</pubDate><guid>https://warski.org/blog/2007/12/instant-facelets-changes-in-xhtml-and-no-redeploying/</guid><description>If you are developing anything with Facelets/Seam/… frameworks, you probably know the pain of having to redeploy after each .</description></item><item><title>Developing with Seam and without frequent redeploying</title><link>https://warski.org/blog/2007/10/developing-with-seam-and-without-frequent-redeploying/</link><pubDate>Fri, 12 Oct 2007 07:45:35 +0000</pubDate><guid>https://warski.org/blog/2007/10/developing-with-seam-and-without-frequent-redeploying/</guid><description>Seam in combination with JBoss Tools already has the features I wrote about some time ago (see here), unless, for example, you aren’t using Eclipse or you want to develop with Seam 2, which isn’t supported by JBoss Tools yet.</description></item><item><title>UTF-8 in JBoss/Tomcat + MySQL + Hibernate + JavaMail</title><link>https://warski.org/blog/2007/10/utf-8-in-jbosstomcat-mysql-hibernate-javamail/</link><pubDate>Wed, 03 Oct 2007 13:07:50 +0000</pubDate><guid>https://warski.org/blog/2007/10/utf-8-in-jbosstomcat-mysql-hibernate-javamail/</guid><description>While most of (web)applications communicate with the end user in English, a lot of them use native languages, which often have some special characters (not to look too far for an example, we have the Polish alphabet, with ą, ę, ś, etc).</description></item><item><title>Developing JSP/JSF pages without frequent redeploying</title><link>https://warski.org/blog/2007/09/developing-jspjsf-pages-without-frequent-redeploying/</link><pubDate>Thu, 27 Sep 2007 20:14:56 +0000</pubDate><guid>https://warski.org/blog/2007/09/developing-jspjsf-pages-without-frequent-redeploying/</guid><description>Imagine you are developing a web application, which displays some JSP files. It is pretty annoying to have to re-deploy the application whenever you make any change to a JSP to see the result in the browser (there are other ways to get rid of that annoying problem, of course; here I’m describing only one way of many).</description></item><item><title>Bootzooka</title><link>https://warski.org/projects/12-bootzooka/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://warski.org/projects/12-bootzooka/</guid><description/></item><item><title>ElasticMQ</title><link>https://warski.org/projects/10-elasticmq/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://warski.org/projects/10-elasticmq/</guid><description/></item><item><title>envers</title><link>https://warski.org/projects/07-envers/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://warski.org/projects/07-envers/</guid><description/></item><item><title>jox</title><link>https://warski.org/projects/03-jox/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://warski.org/projects/03-jox/</guid><description/></item><item><title>macwire</title><link>https://warski.org/projects/09-macwire/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://warski.org/projects/09-macwire/</guid><description/></item><item><title>Orca</title><link>https://warski.org/projects/04-orca/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://warski.org/projects/04-orca/</guid><description/></item><item><title>ox</title><link>https://warski.org/projects/01-ox/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://warski.org/projects/01-ox/</guid><description/></item><item><title>Quicklens</title><link>https://warski.org/projects/11-quicklens/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://warski.org/projects/11-quicklens/</guid><description/></item><item><title>SandCat</title><link>https://warski.org/projects/08-sandcat/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://warski.org/projects/08-sandcat/</guid><description/></item><item><title>Scala Skill</title><link>https://warski.org/projects/13-scala-skill/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://warski.org/projects/13-scala-skill/</guid><description/></item><item><title>Shelly</title><link>https://warski.org/projects/06-shelly/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://warski.org/projects/06-shelly/</guid><description/></item><item><title>sttp client</title><link>https://warski.org/projects/05-sttp/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://warski.org/projects/05-sttp/</guid><description/></item><item><title>tapir</title><link>https://warski.org/projects/02-tapir/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://warski.org/projects/02-tapir/</guid><description/></item></channel></rss>