Build apps for voice, chat, web and mobile

ServerlessConf Paris is in full swing this week, and I had the chance yesterday to participate in a workshop with my colleagues Bret and Frank, to cover building apps for voice, chat, web and mobile, using Google's serverless solutions. In particular, for voice & chat, I spoke about Dialogflow and Google Assistant / Actions on Google, using Cloud Functions for my business logic, while in the afternoon we covered Firebase un more depth.

If you want to have a quick look at the deck, here are the slides that I presented:

I'm a Java Champion!

The Java Champions recently nominated me to become a Java Champion!

There's also a post on the Java Champions' blog, and InfoQ also echoed the new nominees recently.

I'm super happy and proud of this nomination, and I'm looking forward to continuing being involved in the Java ecosystem, present at Java-friendly conferences, contribute to Open Source projects using Java and Apache Groovy, and write articles here and there using my favorite languages.

Pre-trained Machine Learning APIs presentation and video

Last month, for the first time, I visited Riga (Latvia), for the DevTernity conference. I really enjoyed my time there, and wish to come back with other topics next time. The organizers took very well care of the speakers, and the presentations were very interesting.

I had the pleasure to talk about the pre-trained machine learning APIs provided by Google Cloud Platform, and say a few words as well about TensorFlow and Cloud ML Engine.

The talk was recorded, and I wanted to share with you the video and the slides of the presentation.

And here is the deck:

The 2018 countdown: A tip a day about Google Cloud Platform

A few weeks ago, I've started a new blog dedicated to Google Cloud Platform, to share tips'n tricks I come across while exploring the platform, getting to know new products, or gathered through experience with a particular service I've been using:

With the holidays season, I went with a "2018 countdown" approach (like an "advent calendar" without the religious connotation), where I publish a tip every day of the month of December.

As of today, December 18th, we already have 18 tips available!

Those tips span about a dozen technologies! (as you can also explore the tips via "tags", which represent a technology / service / API / product each)

Initially, I thought it would be a challenge to author tips every day (without even thinking of the fact you have to publish tips during weekends, holidays or vacations), but there are actually plenty of tricks to share. Furthermore, I opened the blog to contributions: anyone who wants to contribute a tip or two is welcome, and should just share with me a quick gist describing the tip. I've already received a bunch of contributions, from 8 distinct authors. Thanks a lot to Alexandre, Bastien, Fabien, Graham, Jim, Mark, Victor, or Wassim!

Although it all started as a tip a day for the 2018 countdown, it won't stop there. Perhaps the frequency will be a bit lower (once a week? more?), but I definitely intend on continuing sharing tips on a regular basis next year and beyond!

If you want to help, please spread the word! Tell your friends and colleagues about the site:

Also please follow the @gcptips Twitter account where new tips'n tricks are announced.

And if you've got some time, don't hesitate to share your own tips! All help is welcome :-)

Gradle vs Maven and Gradle in Kotlin or Groovy

Once in a while, when talking about Gradle with developers, at conferences or within the Groovy community (but with the wider Java community as well), I hear questions about Gradle. In particular Gradle vs Maven, or whether developers adopt the Kotlin DSL for Gradle builds.

In the past, I blogged several times about using BigQuery and the Github dataset to analyze open source projects hosted on Github, by running some SQL queries against that dataset. You might want to have a look at this past article on some Gradle analysis with BigQuery. Considering those questions popped up recently, I decided to do a quick run through those questions with some simple queries.

Gradle vs Maven?

First, let's look at Maven builds. We can run the following query:

SELECT count(*) 
FROM [bigquery-public-data:github_repos.files] 
WHERE path LIKE '%pom.xml'

There are 1,125,150 pom files.

Then, for Gradle, I ran this query (even if projects could have different build file names):

SELECT count(*) 
FROM [bigquery-public-data:github_repos.files] 
WHERE path LIKE '%build.gradle'

There are 414,329 build.gradle files.

So that's 1 Gradle build file for 2.7 Maven build file.

Gradle builds in Kotlin or in Groovy?

Now for Kotlin, the convention seems to be about naming your build files with build.gradle.kts. So let's run the following query:

SELECT count(*) 
FROM [bigquery-public-data:github_repos.files] 
WHERE path LIKE '%build.gradle.kts'

There are only 207 Gradle builds files written in Kotlin.

Basically, Groovy-based Gradle builds are 2000 times more popular than Kotlin-based builds.

A grain of salt

Now, all that said, remember that developers can name their build files differently, that it's only a snapshot of the projects available on Github, and furthermore, just open source projects (at least projects that explicitly have a LICENSE file). Note for example as well that there are Gradle based projects that also have a pom.xml file available, although they're not using Maven for their build. 

Also, perhaps it'd be more interesting to run the queries by counting repositories, rather than build files: Perhaps Gradle users tend to split their build files in smaller build files, in a less monolithic way than with Gradle? Practices and habits may vary greatly. 

For the Gradle vs Maven question, at Devoxx Belgium, I ran the following (more complex) query where I look at repositories containing Gradle or Maven build files:

select file, count(file) FROM (
  (SELECT 'gradle' as file, count(repo_name)
  FROM `bigquery-public-data.github_repos.files`
  WHERE path LIKE '%build.gradle'
  GROUP BY repo_name)
  (SELECT "maven" as file, count(repo_name)
  FROM `bigquery-public-data.github_repos.files`
  WHERE path LIKE '%pom.xml'
  GROUP BY repo_name)
group by file

Gradle and Maven are already much closer to each other by looking at repository counts than just by pure number of build files, perhaps indeed showing a trend with Gradle users to modularize their builds more.

We get 118,386 repositories using Gradle versus 143,290 repositories using Maven. So Gradle is almost at the same level as Maven from that repository perspective, Still catching up with Maven!

Famous last words

Don't necessarily draw too big conclusions out of those figures, there are many ways to make stats, and those figures are only a small fraction of all the projects in existence in the world... but at least, they certainly exhibit a certain trend, which is still interesting to know and think about!
© 2012 Guillaume Laforge | The views and opinions expressed here are mine and don't reflect the ones from my employer.