moose: how to solve real problems without reading code

47
Moose @girba @moosetechnology how to solve real problems without reading code

Upload: tudor-girba

Post on 10-May-2015

525 views

Category:

Software


0 download

DESCRIPTION

I use this set of slides for a talk I gave at ESUG 2014. Abstract: Moose is a platform for software and data analysis (http://moosetechnology.org). It runs on Pharo and it can help you figure out problems around software systems. In this talk, I show several real-life examples of how custom tools built on top of Moose helped solve concrete problems. The examples vary both in scope and in the kind of problems. For example, we talk about how we fixed a caching problem in a Java system by analyzing logs, or how we fixed a Morphic problem by means of visualization and interaction. Even if these problems are so different, all of them were solvable with one uniform set of programmable tools. That is the power of Moose, and it is now at the fingertips of any Pharo programmer.

TRANSCRIPT

Page 1: Moose: how to solve real problems without reading code

Moose

@girba!@moosetechnology

how to solve real problems!without reading code

Page 2: Moose: how to solve real problems without reading code

Moose?

Page 3: Moose: how to solve real problems without reading code

Mooseplatform for software!and data analysis

Page 4: Moose: how to solve real problems without reading code
Page 5: Moose: how to solve real problems without reading code
Page 6: Moose: how to solve real problems without reading code
Page 7: Moose: how to solve real problems without reading code
Page 8: Moose: how to solve real problems without reading code
Page 9: Moose: how to solve real problems without reading code
Page 10: Moose: how to solve real problems without reading code
Page 11: Moose: how to solve real problems without reading code
Page 12: Moose: how to solve real problems without reading code
Page 13: Moose: how to solve real problems without reading code
Page 14: Moose: how to solve real problems without reading code
Page 15: Moose: how to solve real problems without reading code

Moosecrafting analyses!made easy

Page 16: Moose: how to solve real problems without reading code

Moosehow to solve real problems!without reading code

Page 17: Moose: how to solve real problems without reading code
Page 18: Moose: how to solve real problems without reading code

@Remote(...)@Stateless(...)public class A implements IA { @EJB private IB b; ...}

@Remote(...)@Stateless(...)public class B implements IB { @EJB private IA a; ...}

Page 19: Moose: how to solve real problems without reading code

@Remote(...)@Stateless(...)public class A implements IA { @EJB private IB b; ...}

(model allClasses select: #isRemote) cyclesToAll: [ :class | class attributes flatCollectAsSet: [ :attr | attr declaredType withSubclassHierarchy ]]]

@Remote(...)@Stateless(...)public class B implements IB { @EJB private IA a; ...}

Page 20: Moose: how to solve real problems without reading code
Page 21: Moose: how to solve real problems without reading code
Page 22: Moose: how to solve real problems without reading code
Page 23: Moose: how to solve real problems without reading code

2012-03-13 16:10:56,876 TRACE CachingDelegate: Cache hit /service/Region QueryTO [depth=-1, parentDepth=1, namespace=Region, regioncode=IACA, itemcodes=[APA4725090], codesystem=, elementkind=ITEM, descriptionIncluded=false, validityTestMode=false] hash=-7424588642012-03-13 16:10:58,470 TRACE CachingDelegate: Cache MISS /service/Region QueryTO [depth=1, parentDepth=2, namespace=Region, regioncode=Structure, itemcodes=[], codesystem=, elementkind=ITEM, descriptionIncluded=false, validityTestMode=false] hash=20032700212012-03-13 16:10:58,563 INFO LegacyScriptCalls: LegacyScriptCall called with Parameter: namespace[nnn;Core]From=abcTo=xyz![DataFilter]Id=1234![OutputFormat]Format=xml![XsltConfig]XSLT=WithItemId] payload[]2012-03-13 16:10:58,798 INFO ActionService: getActionsByDate: patId=8909580, caseId=3807672, from=Wed Dec 21 00:00:00 CET 2011, to=Wed Mar 14 00:00:00 CET 20122012-03-13 16:10:58,923 TRACE CachingDelegate: Cache hit /service/Region AnotherQueryTO [regioncode=null, itemCodes=[], namespace=Region, codeSystem=domain.entry, elementKind=Region, validityDate=Tue Mar 13 00:00:00 CET 2012, descriptionIncluded=false, locale=de_CH, validityTestMode=false] hash=5706335772012-03-13 16:10:59,266 TRACE CachingDelegate: Cache MISS /service/AnotherRegion QueryTO [depth=1, parentDepth=-1, namespace=AnotherRegion, regioncode=630, itemcodes=[I_23451], codesystem=, elementkind=ITEM, descriptionIncluded=false, validityTestMode=false] hash=-1116635756

Page 24: Moose: how to solve real problems without reading code

2012-03-13 16:10:56,876 TRACE CachingDelegate: Cache hit /service/Region QueryTO [depth=-1, parentDepth=1, namespace=Region, regioncode=IACA, itemcodes=[APA4725090], codesystem=, elementkind=ITEM, descriptionIncluded=false, validityTestMode=false] hash=-7424588642012-03-13 16:10:58,470 TRACE CachingDelegate: Cache MISS /service/Region QueryTO [depth=1, parentDepth=2, namespace=Region, regioncode=Structure, itemcodes=[], codesystem=, elementkind=ITEM, descriptionIncluded=false, validityTestMode=false] hash=20032700212012-03-13 16:10:58,563 INFO LegacyScriptCalls: LegacyScriptCall called with Parameter: namespace[nnn;Core]From=abcTo=xyz![DataFilter]Id=1234![OutputFormat]Format=xml![XsltConfig]XSLT=WithItemId] payload[]2012-03-13 16:10:58,798 INFO ActionService: getActionsByDate: patId=8909580, caseId=3807672, from=Wed Dec 21 00:00:00 CET 2011, to=Wed Mar 14 00:00:00 CET 20122012-03-13 16:10:58,923 TRACE CachingDelegate: Cache hit /service/Region AnotherQueryTO [regioncode=null, itemCodes=[], namespace=Region, codeSystem=domain.entry, elementKind=Region, validityDate=Tue Mar 13 00:00:00 CET 2012, descriptionIncluded=false, locale=de_CH, validityTestMode=false] hash=5706335772012-03-13 16:10:59,266 TRACE CachingDelegate: Cache MISS /service/AnotherRegion QueryTO [depth=1, parentDepth=-1, namespace=AnotherRegion, regioncode=630, itemcodes=[I_23451], codesystem=, elementkind=ITEM, descriptionIncluded=false, validityTestMode=false] hash=-1116635756

