Version 1.0.4 of the CQ Blueprints Maven Archetype Available

Posted in: Enterprise Java, Software Development Best Practices

I’m happy to announce the release of version 1.0.4 of the CQ Blueprints Maven Archetype.

The CQ Blueprints Maven Archetype can be used to bootstrap a fully Apache Maven enabled, multi-module, Adobe CQ project. By using the generated Apache Maven project you no longer need to use tools such as CRXDE and can instead develop and work in a tool like Eclipse and simply build and deploy to a running CQ Server using common Apache Maven commands.

This new release fixes several reported bugs, and adds complete examples of best practices for writing JSPs and custom tag libraries and integrating these with OSGI services.

Visit the CQ Blueprints site for further information about the CQ Blueprints Maven Archetype.

Remember, if you need assistance with your current or future Adobe CQ project, don’t hesitate to contact myself directly or alternatively contact Ruben Reusser and the team at Headwire who generously provide the CQ Blueprints project.

CQ Development Team Server “In A Box” (Updated)

Posted in: Enterprise Java

I just finished publishing a new machine image that includes improvements to integrate to the new repo.adobe.com Maven repository, and to also deploy CQ as a service so that it will startup and shutdown with the operating system.

Check the details here:

http://cqblueprints.com/xwiki/bin/view/Blue+Prints/CQ+Development+Team+Server+%22In+A+Box%22

Using Nexus as a Maven Repository for CQ Team Development (Updated)

Posted in: Enterprise Java

I just finished doing a major update to the CQ Blueprints page about using Nexus as a Maven Repository for CQ development. The Blueprint now demonstrates how to make use of the repo.adobe.com repository that Adobe has recently made available.

Customers who wisely choose Maven as their build tool should setup their own Maven Repositories and configure them to proxy the repo.adobe.com repository to provide access to the CQ related artifacts for your team. Some possibly outdated documentation on the Day/Adobe sites recommends installing and using Apache Archiva as your local repository. However, since Nexus is now being used actively to manage the Maven Central repository it has become the defacto standard for Maven Repository management tools. As a result, we recommend the use of Nexus over any other Maven Repository management tools, including Archiva.

via Using Nexus as a Maven Repository for CQ Team Development Blue Prints.Using Nexus as a Maven Repository for CQ Team Development – XWiki.

CQ Development Team Server “In A Box”

Posted in: System Administration

Just wrapped up a project with the Headwire team to create an example server environment for getting up and running with a new CQ project quickly. The server has all of the elements needed for a CQ development team like Subversion, Nexus and Jenkins already installed, configured and integrated. There are also instructions for setting up your CQ environment, including deploying the CQ binaries into Nexus and making them available to your Maven builds.

The server is packaged as an Open Virtualization Archive file, so you should be able to import it into most virtualization tools (VirtualBox, VMware etc).

Check out the documentation here:

http://www.cqblueprints.com/xwiki/bin/view/Blue+Prints/CQ+Development+Team+Server+%22In+A+Box%22

Using Nexus as a Maven Repository for Adobe CQ Team Development

Posted in: Enterprise Java

I just finished writing another Blueprint over on the CQ Blueprints site. This time I talk about how to go about setting up and using Nexus as your team’s Maven Repository when working with Adobe CQ (now Adobe ADEP / CEM).

Check it out here: http://www.cqblueprints.com/xwiki/bin/view/Blue+Prints/Using+Nexus+as+a+Maven+Repository+for+CQ+Team+Development

Writing A JSP Custom Tag Library for Adobe Communique

Posted in: Enterprise Java, Software Development Best Practices

I just wrote another article for CQ Blueprints.

Within CQ, Components (including Page Templates) can utilize JSPs for rendering not only HTML, but also other output formats such as JSON.

Unfortunately, many JSPs are written poorly and mix presentation logic with business logic (in the form of scriptlets) making them difficult to test, debug and maintain. One of the best ways to write better JSPs is to never use scriptlets and instead use a combination of EL expressions and Custom Tag Libraries (including the JSTL). This Blueprint details how Custom Tag Libraries should be developed and deployed to a CQ environment.

For more, see:
http://www.cqblueprints.com/xwiki/bin/view/Blue+Prints/Writing+A+JSP+Custom+Tag+Library

Deploying 3rd Party Libraries to Adobe Communique

Posted in: Enterprise Java, Software Development Best Practices

I just published a new Blueprint over on cqblueprints.com that details how to easily deploy 3rd party libraries into your CQ environment, even when those libraries do not contain the necessary OSGi entries in the Manifest file.

CQ is built on top of Apache Sling, and Apache Sling is built on top of an OSGi container (Apache Felix specifically).

OSGi containers behave slightly differently (in terms of how classes are loaded and made available on the classpath) than most Java developers are used to.

To be able to make classes available within the OSGi container, Jar files need to be packaged in a specific way, including adding extra meta-data to the standard MANIFEST.MF file. The problem this can create is that libraries created by other developers that have not been built with OSGi in mind are missing this extra information and so their Jar files cannot be deployed in CQ.

