Gradle: UP-TO-DATE or not?

Running a gradle task with caching will only run a task if the inputsand outputsare either not defined or outdate. To get some debugging information about why a task is not UP-TO-DATE run gradle with –info gradle taskA --info ...

February 19, 2018 · 1 min · Markus Ruepp

Gradle: Run a dependent task, always

With gradle you can build a dependency tree using the dependsOn relation. To create the relation A → B, you could write: task A(dependsOn B) {.. } Gradle will then take care of that all dependencies are executed before the task runs. Strictly speaking an outdated dependency B should cause A to be rerun too. Unfortunately I did not find a way to define a project as part of inputs , I though found a workaround to forcibly rebuild a parent node....

February 16, 2018 · 1 min · Markus Ruepp

Gradle: configuration phase vs execution phase

task clean() { // runs always doLast { // runs only when executed delete "${buildDir}" } } ...

February 16, 2018 · 1 min · Markus Ruepp

Good Code

Good code tells you how, comments tell you why. ...

February 12, 2018 · 1 min · Markus Ruepp

Techology Radar

In a larger Team it might be difficult to keep your technology stack up to date and have a vision of what things should be used soon or not. Moreover this knowledge is difficult to be shared, to let team members know what the other members think should be e.g. evaluated. Technology radars (thoughtworks or zalando) is a good visualization to keep that overview on what technologies should be hold, assessed, tested or adopted....

February 12, 2018 · 1 min · Markus Ruepp

How netflix designs APIs

A really eye-opening talk by netflix how they designed their API and why did not follow the trends. Goals they followed: one request delivers the entire data needed to render a page no chatty clients customers create the REST endpoints themselfes, netflix solely provides a groovy versioned sdk to aggregate data See https://www.youtube.com/watch?v=StCrm572aEs...

November 16, 2017 · 1 min · Markus Ruepp

Monorepo

In the company I am working, we are using a multirepo approach to organize our source code. Unfortunately, with a growing number of repos we ran into problems. It became difficult to search for code, because you need all project checkout out and up to date Our conservative way of sharing code lead to a lot of overhead to keep the other ends up to date Therefore the inhibition threshold to change something increased because you wnt to avoid the overhead of creating all those branches with the new version reference You never know (immediately) if an update of a dependency broke something on the integrating side, because you don’t run their test suite....

October 30, 2017 · 3 min · Markus Ruepp

Shareable git hooks in projects

If you work like me in a project with multiple developers and you want to enforce certain standards, this should be done as early as possible. Knowing that you don’t fulfill the linter rules on Jenkins is way too late. One way to enforce feedback are git hooks. Though, the fact that they are stored in .git makes them difficult to share in a project. Luckily, the git hooks plugin for git helps out....

September 1, 2017 · 2 min · Markus Ruepp

How to Mentor Junior Developers

Every person should have a roadmap of things they want to achieve, shortterm, midterm and longterm. This is similar to a project, where proceed step by step towards those goals, a big picture. Personal Roadmap For juniors this is the same, but they might not have that personal big picture. Find out what they can and where they want to be, skill-wise Help them to achieve those things (obviously if the project goals allow it) Daily work There is quite some best practices out there - here or here - summarizing those, I want to emphasize the following ones....

August 31, 2017 · 1 min · Markus Ruepp

Maintaining a Single Page App

After “Securing a webapp” its time for a followup post, to dig a little deeper. Get secure OWASP’s top 10 JavaScript vulnerabilities A talk by Mike West on Frontend Security retirejs should run in the CI pipeline and fail the build for errors (vetting) Get maintainable Superhero.js lists a lot of literature on how performance, good tests, security and more ...

August 27, 2017 · 1 min · Markus Ruepp