profile
viewpoint
Stéphane Nicolas stephanenicolas @Square San Francisco, USA http://stackoverflow.com/users/693752/snicolas Open source enthusiast, Java & Linux fan, Android dev. Favorite topics: quality, performance, testability, dependency injection, continuous integration, gradle.

f2prateek/dart 1204

Extras binding and intent builders for Android apps.

groupon/grox 337

Grox helps to maintain the state of Java / Android apps.

stephanenicolas/boundbox 229

BoundBox provides an easy way to test an object by accessing all its fields, constructor and methods, public or not. BoundBox breaks encapsulation.

jakenjarvis/Android-OrmLiteContentProvider 179

[Android] This is a library that easy to make using ContentProvider with OrmLite.

stephanenicolas/afterburner 70

A library to help other librairies getting rid of boiler plate via byte code manipulation. Works on Android too.

stephanenicolas/androidstudio4maccheatsheet 22

Most useful keyboard shortcuts with default keymap in Android Studio.

stephanenicolas/activtity-fragment-lambda 17

Example of how to use lambdas to communicate between Fragments and Activities

darylteo/javassist-gradle-plugin 10

Sister project to Javassist-Maven-Plugin

stephanenicolas/butterknife 6

Butterfork: A fork of Butterknife to support incremental annotation processing and other cool features.

stephanenicolas/CleanAndroidCode 3

ALL YOUR LIB ARE BELONG TO US

starteddropbox/kaiken

started time in 8 days

startedstephanenicolas/ormlite-android-gradle-plugin

started time in 10 days

startedstephanenicolas/reflection-no-reflection

started time in 15 days

startedstephanenicolas/toothpick

started time in 15 days

startedstephanenicolas/robospice

started time in 17 days

startedstephanenicolas/toothpick

started time in 19 days

starteddropbox/AffectedModuleDetector

started time in 19 days

startedstephanenicolas/toothpick

started time in 19 days

starteddropbox/AffectedModuleDetector

started time in 21 days

push eventAndroidStudyGroup/conferences

cketti

commit sha 6a844cc8f2c7f4d8693338906d3d73ccf5e91203

Don't include canceled/postponed conferences in iCalendar file Exclude conferences that have a 'status' value set from conferences.ics

view details

cketti

commit sha a365e9d9b7c3e008bb3cacb1d1875dfb8344bf82

Merge pull request #652 from cketti/exclude_canceled_from_ical_file Don't include canceled/postponed conferences in iCalendar file

view details

push time in a month

PR merged AndroidStudyGroup/conferences

Don't include canceled/postponed conferences in iCalendar file

Exclude conferences that have a status value set from conferences.ics.

This assumes PR #650 will be merged and the presence of a status value indicates the conference is not happening at the date indicated in the data file (i.e. conference was either canceled or postponed).

+6 -2

0 comment

1 changed file

cketti

pr closed time in a month

push eventAndroidStudyGroup/conferences

cketti

commit sha 02ad8a3f1c4e1f9641e653e7718b86469628d56e

Clean up generated HTML - Use Liquid's whitespace control: https://shopify.dev/docs/themes/liquid/reference/basics/whitespace - Don't use JavaScript to insert CfP, status, and online-only labels - Don't show "Happening now" or CfP label when a conference has a 'status' value set - Add data attributes to HTML elements and make one JavaScript snippet do all the work

view details

cketti

commit sha 290c635c9cf7c7f01e4fa312d28b315e477961a4

Merge pull request #651 from cketti/frontend_cleanup Clean up generated HTML

view details

push time in a month

PR merged AndroidStudyGroup/conferences

Clean up generated HTML
  • Use Liquid's whitespace control: https://shopify.dev/docs/themes/liquid/reference/basics/whitespace
  • Don't use JavaScript to insert CfP, status, and online-only labels
  • Don't show "Happening now" or CfP label when a conference has a 'status' value set
  • Add data attributes to HTML elements and make one JavaScript snippet do all the work

This assumes PR #650 will be merged and the presence of a status value indicates the conference is not happening at the date indicated in the data file (i.e. conference was either canceled or postponed).

+77 -69

1 comment

3 changed files

cketti

pr closed time in a month

push eventAndroidStudyGroup/conferences

Nicola Corti

commit sha 02174e5085d8879a4b00db94286fdd346553b74e

GOTO: Amsterdam 2020 is canceled

view details

cketti

commit sha 9cb273873f83fee7c0d22fdfc7a37776a89fa8ee

Merge pull request #665 from cortinico/nc/goto-ams GOTO: Amsterdam 2020 is canceled

view details

push time in a month

PR merged AndroidStudyGroup/conferences

GOTO: Amsterdam 2020 is canceled

I've canceled the 2020 instalment, and created the 2021 event: https://gotoams.nl/

+9 -0

0 comment

2 changed files

cortinico

pr closed time in a month

PR opened AndroidStudyGroup/conferences

GOTO: Amsterdam 2020 is canceled

