Wednesday, January 01, 2020

Sunday, March 26, 2017

Grails 3 Book - Step by Step


We try to describe in this book how a complete greenfield application can be implemented with Grails 3 in a fast way using profiles and plugins - and we do this in the sample application that accompanies this book. You can find news about this book on its presentation site located here: www.grailsthreebook.com. This book is not a replacement of the Grails 3 Reference Documentation which is a complete description of Grails 3, made by the creators of the framework.

The source code used in this book is part of this sample application which is a free project hosted on GitHub on this location: https://github.com/colaru/mvp-application. If a source code fragment is included in this book, then it is taken from this project. We use BDD or other specification by example techniques for describing the sample application specification - the leaving documentation for the project can be found here: http://serenity.itjobsboard.eu. The application code is tested in a TDD style using the automated unit, integration, and functional tests. 

The sample application is based on a multi-project Gradle build so the application can be automatically built using Gradle - the build tool used by Grails 3. The web application is available here: https://www.itjobsboard.eu. The admin application is available online here: https://admin.itjobsboard.eu. The deployment is done automatically to AWS cloud in a Continuous Deployment style using Jenkins. 

We use links to various external resources in this book (you will see them in the page’s footers), because this book is intended to be in electronic format from the beginning. The reader can use these links for consulting external references in an easy way.

The book has two parts. 

First part - Grails 3 Essentials

An introduction to application development with Grails 3; we describe the main application that will be implemented in the second part of the book

**Chapter 1** is an introduction to the framework. You will find here some history of the framework and a lot of links to the Grails resources; it is presenting the classical three-layered architecture for a web application provided by Grails 3
**Chapter 2** describes how to start your work with Grails 3 framework and how to install all the tools for a free working environment - free as much as possible because you have to pay some money for the best tools on the market
**Chapter 3** presents the project we want to implement as an example; it is presenting also the way we choose to work on implementing the sample application, based on BDD, TDD, CI and CD; it shows how the main application is split into multiple parts based on Grails 3 profiles

Second part - Practical example with Grails 3

A practical implementation of a greenfield application with Grails 3; the application is composed of multiple parts corresponding to various Grails 3 profiles

**Chapter 4** describes the implementation of the application admin portal that will be used in Intranet by the site administrators, based on a classical Grails 3 Web Profile
**Chapter 5** describes the implementation of the application site exposed to the Internet to the customers, that is based on Grails 3 Angular Profile 
**Chapter 6** describes a REST web API exposed with Grails 3 Rest Profile and consumed by a mobile hybrid application created with Ionic 2 (can be published in Google Play, Apple Store, and Windows Store)

Tuesday, October 25, 2016

Good things


I will try here to keep here a list with various things that improved my day to day work!

Jenkins Server in minutes

If you want to have a rapid Jenkins server (eventually free for one year for your free AWS account) you can use this Jenkins preconfigured EC2 instance from AwsMarketlace. You press one button and the server is provisioned for you automatically (the password is shown in console). Link in Aws Marketplace: https://aws.amazon.com/marketplace/pp/B00NNZUF3Q

Apple Continuity

If you have an Apple Mac wits MacOS Sierra, iPhone/iPad (iOs 10), Apple Watch (OS 3) you can use some cool features based on Apple Continuity (more info here)
  • Universal Clipboard your clipboard is shared between devices - copy on a device and paste on another
  • Handoff - start working on a device and continue on another (you can  see the changes in real-time on both devices)
  • Auto Unlock - unlock your Mac with Apple Watch -> demo; tutorial

Git Workflows

If you want to improve your Git workflow you can use one of the workflows described here: https://www.atlassian.com/git/tutorials/comparing-workflows You can improve from a Centralized Workflow to Feature Branch Workflow and in the end to Gitflow Workflow. Or this simple flow. Or other workflows.


HDD

Very interesting topic: HDD - Hypothesis Driven Development - it was in my mind but it seems it is in other minds too. See this interesting article: https://barryoreilly.com/2013/10/21/how-to-implement-hypothesis-driven-development. And also this manifesto from Steve Black named Customer Development manifesto: https://steveblank.com/2012/03/29/nail-the-customer-development-manifesto/

PWA

First, I saw this announcement: Crosswalk 23 to be the last Crosswalk release and after this, I saw a Service Worker in the Ionic 2 templates.  PWA it is described here: https://developers.google.com/web/updates/2015/12/getting-started-pwa. How you can do this with  Angular and Spring Boot you can find here: https://stormpath.com/blog/progressive-web-applications-angular-spring-boot-stormpath. I remember that the Android Instant Apps was an announcement of Google http://www.theverge.com/2016/5/18/11703884/android-instant-apps-no-download.

