It’s a bit tricky to enable JMX for Cassandra when running in Docker. I create a Cassandra Docker image alexcheng/cassandra of version 3.11.2 with JMX authentication enabled, see the Dockerfile. The username and password to access JMX are both cassandra. The environment variable JMX_HOST has the default value of localhost, and it should work most of the time. If localhost doesn’t work , you can use the host’s IP address. After starting the container, you can access JMX using VisualVM or JConsole with address service:jmx:rmi://localhost/jndi/rmi://localhost:7199/jmxrmi. Change localhost to the same value as JMX_HOST if localhost is not used. Since SSL is not enabled, you need to use insecure connections.

On Mac, the local IP address can be obtained using ipconfig getifaddr en0, so we can use following command to start the container when using IP address is required.

Atlassian got its new fancy tool Stride to replace HipChat and it’s gradually migrate existing HipChat teams to Stride. For those Hubots connecting to HipChat, it’s time to migrate. This post shows the complete migration process for my own ChatOps bot.

If your Java applications are deployed to AWS Elastic Beanstalk, you may want to configure the logging to make error diagnostics much easier. We can use Beanstalk console to request and download log files, but you need to configure the app first to make your log files available for download.

It’s common to use private Maven repositories to host internal artifacts. These repositories usually require authentication when accessing. The username and password for these repositories are stored in the ~/.m2/settings.xml. This post shows how can we configure Gradle to publish to private repositories and integrate with Bitbucket Pipelines or other CI services.

Akka Streams and Alpakka provide a good an alternative to Apache Camel when integrating different services and data. Alpakka has a rich set of connectors, including file, JMS, Cassandra and more. We can still use Camel endpoints if Alpakka doesn’t provide the connectors.

This post shows a complete example of integrating Camel endpoints with Akka Streams. This example reads file content in one directory, tranforms the content, then writes to another directory. It uses the Camel file endpoint.

Upgrading React Native should be quite easy. But if you have an app that uses a very old version of React Native, things may be different. This post shows how to upgrade React Native from 0.42 to 0.51.

This post shows how to setup Nginx on Windows using Ansible. I created a new role nginx for Nginx. Nginx is installed using Chocolatey. Please refer to this post about how to install Chocolatey on Windows using user data. NSSM is also required to configure Nginx as a Windows service, which is also installed using Chocolatey.

This is Part 3 of the series of setting up a Chatbot for deploying artifacts to AWS EC2 Windows instances. In this post, I’ll discuss using AWS Lambda to make sure instances are not left running for too long to save money.

The Chatbot makes deployment much easier and encourages developers to run more tests. However, those launched instances are more likely to be left running for a long time. The situation is worse for Windows instances, which are way more expensive that Linux instances ($0.15 comparing to $0.03). So I need a way to terminate those instances when not used.

Comparing to DevOps, ChatOps, a word coined by GitHub, is trying to leverage Chatbots to make developers’ life much easier. Comparing to CLI or web pages, ChatBots are more user-friendly to interact with, and bots are COOL!!!

This series of posts takes you through the process of setting up a Chatbot for deploying artifacts to AWS EC2 Windows instances. Tools and services used in this post include: