2013-11-29

Let's Code Jumi #283: Launcher Actors (Part 1)

The code which sends the startup command to the daemon is from the original walking skeleton and not unit tested, which makes it hard to modify. This part must be re-designed before we can add support for a second command - the shutdown command.

Download as MP4

Episode Archive

2013-11-17

Let's Code Jumi #281: Process Liveliness (Part 1)

To get started on daemon shutdown commands, we need to expose the java.lang.Process instance to assert whether it's dead or alive.

Download as MP4

Episode Archive

2013-11-13

Let's Code Jumi #280: Final Decoupling

The recent unit tests failed when doing a clean build because JumiLauncher was still coupled with the embedded daemon JAR.

Download as MP4

Episode Archive

2013-10-25

2013-10-12

Let's Code Jumi #274: Command Line Arguments (Part 1)

Next I will want to get the shutting down of the daemon process from walking skeleton quality to production quality. To get a feel for the code in that area, let's start with something easy - command line parsing.

Download as MP4

Episode Archive

2013-10-03

Let's Code Jumi #272: More Robust Design (Part 1)

I have one more idea to make WorkerCounter's API harder to use wrong and its implementation simpler.

Download as MP4

Episode Archive

2013-09-15

Let's Code Jumi #268: Concurrency Bug (Part 1)

Though it had not yet bitten me, I realized that WorkerCounter has a concurrency bug that could cause two onAllWorkersFinished events being fired. Let's try to find a more reliable design...

Download as MP4

Episode Archive

2013-09-11

Let's Code Jumi #267: Continuous Delivery

Doing the first release of the Jumi Actors library. I will explain my deployment pipeline for implementing Continuous Delivery to deploy Maven artifacts into Maven Central using Go and Sonatype OSSRH.

You may also read about my deployment pipeline, and how to implement it yourself, in the article Continuous Delivery with Maven and Go into Maven Central.

Download as MP4

Episode Archive

2013-09-08

Let's Code Jumi #266: Final Polish

A couple of finishing touches before publishing the actor library. For example fixing a cyclic package dependency revealed by IntelliJ IDEA's Dependency Structure Matrix.

Download as MP4

Episode Archive

2013-09-01

Let's Code Jumi #264: Custom POM Properties (Part 1)

Maven includes in every JAR a pom.properties file which contains the artifact's groupId, artifactId and version. I would like to include there also Git's revision ID. Unfortunately maven-jar-plugin's pomPropertiesFile option is broken and we need a workaround.

Download as MP4

Episode Archive

2013-08-24

Let's Code Jumi #262: Actor Interface Contracts (Part 1)

Some polish before the Jumi Actors library is ready for being published, for example improved validation of actor interfaces.

Download as MP4

Episode Archive

2013-07-30

Let's Code Jumi #255: Failure Handling (Part 1)

Creating hooks for handling uncaught exceptions from actors. Originally only the single-threaded actors had them, but they are also needed in production.

Download as MP4

Episode Archive

2013-07-13

Let's Code Jumi #251: Stopping Actor Threads (Part 1)

Jumi has not yet needed support for stopping actor threads (it just exits the whole JVM), but for the Jumi Actors library to be general-purpose, there should be a way to release resources.

Download as MP4

Episode Archive

2013-07-02

Let's Code Jumi #248: Executor Logging (Part 1)

Some actors delegate work to background threads, so those should also be logged to see the full picture.

Download as MP4

Episode Archive

2013-06-07

2013-06-01

Let's Code Jumi #240: Thread Naming

Moving thread management and naming from the actor library into an external thread pool and a custom thread factory.

Download as MP4

Episode Archive

2013-05-26

2013-05-17

Let's Code Jumi #237: Eventizer Providers (Part 1)

The usability of the actors library can be improved by making it a single configuration option to support actors of all interface types.

Download as MP4

Episode Archive

2013-05-13

Let's Code Jumi #236: Terminology Update

After introducing actor threads and removing the unattended workers, the actor tests require some updating.

Download as MP4

Episode Archive

2013-04-30

2013-04-26

Let's Code Jumi #231: MonitoredExecutor (Part 3)

The MonitoredExecutor class had a bug which was probably the reason why we failed to put it into use.

Download as MP4

Episode Archive

2013-04-22

2013-04-14

Let's Code Jumi #228: MonitoredExecutor (Part 1)

If we create an Executor which notifies when it has finished executing its commands, that should help in getting rid of Actors.startUnattendedWorker() and the numerous callbacks of the old WorkerCounter.

Download as MP4

Episode Archive

2013-03-23

Let's Code Jumi #225: Decoupled Actor Threads (Part 1)

Creating an actor used to be coupled with creating its thread (or reusing the current thread). By separating those operations we can unify "primary" and "secondary" actors, making the actors much simpler to use.

Download as MP4

Episode Archive

2013-03-02

Let's Code Jumi #222: Unified Actors (Part 1)

By unifying the processing of "primary" and "secondary" actors, the internal design can be improved considerably, and later we can get rid of those two different actor categories completely.

Download as MP4

Episode Archive

2013-02-23

Let's Code Jumi #220: ActorRef (Part 1)

The Jumi Actors library can be made easier and safer to use by introducing a reference class, a bit like in Akka Actors. This is the first step for a bunch of design improvements to the actors library.

Download as MP4

Episode Archive

2013-02-07

2013-02-02

Let's Code Jumi #214: Misc Refactoring (Part 1)

Some small refactorings. A nice feature in IntelliJ IDEA is "Analyze | Run Inspection by Name" which lets you apply a quickfix with one command for all found problems in the whole project - in this case adding missing @Override annotations.

Download as MP4

Episode Archive

2013-01-15

Let's Code Jumi #211: Redundant Parameters (Part 1)

With the onRunStarted event and RunId parameters in place, some of SuiteListener's other parameters can be deduced from the RunId, so they can be removed as redundant.

Download as MP4

Episode Archive

2013-01-14

Let's Code Jumi #210: Isolated Tests

When I rewrote TestClassRunnerTest and SuiteRunnerTest in specification style, I left behind tests which were not isolated - they were checking more things than just the one thing they were interested in. I figured out a way to write them better.

Download as MP4

Episode Archive