Progressive Web Applications -


Friday, September 30, 2016

My Own Technologies Radar

After the Java One 2016 SF Conference I decided to clarify the stack of technologies that I like to (continue to) use, experiment or learn.

Happy to use
  • Java, Groovy, JavaScript
  • Spring instead of Java EE
  • Intellij Idea instead of Eclipse (I use Darcula LAF but old Eclipse shortcuts)
  • Git (Stash - Bitbucket, and not so much Github) instead of SVN
  • Gradle(Groovy scripting) instead of Maven, Ant
  • Spock and Geb instead of (in fact together) with JUnit
  • Angular instead of JQuery
  • Grails (Spring, Hibernate, Quartz)
  • Ionic (Angular, Cordova) for hybrid mobile applications (Android, iOS, Windows Phone)
  • AWS (I'm already using: Elastic Beanstalk, EC2, S3, CloudFront, Glacier, RDS, VPC, Route 53, IAM, CM, SES, WorkMail)
  • Atlassian Suite (Jira, HipChat, Bamboo, Bitbucket)
  • Apple products (Mac Book Pro -> macOS Sierra, iPhone -> iOS 10, Apple Watch -> watchOS 3)

To experiment and learn
  • Java 9 (modules, jshell)
  • Docker
  • Lambda expressions and streams (Java 8)
  • AWS Lambda + Api Gateway services
  • Scala (the last JVM language I will learn -> I will participate at  Scala eXchange 2016 in London)
  • Windows 10 and Windows Phone (because they are sharing the same store now)
  • Raspberry Pi (I already have a PI 3 MODEL B)

To keep an eye on (I used them in past but not currently)
  • Java EE (rebranded from JEE): Servlets, JSP, JAX-RS, JSF, EJB, CDI, JPA, etc
  • VertX (with Java 9 lambdas the syntax is more clean than before)
  • Firebase (for cloud serverless )
  • Jenkins
  • Mongo DB

Switch to new versions
  • Java 7 -> Java 8
  • Grails 2 -> Grails 3
  • Ionic 1 -> Ionic 2 (Angular 1 -> 2)

Java One 2016 SF

Some ideas and resources after Java One 2016 SF

Ideas

ORACLE like everybody in the market is doing cloud, micro services, reactive and ... ‘messaging bots’ these days. The last part is not clear for me. Why should Oracle do the 'messaging bots' like FaceBook?

Red Hat presentation where in general based on VertX so I think they want to promote it to the market!

I preferred Java Core presentations instead of Java EE (I’m a Spring fan so I just want to keep an eye on Java EE development).

I was interested in the new release of Java 9 (modularity and other improvements). I was interested in GC, concurrency, memory model for Java 8.

Three types of presentations
  • Singleton -> Venkart - it was always full with queues at conference rooms entrances
  • Pool of objects -> Core Oracle teams
    • very young presenters accompanied by elder ones
      • Java 9 is on good hands
      • the Java will have a good feature nX10 years from now
  • Prototypes -> sole wolfs presenting various technologies
Bad things
  • the conference web app was hard to be used - (we saw a PHP exception)
  • mobile app was not working at all (both Android and iOs)
  • to many session available in parralel in the middle of the day; to few in the morning
  • Java One is shadowed by the Oracle World conference

Links
JavaOne 2016 Youtube Channel (#85 - but where more than that; a big part of them where not been recorded by Oracle): https://www.youtube.com/playlist?list=PLPIzp-E1msrYicmovyeuOABO4HxVPlhEA 


Some interesting presentations (I didn’t participate but I watched the videos):


USA for me

Good things
  • Uber and Lyft works great
  • Airbnb works great
  • Delta Airlines has in-flight WiFi 
  • big sandy beaches in LA
  • good barista coffee (Big Shoulders - Chicago, Rose Park Roasters - LA Long Beach) - Starbucks was just an emergency solution for us

Bad things

  • Junk food everywhere
  • Drugs smells in downtown SF (I hope in Stanford campus is not the same smell)
  • homeless people in SF even near Moscone Center
  • phone SIM cards are very expensive comparing to Europe

The last conference for me was SpringOne 2GX 2015 (https://www.youtube.com/playlist?list=PLgGXSWYM2FpPuIFvbv6U_5cKLJB6PQbN4)

Wednesday, June 26, 2013

Vert.x resources

Vert.x = the next generation polyglot asynchronous application platform. For those who are interested, some Vert.x resources:


Resources

Dependencies

Developers

Alternatives

Presentations, interviews, articles

Miscellaneous
Mod management:

Samples