This Blueprint details how to easily and reliably expose non-OSGi enabled libraries in CQ.

See Deploying 3rd Party Libraries

Building and Deploying OSGi Bundles on Adobe Communique

Posted in: Enterprise Java

I just published a new Blueprint over on cqblueprints.com that details how to easily build and deploy OSGi bundles into your Adobe Communique server.

CQ is built on top of an OSGi container and as a result custom code and functionality can be added to CQ through the features provided by OSGi. To be able to deploy custom code into an OSGi container, developers must package their code as a bundle. An OSGi bundle is simply a Jar file that has had extra meta data added to it. This Blueprint details how to create an OSGi bundle using Apache Maven and how to deploy that bundle into a running CQ instance.

See Building and Deploying OSGi Bundles

Smart Phones, Dumb Commercials

Posted in: Customer Service

The current round of Blackberry and Android tablet commercials almost universally and prominently call attention to the fact they are able to render Flash based content. Using terms like “Flash Enabled” or “Flash Compatible”. Obviously this is a less than subtle swipe at iOS based devices (iPhone, IPads etc) which do not deal with Flash content.

If the best product differentiator these companies can muster is the fact that their device/OS can run bloated Flash based advertising banners across the top of web pages that I am viewing on a slow mobile connection, then I think Apple will hardly be rushing in to “support” Flash.

Even Adobe, the creator of Flash, has begun to quietly waive the proverbial white flag in defeat when it comes to the Apple Vs Flash battle. Just in the last few days, on their Labs website, Adobe announced the first availability of Project Wallaby (great name IMHO), which is a tool to convert Flash applications to the HTML 5 standard that many browsers already have support for, and surprise, surprise so do iOS based devices.

Bottom line: if the main reason you pick one smart phone over another is that one runs Flash and one doesn’t, then it is possible you are not qualified to own a smart phone just yet.

Engage

Posted in:

I am a full-time consultant who is available to engage with clients remotely or onsite anywhere in the world (I currently hold dual-citizenship between Australia and the United States).

To discuss your specific needs, please call me on +1.650.336.5877, or email me at craig@craigsdickson.com, or use this Contact form, or download a copy of my resume from this page.

The following is an overview of the services I provide to clients:

Software Development Process Improvement

  • Coaching for Agile process evaluation, adoption or improvement, including Scrum, Lean, Kanban and Extreme Programming (XP)
  • Definition, refinement and documentation of team processes and practices
  • Definition of Quality Assurance and Quality Control standards
  • Integration of defect tracking systems with other tools and processes
  • Engagement with customers and requirements elicitation

Software Development Team Management

  • Job Description authoring
  • Salary range and benefits package definition
  • New candidate acquisition and screening
  • Team workspace design and office space evaluation
  • Skills assessment of existing resources
  • Collaboration strategies for teams

Vendor Management

  • New vendor discovery and screening
  • Vendor proposal reviews
  • Offshore vendor management, including onsite visits and reviews
  • One throat to choke multiple vendor management

Software Configuration Management (SCM)

  • Introduction of an SCM system to teams not already using one (Subversion, Git, CVS etc)
  • Subversion and CVS training
  • Subversion and CVS server installation and configuration
  • SCM process definition and documentation, including branching and merging processes
  • SCM system migration, particularly CVS to Subversion

Build Management

  • Implementation of Apache Maven and Apache Ant based build systems
  • Automation of builds, particularly in relation to a Continuous Integration system like CruiseControl or Hudson
  • Management and versioning of produced code artifacts, particularly in relation to an Artifact Repository like Nexus or Artifactory
  • Release numbering strategies and Alpha and Beta customer release programs

Software Architecture & Design

  • Enterprise-level system architecture definition, existing architecture reviews
  • New database design and existing database design review
  • Formal UML based architecture definition

Enterprise Java Development

  • Specialist in full-stack JavaEE development
  • Public API design and documentation for ISVs
  • Web service development and integration
  • Code reviews and performance tuning
  • Service Oriented Architecture (SOA) design and implementation

Web Development

  • HTML, JavaScript and CSS development
  • Integration of AJAX style JavaScript libraries including GWT, JQuery and ExtJS
  • Integration of Adobe Flash and Flex components

Automated Testing Strategies

  • Introduction of tools like JUnit and Sellenium to teams that currently do not do any automated testing
  • Integration of tests into automated build scripts and generation of metrics
  • Static analysis of codebase quality

Mobile Development

  • iPhone application design and development, specializing in integration to JavaEE based back ends
  • Web based mobile development

Social Media Strategy

  • Specializing in small to medium business that do not have dedicated in house Social Media resources
  • Evaluation of current Social Media presence
  • Recommendations for Social Media platforms based on particular business needs and goals
  • Evaluation of Location based services in relation to business needs and goals

Once again, to discuss your needs and to find out how I can help you, please contact me by phone on +1.650.336.5877, by email at craig@craigsdickson.com, or simply use this Contact form. If you would like more detailed information regarding my experience and qualifications, you can download a current copy of my professional resume from this page.