Code
Below are various personal software development projects I have created over time. Where possible, the source code is available via GitHub. If you have any questions or issues with the source code, please feel free to open an issue via GitHub.
Java Spring Framework Demo
(Last update September 2017) A Java web application used to showcase the use of various Spring Framework projects. The original purpose of the demo was to create a basic template for a Spring web application that could be used to kickstart a new project. I have used this demo for a number of professional and personal projects. Lately, I have been using the demo to experiment with different techniques and tools. Currently, the application make use of the following Spring projects and tools:
- Spring Projects: Core, Data JPA, MVC, Security
- Testing: JUnit, SOAPUI
- Build: Maven
- Database: Oracle, mySQL
- Front End: HTML5, CSS3, JQuery
- Continuous Integration: Travis CI
The application consists of 5 components: springapp, springweb, springdomain, springall and database. The springapp project contains the business and data access services for a simple domain. The springweb project is a simple web application containing a number of REST web services that expose the services provided in springapp. The springdomain project defines the API in a single XSD file and is used to generate DTO objects at compilation time. The springall project is a parent project for springapp, springweb and springdomain. The database directory contains scripts that can be used to create and populate Oracle and mySQL databases.
Simple Microservices Project with Spring Boot and Eureka
(June 2017) A simple microservices project using Spring-Boot and Eureka. The project contains three microservices: Account, Reference and Correspondence. As each service starts up, it registers itself with the Eureka registration server. In the sample code, the Account microservice is the service orchestrator. When an account is created, the account service calls the reference service to look up reference data and then calls the correspondence service to send a welcome email. This is a relatively new project, and new services and business cases will be added over time.
Java Spring Web Application for an Online Performance Clinic with AWS and Dynatrace
(January / Spring 2017) In January, I participated in an online performance clinic sponsored by Dynatrace that demonstrated how to deploy a Java web application on AWS using the AWS CodePipeline. The demo pipeline pulled the source code from GitHub, built the application using the AWS CodeBuild service, deployed it to an AWS Elastic Beanstalk instance, and then ran an automated load test using Apica LoadTest. Dynatrace AppMon was used to measure the performance of the implemented RESTful web services. The clinic was recorded and is available on Dynatrace's YouTube channel.
Later in the Spring of 2017, I repurposed the online performance clinic webinar into talks on Automated Performance Testing with AWS, Dynatrace and BlazeMeter. The talks were given at a meeting of the Greater Boston Computer Measurement Group and internally within my company. The content was essentially the same, except that Apica LoadTest was replaced by jMeter and BlazeMeter.
The sample web application used in the performance clinic is a Java Spring web application that provides web services used to demonstrate slow response times, memory leaks, and database performance issues. There are two versions of each service, one that contains the performance issue, and another that implements a solution. The application can easily be run in both cloud and non-cloud environments.
GitHub: http://github.com/jsicree/perf-demo
YouTube: https://youtu.be/tb4xJ5im8jw
Distributed Computing with Apache Spark
(November 2016) Scala applications used in a technical presentation on Distributed Computing with Apache Spark. The spark-scala-demo project contains examples processing stock data and reading data from a database. The spark-recommender project is a music recommendation application based on the Audioscrobbler example in the book Advanced Analytics with Spark: Patterns for Learning from Data at Scale by Sandy Ryza, Uri Laserson, Sean Owen and Josh Willis.
AWS Re:Invent 2016 Hackathon
(November 2016) Source code from a one day Hackathon held at the 2016 AWS re:Invent conference. I was a member of a team that implemented a data visualization tool for the Wildlife Conservation Society (www.wcs.org). The tool used various AWS services including AWS Lambda, API Gateway and S3. The front end was created using Bootstrap and Chart.js.
AWS Lambda
(November 2015) Source code for a technical presentation on AWS Lambda.
Tradeoffs when choosing an Application Performance Management (APM) solutions (CMG Boston Region - April 2015 Meeting)
(April 2015) A presentation co-authored for the CMG Boston 2015 Spring Meeting on the tradeoffs faced when selecting an APM solution.
Link: https://www.cmg.org/wp-content/uploads/2016/10/Tradeoffs-when-choosing-an-APM-solution-v9.pdf
Other Projects
Perl
GitHub: http://github.com/jsicree/perl-sandbox
Python
GitHub: http://github.com/jsicree/python-sandbox