Building with Gradle Kotlin DSL 1.0

Big News!  (Aug 2018) After what seems like the longest time, Gradle support for using kotlin to drive gradle builds is now at version 1.0.  This is the best time for anyone to move to gradle.  This page is an introduction to gradle, using kotlin DSL What is a build tool? Which Build Tool? Basic… Continue reading Building with Gradle Kotlin DSL 1.0

Building in Intellij IDEA

This program is relevant for building your first "hello world" and first sample kotlin apps.  However, once you have even hello world running, it is recommended now to move to gradle for building, even when building with Intellij. The topics for this page: Introduction: why use Intellij at all. The Roles on an IDE What… Continue reading Building in Intellij IDEA

self, this + modifiers: private, public, protected, internal, open, final, inline

contents: self vs this this@ external attribute access why bother? python modifiers visibility inheritance: open, final, override inline self vs this Self vs this are not technically modifiers, but they do work in a similar way, to modify that 'self.name' can be different from 'name'. Code inside a class must work without an actual instance… Continue reading self, this + modifiers: private, public, protected, internal, open, final, inline

Python to Kotlin: Variables and Types

Contents: python kotlin boxed objects vs unboxed primitives None, Nothing, Unit and null null safety Python Variables and Types As explained in the background, all values in python are objects stored in dynamic 'heap' memory, and variables are simply references to these objects. This means the only static or stack frame based information for any… Continue reading Python to Kotlin: Variables and Types

Extension Functions & Extension Properties

The syntax and rules of extension functions are explained also explained elsewhere,  but this page is more tutorial style, covers the background and  'why do we need extensions'  and 'what is the benefit',  together with simple examples, and even useful examples. The topics are: What are extension functions/properties? What is the advantage of extension functions?… Continue reading Extension Functions & Extension Properties

Scheduling: Schedule, design, code?

Or perhaps: schedule, design, build?  Either way, while that sequence may sound like waterfall, even agile is really a repetition of this sequence over and over.  This page discusses why these 3 steps are problematic for software, but still must be followed despite problems, and how to schedule projects using this sequence that initially can… Continue reading Scheduling: Schedule, design, code?

TDD or Not TDD? That is the question!

What actually is TDD (Test Driven Development) ? Is TDD Dead? Do you associate this term for when Tests actually Drive Development,  or use the label TDD for the practice of ensuring code coverage by having units tests? TDD can be taken to mean different things than the original meaning, and there are some risks… Continue reading TDD or Not TDD? That is the question!