I've canceled the 2020 instalment, and created the 2021 event: https://gotoams.nl/

+9 -0

0 comment

2 changed files

pr created time in a month

startedstephanenicolas/toothpick

started time in a month

startedstephanenicolas/robospice

started time in a month

issue commentf2prateek/dart

The plugin does not support Configuration Caching

I need this too, any updates? Google's nav component sucks, they need to simplify it how they added hilt to dagger.

stephanenicolas

comment created time in a month

startedstephanenicolas/android-for-dummies-v3

started time in a month

pull request commentAndroidStudyGroup/conferences

Clean up generated HTML

The asymmetry was intentional. That retains enough newlines to make the generated HTML human-readable.

cketti

comment created time in a month

Pull request review commentAndroidStudyGroup/conferences

Clean up generated HTML

 ---  <ul class="conference-list list-unstyled">-{% assign sorted_conferences = site.conferences | sort: 'date_start' | reverse %}-{% assign today = site.time | date: "%s" %}-{% for conference in sorted_conferences %}-  {% assign date_end = conference.date_end | date: "%s" %}-  {% if today >= date_end %}+{%- assign sorted_conferences = site.conferences | sort: 'date_start' | reverse -%}+{%- assign today = site.time | date: "%s" -%}+{%- for conference in sorted_conferences -%}+  {%- assign date_end = conference.date_end | date: "%s" -%}+  {%- if today >= date_end %}
  {%- if today >= date_end -%}
cketti

comment created time in a month

Pull request review commentAndroidStudyGroup/conferences

Clean up generated HTML

 ---  <ul class="conference-list list-unstyled">-{% assign sorted_conferences = site.conferences | sort: 'date_start' | reverse %}-{% assign today = site.time | date: "%s" %}-{% for conference in sorted_conferences %}-  {% assign date_end = conference.date_end | date: "%s" %}-  {% if today >= date_end %}+{%- assign sorted_conferences = site.conferences | sort: 'date_start' | reverse -%}+{%- assign today = site.time | date: "%s" -%}+{%- for conference in sorted_conferences -%}+  {%- assign date_end = conference.date_end | date: "%s" -%}+  {%- if today >= date_end %}   <li>     {{ conference.date_start | date: "%Y-%m-%d" }}&nbsp;     <a class="post-link" href="{{ conference.website }}">{{ conference.name }}</a>-    {% if conference.location %}+    {%- if conference.location %}     &nbsp;<small>{{ conference.location }}</small>-    {% endif %}+    {%- endif %}
    {%- endif -%}
cketti

comment created time in a month

Pull request review commentAndroidStudyGroup/conferences

Clean up generated HTML

 title: Upcoming --- -<script>-function dateTimestamp(date = undefined) {-  var day = (date == undefined) ? new Date() : new Date(date);-  return day.setHours(0, 0, 0, 0)-}--var today = dateTimestamp();-</script> <ul class="conference-list list-unstyled">-{% assign sorted_conferences = site.conferences | sort: 'date_start' %}-{% assign today = site.time | date: "%s" %}-{% for conference in sorted_conferences %}-  {% assign date_end = conference.date_end | date: "%s" %}-  {% if today < date_end %}-  <li id='{{ forloop.index }}'>+{%- assign sorted_conferences = site.conferences | sort: 'date_start' -%}+{%- assign today = site.time | date: "%s" -%}+{%- for conference in sorted_conferences -%}+  {%- assign date_end = conference.date_end | date: "%s" -%}+  {%- if today < date_end %}+  <li id='{{ forloop.index }}' data-conference-start="{{ conference.date_start | date: "%Y-%m-%d" }}" data-conference-end="{{ conference.date_end | date: "%Y-%m-%d" }}">     {{ conference.date_start | date: "%Y-%m-%d" }}&nbsp;     <a class="post-link" href="{{ conference.website }}">{{ conference.name }}</a>-    {% if conference.location %}+    {%- if conference.location %}     &nbsp;<small>{{ conference.location }}</small>-    {% endif %}-    <script>-      {% if conference.cfp.start %}-      if (today >= dateTimestamp('{{ conference.cfp.start | date: "%Y-%m-%d" }}') && today <= dateTimestamp('{{ conference.cfp.end | date: "%Y-%m-%d" }}')) {-        document.write('<a href="{% if conference.cfp.site %}{{ conference.cfp.site }}{% else %}{{ conference.website }}{% endif %}"><span class="label label-info">Call For Papers until {{ conference.cfp.end | date: "%Y-%m-%d" }}</span></a>');-      }-      {% endif %}-      {% if conference.status %}-        document.write('<span class="label label-danger">{{ conference.status }}</span>');-      {% endif %}-      {% if conference.online %}-        document.write('<span class="label label-primary">Online-only event</span>');-      {% endif %}-      if (today >= dateTimestamp('{{ conference.date_start | date: "%Y-%m-%d" }}') && today <= dateTimestamp('{{ conference.date_end | date: "%Y-%m-%d" }}')) {-        document.write('<span class="label label-success">Happening Now</span>');-      }-      if (today > dateTimestamp('{{ conference.date_end | date: "%Y-%m-%d" }}')) {-        document.getElementById('{{ forloop.index }}').style.color="gray";-      }-    </script>+    {%- endif -%}++    {%- if conference.cfp.start %}
    {%- if conference.cfp.start -%}