Cache MISS

Cache hit

Cache MISS

Cache hit

Page 25: Moose: how to solve real problems without reading code

2012-03-13 16:10:56,876 TRACE CachingDelegate: Cache hit /service/Region QueryTO [depth=-1, parentDepth=1, namespace=Region, regioncode=IACA, itemcodes=[APA4725090], codesystem=, elementkind=ITEM, descriptionIncluded=false, validityTestMode=false] hash=-7424588642012-03-13 16:10:58,470 TRACE CachingDelegate: Cache MISS /service/Region QueryTO [depth=1, parentDepth=2, namespace=Region, regioncode=Structure, itemcodes=[], codesystem=, elementkind=ITEM, descriptionIncluded=false, validityTestMode=false] hash=20032700212012-03-13 16:10:58,563 INFO LegacyScriptCalls: LegacyScriptCall called with Parameter: namespace[nnn;Core]From=abcTo=xyz![DataFilter]Id=1234![OutputFormat]Format=xml![XsltConfig]XSLT=WithItemId] payload[]2012-03-13 16:10:58,798 INFO ActionService: getActionsByDate: patId=8909580, caseId=3807672, from=Wed Dec 21 00:00:00 CET 2011, to=Wed Mar 14 00:00:00 CET 20122012-03-13 16:10:58,923 TRACE CachingDelegate: Cache hit /service/Region AnotherQueryTO [regioncode=null, itemCodes=[], namespace=Region, codeSystem=domain.entry, elementKind=Region, validityDate=Tue Mar 13 00:00:00 CET 2012, descriptionIncluded=false, locale=de_CH, validityTestMode=false] hash=5706335772012-03-13 16:10:59,266 TRACE CachingDelegate: Cache MISS /service/AnotherRegion QueryTO [depth=1, parentDepth=-1, namespace=AnotherRegion, regioncode=630, itemcodes=[I_23451], codesystem=, elementkind=ITEM, descriptionIncluded=false, validityTestMode=false] hash=-1116635756

Cache MISS

Cache hit

Cache MISS

Cache hit

QueryTO

AnotherQueryTO

QueryTO

QueryTO

Page 26: Moose: how to solve real problems without reading code
Page 27: Moose: how to solve real problems without reading code
Page 28: Moose: how to solve real problems without reading code
Page 29: Moose: how to solve real problems without reading code
Page 30: Moose: how to solve real problems without reading code
Page 31: Moose: how to solve real problems without reading code
Page 32: Moose: how to solve real problems without reading code
Page 33: Moose: how to solve real problems without reading code
Page 34: Moose: how to solve real problems without reading code
Page 35: Moose: how to solve real problems without reading code
Page 36: Moose: how to solve real problems without reading code
Page 37: Moose: how to solve real problems without reading code
Page 38: Moose: how to solve real problems without reading code
Page 39: Moose: how to solve real problems without reading code
Page 40: Moose: how to solve real problems without reading code

pharo.org

Page 41: Moose: how to solve real problems without reading code
Page 42: Moose: how to solve real problems without reading code

Tudor Gîrba!www.tudorgirba.com

http://creativecommons.org/licenses/by-nc-sa/3.0/

freeonlinenews.org/london-underground-150th-anniversary

Page 43: Moose: how to solve real problems without reading code
Page 44: Moose: how to solve real problems without reading code
Page 45: Moose: how to solve real problems without reading code
Page 46: Moose: how to solve real problems without reading code

Moosehow to solve real problems!without reading code

@girba!@moosetechnology

Page 47: Moose: how to solve real problems without reading code

Tudor Gîrba!www.tudorgirba.com

http://creativecommons.org/licenses/by-nc-sa/3.0/