I believe it's enough to have [Final] keyword set in deployed mode to give a developer a hint that this class should not be extended.

If you want to enforce this behaviour, I would add a check into each method as a first line , something like

if $this.%ClassName(1)'="My.Class" quit $$$ERROR(50000,"don't extend this class")

Since all code will be deployed, developers will not be able to remove this check easily.

You can also try to add a method-generator, I believe when you have a deployed class with method generator it will not be able to compile a subclass without method generator's source (though I'm not sure).

Please find slides for my presentation here https://www.slideshare.net/secret/bnUsuAWXsZCKrp (Modern Development Environment)

Please find repository here https://github.com/logist/wduk18 - you will need to load your own IRIS container and change "FROM" statement in Dockerfile - see http://docs.intersystems.com/irislatest/csp/docbook/DocBook.UI.Page.cls?... for instructions. You'll also need license key because REST service will not work without it.

Hi Ed,

I prefer to have real-time real-world discussion near the whiteboard to leaving comments in issue tracker.

discussion about implementation strategy

You do a whiteboard discussion and write results into your Wiki/Confluence where it's easy to find it. Then you have a code review tool to make sure you implemented it correctly

references to other issues

Don't need this

cross-references to commits

Also don't need this, just write meaningful commit messages

test hints

Talk to tester

start/due dates & time spent

I usually write date the card was created in the corner to track how old it is. Then place it in the backlog based on its urgency. Don't need anything else.

milestones

You can organise your backlog into milestones.

current status

Sprint status is obvious by looking at whiteboard. For more high-level status use wiki/confluence and update it once in a while manually.

assigned person(s)

It's either written on the card or there are "person buckets" on the whiteboard. I usually don't assign issues to people until they start working on them - so if we have capacity for 20 dev days in a sprint there will be few unassigned cards on a whiteboard and people assign themselves once they pick their next card

Issues help to collect all this information and make it available later

It's a bit scary at first to just throw away all completed issues at the end of the sprint, but in reality there's nothing wrong with it. Most of this information is available via source control, and there are not many use cases where you would need to look up an old issue to have some info that's not in source control anyway.

My advise to small teams that are co-located in the same office is not to use issue tracking system at all and use physical cards on whiteboard instead. In my experience using issue tracker just adds overhead without any significant benefits compared to index cards. Obviously if you have a large or distributed team you should use something, but again the simpler the better

Here is a random example from the internet (I usually use bigger cards, A6 format - quarter of a standard paper sheet):

Another example: http://theagilepirate.net/archives/1178

Hi Andre Claude,

Thank you for sharing your framework, and for great presentation at Global Summit. I'm looking forward to see your detailed article in Developers Community!

We have a documentation available online, you can link directly to it: http://docs.intersystems.com/latest/csp/docbook/DocBook.UI.Page.cls?KEY=TUNT_ExampleTestPortal

Also, video recording of Andre's presentation and PDF of his slides are available at https://learning.intersystems.com/course/view.php?id=664

Hi Sebastian,

How do you currently determine SMP URL? Usually web server configuration is external to Cache, so there are not many options except asking user to enter SMP URL manually. That's what InterSystems is doing when connecting from external tools like Studio as well. 

Any attempt to be smart about it will sooner or later cause you problems with exotic setups like load balancers, external web servers on separate machines, etc etc

 

Cheers

Sergei