
Definition of Done
The Definition of Done (DoD) is a key Agile concept ensuring user stories meet specific criteria before being considered complete. It establishes clear, common terminology for all team members, eliminating ambiguity. Benefits include explicit accountability, clarity, preventing story thrashing, reducing misunderstandings, and guiding pre-implementation activities. A typical DoD checklist includes code updates, formatting, reviews, tests, documentation, and addressing performance, security, and metrics.

Proper CRUD
I created a RESTful CRUD application using Angular's $resource and integrated it with a Java backend using Google Guice for dependency injection. I used JBoss WildFly as the server and employed various libraries like Jersey for the REST client and Apache Commons Lang for utility functions. The project is available on GitHub and deployed on OpenShift, showcasing CRUD operations through simple CURL commands.

Defect Definition of Ready
Defining a "Defect Definition of Ready" ensures defects are thoroughly documented before team review, saving time and resources. A good bug report should include a clear title, summary, reproducible steps, expected vs. current behavior, priority, frequency, context, and any relevant screenshots. This approach reduces churn, enhances team accountability, and improves tester-developer relationships.

Definition of Ready
The Definition of Ready (DoR) is a checklist ensuring a product backlog item is prepared for a sprint. It prevents pulling in unready stories and releasing incomplete ones. DoR doesn't mean a story is 100% defined but must meet certain criteria. Benefits include avoiding time wastage, reducing scope creep, and keeping the team accountable. Key questions: Why, What, and How/Who. Regular backlog grooming and an example checklist ensure clarity and readiness.

GitHub Commit Message Standardization
I realized my commit messages were weak and didn't convey the intent of the changes. Writing meaningful, committed messages is crucial for clear communication. I researched best practices and proposed standards for better commit messages. These include using a short, imperative mood summary, detailed paragraphs, and logical grouping of files. Good commit messages to speed up the review process, help future maintainers, and aid in writing release notes.

From Zero to Continuous Delivery
Imagine a world where a code update to fix a defect or add a feature is automatically pushed to production on commit. This is now a reality for many companies like Google, Facebook, LinkedIn, Netflix, and Etsy. Achieving continuous delivery requires cultural discipline, craftsmanship, and respect. This tutorial provides a step-by-step guide to creating a cloud-based solution for a Java web application using GitHub, Snap-CI, and OpenShift. Push code to the repository master branch, run tests, and deploy automatically.

Utilizing OpenShift To Deploy a Web Application
Early in my web development career, I discovered OpenShift, a PaaS provider offering a free way to demo personal projects. This guide covers setting up an OpenShift account, creating a Tomcat7 application, and deploying a "Hello World" web app. Key steps include generating SSH keys, using Git for deployment, and accessing the app publicly. OpenShift's free tier is ideal for showcasing your projects online.

RESTful JSON Web Service - Jersey (v1.19)
In February 2015, I integrated CRUD operations into my AngularJS project, using $http and $resource. Lacking a solid backend, I explored Jersey to create RESTful web services. I uploaded my Maven-based project, without web.xml, to GitHub. Key steps included setting up Jersey endpoints and creating a standard CRUD operation template. Future goals include using JOOQ for database interactions.

Identifying a Senior Engineer
Today, I interviewed a senior developer candidate at OnShift. I value passion and continuous learning over experience alone. Key questions included understanding SOLID principles, designing a small commerce site, technology stack choices, integration and deployment strategies, secure handling of customer data, and proposing new technologies. I seek candidates with a strong grasp of these concepts and a drive to improve.

Emails - Feature Toggles
In January 2015, I shared an article by Martin Fowler on feature toggles with my colleagues, Dean and Bryce. The article explores the complexity and use of toggles for cohort, A/B testing, and feature releases. At OnShift, I recently developed a "feature permission" REST endpoint for beta testing new features in our mobile apps, which I may rename to "feature toggle." We're also using Google Analytics to track user flow and feature adoption.

Emails - Engineering Standards
"Best practices" provide a flexible, innovative approach essential for scalability, unlike rigid standards. They guide automated testing, security, coding, source control, deployment, architecture, REST APIs, and environments, ensuring consistency and efficiency in organizational processes.

Avoiding Interruptions
A colleague shared an insightful article on how interruptions impact developers: Why Developers Hate Being Interrupted. It references the Maker's Schedule and suggests two strategies to reduce interruptions: the "Headphone Rule" and blocking off periods for uninterrupted work, aligning with the maker's schedule. These techniques can help maintain focus and productivity.

Python for the Java Programmer
At OnShift, a Cleveland-based startup, I transitioned from 9 years of Java development to embracing Python. After a month of immersion, I appreciate Python's readability and extensive standard library. I explored the ecosystem through podcasts and compared Java and Python tools, collections, and frameworks. This shift has broadened my development perspective and highlighted the vibrant Python community.

Client-Side Web Project - Pt 2
In February 2015, I incorporated AngularJS into my client-side web project, focusing on a zero server-side script approach. AngularJS, a SPA framework, enhances HTML interactivity through directives and two-way data binding. Key concepts include ng-directives, custom directives, filters, and routes. Using Bootstrap, Less, jQuery, PreloadJS, and AngularJS, this project aims to deploy on OpenShift soon.

What is Hadoop?
In February 2015, I joined Explorys, a company using Hadoop to manage and sell vast amounts of hospital data. Hadoop's distributed processing and fault tolerance make it ideal for big data despite the single point of failure at the name node. Key points from "Hadoop - The Definitive Guide" include its scalability, cost-effectiveness, and powerful data processing capabilities. The book provides insights into Hadoop's MapReduce framework, HDFS, and ecosystem, highlighting its role in efficient big data management.

Client-Side Web Project - Pt 1
In February 2015, I explored implementing a pure client-side interface using AngularJS, emphasizing the flexibility of JavaScript and modern browsers. The project avoids server-side scripts, making it adaptable to any web server. Best practices include placing JavaScript before the closing `</body>` tag, placing CSS in the `<head>` tag, and using resource versioning to prevent caching issues. Technologies used are Bootstrap, Less for CSS, jQuery, and PreloadJS for JavaScript. For color schemes, I leveraged Paletton and Less for easy theme management.

Effective Java
In December 2014, I explored "Effective Java" by Joshua Bloch, uncovering valuable best practices. Key concepts included using static factory methods for readability, minimizing accessibility and mutability for better encapsulation, preferring composition over inheritance, leveraging generics for type safety, and implementing singletons with enums. These insights will enhance my coding practices at Explorys.

New Job, New Technologies
In November 2014, I moved back to Ohio from Florida, taking a new job at Explorys. I've expanded my technical skills in just four weeks, adding Ruby/Rails, Hadoop/HBase, Maven, Git, JOOQ, and Dependency Injection via CDI to my toolkit. This transition has been both challenging and enriching, providing new growth opportunities.
Get In Touch
We'd love to hear from you! Whether you have a question about our services, need a consultation, or just want to connect, our team is here to help. Reach out to us through the form, or contact us directly via social media.