cketti

comment created time in a month

Pull request review commentAndroidStudyGroup/conferences

Clean up generated HTML

 ---  <ul class="conference-list list-unstyled">-{% assign sorted_conferences = site.conferences | sort: 'date_start' | reverse %}-{% assign today = site.time | date: "%s" %}-{% for conference in sorted_conferences %}-  {% assign date_end = conference.date_end | date: "%s" %}-  {% if today >= date_end %}+{%- assign sorted_conferences = site.conferences | sort: 'date_start' | reverse -%}+{%- assign today = site.time | date: "%s" -%}+{%- for conference in sorted_conferences -%}+  {%- assign date_end = conference.date_end | date: "%s" -%}+  {%- if today >= date_end %}   <li>     {{ conference.date_start | date: "%Y-%m-%d" }}&nbsp;     <a class="post-link" href="{{ conference.website }}">{{ conference.name }}</a>-    {% if conference.location %}+    {%- if conference.location %}
    {%- if conference.location -%}
cketti

comment created time in a month

Pull request review commentAndroidStudyGroup/conferences

Clean up generated HTML

 title: Upcoming --- -<script>-function dateTimestamp(date = undefined) {-  var day = (date == undefined) ? new Date() : new Date(date);-  return day.setHours(0, 0, 0, 0)-}--var today = dateTimestamp();-</script> <ul class="conference-list list-unstyled">-{% assign sorted_conferences = site.conferences | sort: 'date_start' %}-{% assign today = site.time | date: "%s" %}-{% for conference in sorted_conferences %}-  {% assign date_end = conference.date_end | date: "%s" %}-  {% if today < date_end %}-  <li id='{{ forloop.index }}'>+{%- assign sorted_conferences = site.conferences | sort: 'date_start' -%}+{%- assign today = site.time | date: "%s" -%}+{%- for conference in sorted_conferences -%}+  {%- assign date_end = conference.date_end | date: "%s" -%}+  {%- if today < date_end %}+  <li id='{{ forloop.index }}' data-conference-start="{{ conference.date_start | date: "%Y-%m-%d" }}" data-conference-end="{{ conference.date_end | date: "%Y-%m-%d" }}">     {{ conference.date_start | date: "%Y-%m-%d" }}&nbsp;     <a class="post-link" href="{{ conference.website }}">{{ conference.name }}</a>-    {% if conference.location %}+    {%- if conference.location %}     &nbsp;<small>{{ conference.location }}</small>-    {% endif %}-    <script>-      {% if conference.cfp.start %}-      if (today >= dateTimestamp('{{ conference.cfp.start | date: "%Y-%m-%d" }}') && today <= dateTimestamp('{{ conference.cfp.end | date: "%Y-%m-%d" }}')) {-        document.write('<a href="{% if conference.cfp.site %}{{ conference.cfp.site }}{% else %}{{ conference.website }}{% endif %}"><span class="label label-info">Call For Papers until {{ conference.cfp.end | date: "%Y-%m-%d" }}</span></a>');-      }-      {% endif %}-      {% if conference.status %}-        document.write('<span class="label label-danger">{{ conference.status }}</span>');-      {% endif %}-      {% if conference.online %}-        document.write('<span class="label label-primary">Online-only event</span>');-      {% endif %}-      if (today >= dateTimestamp('{{ conference.date_start | date: "%Y-%m-%d" }}') && today <= dateTimestamp('{{ conference.date_end | date: "%Y-%m-%d" }}')) {-        document.write('<span class="label label-success">Happening Now</span>');-      }-      if (today > dateTimestamp('{{ conference.date_end | date: "%Y-%m-%d" }}')) {-        document.getElementById('{{ forloop.index }}').style.color="gray";-      }-    </script>+    {%- endif -%}++    {%- if conference.cfp.start %}+      <a class="conference-cfp hide" data-conference-cfp-start="{{ conference.cfp.start | date: "%Y-%m-%d" }}" data-conference-cfp-end="{{ conference.cfp.end | date: "%Y-%m-%d" }}" href="{% if conference.cfp.site %}{{ conference.cfp.site }}{% else %}{{ conference.website }}{% endif %}">+        <span class="label label-info">Call For Papers until {{ conference.cfp.end | date: "%Y-%m-%d" }}</span>+      </a>+    {%- endif -%}+    {%- if conference.status %}+      <span class="conference-status label label-danger">{{ conference.status }}</span>+    {%- endif -%}+    {%- if conference.online %}
    {%- if conference.online -%}
cketti

comment created time in a month

more