SlideShare a Scribd company logo
1 of 14
Download to read offline
Faceted Navigation on Related Documents
           A tale of Daemons
      Wouter Danes – Hippo Gettogether – 20 april 2012
                                        Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   1
Agenda

•   About me
•   User story: faceted navigation for site wide search
•   Problem: practice doesn’t follow theory
•   Possible solution: Derived Data Engine
•   Better solution: Daemons!
•   Some stuff we learned
•   How to improve Hippo to make this easier



                                   Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   2
About me – Wouter Danes

•   Hired via Orange11 @Rijksoverheid.nl
•   Java (10yrs experience) & Hippo Developer
•   Competence Manager Java & Hippo @ Hinttech
•   Merciless refactorer
•   Loves Test Driven Development
•   Hippo CMS Committer
•   Experience as a Software Architect



                                  Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   3
Faceted Navigation for Site Wide Search

•     Rijksoverheid.nl needed a new side wide search
•     It had to allow a drill down via four facets:
    Responsible Department(s), Document Type
    Applicable Theme(s), Document Date


•     This is pretty easy with Hippo
•     It supports faceted navigation out of the box
•     At least, if all facets are properties on the
    document…

                                        Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   4
Problem: Practice doesn’t follow theory


We would like to see:




                                  Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   5
Problem: Practice doesn’t follow theory


We would like to see:     The horrible truth:




                                  Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   6
Possible solution: Derived Data Engine

•     Derived Data Engine allows you to define input
    properties and then populate some output
    properties
•     You can even point to a single property on ONE
    related Document (property name is secretly a
    relative path… shhh!) f.ex: “common:subject/@title”
•     You cannot point to a property on multiple
    related Documents
•     Crap! Foiled again!


                                      Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   7
We Were About to Give Up…
When Jeroen and me came up with this idea…



                                             Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   8
Daemon Modules

•     Hippo CMS supports Daemon Modules
•     Daemon modules are services that run in the
    Hippo Repository in their own (admin) session
•     We could let this daemon module derive stuff for
    us, all we have to do is send it the UUID of the
    node…
•     Let’s see how that works!


      !! WARNING: DO NOT TRY THIS AT HOME !!

                                    Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   9
Sequence Diagram
Now show us some code..!!



                            Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   10
Nothing Like the Smell of a Good Hack!
(unless you are Hippo Support and got 50+ clients doing this…)



                                                   Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   11
Stuff We Learned

1.     Make Sure Your Daemon Module is Thread Safe
2.     When you Refresh a Session, any Nodes it
     Supplied Become Useless
3.     If a Derived Data Function Throws an Exception,
     any Action that Triggered the Node.save() Fails
4.     This Will Break (Delayed) Publishing!


              1 + 2 + 3 + 4 == Weird Artifacts
              ….That took us ages to debug
                                      Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   12
How to improve Hippo to make this easier

•     Improve Derived Data Engine to Supply a
    Decorated Read Only Node instead of Input &
    Output Properties
•     Read Only is Good, Because You Don’t Want the
    Derived Data Engine to Modify/Save other Nodes
•     Output Concept Can Stay Like it Is


•     Or… Wait for SOLR Integration


                                      Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   13
Wouter Danes
                     @wouterdanes




  Tel: +31–(0)88–268 25 00                                 Address:                           Delftechpark 37i
 Mob: +31-(0) 6 1158 8264                                                                     2628 XJ Delft
E-mail: Wouter.danes@hinttech.com                                                             The Netherlands

         Delft   San Francisco      Novi Sad   Nordic            United Kingdom
                                                    Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved   14

More Related Content

Viewers also liked

Hippo get together workshop automatic export
Hippo get together   workshop automatic exportHippo get together   workshop automatic export
Hippo get together workshop automatic export
Hippo
 
Module%201%20 physics%20basic%20science
Module%201%20 physics%20basic%20scienceModule%201%20 physics%20basic%20science
Module%201%20 physics%20basic%20science
Sarah Rodriguez
 
The Java Content Repository
The Java Content RepositoryThe Java Content Repository
The Java Content Repository
nobby
 
你不是我的男朋友 (繁體)
你不是我的男朋友 (繁體)你不是我的男朋友 (繁體)
你不是我的男朋友 (繁體)
Na Li
 

Viewers also liked (15)

Hippo get together workshop automatic export
Hippo get together   workshop automatic exportHippo get together   workshop automatic export
Hippo get together workshop automatic export
 
JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)JCR In Action (ApacheCon US 2009)
JCR In Action (ApacheCon US 2009)
 
What's new in JSR-283?
What's new in JSR-283?What's new in JSR-283?
What's new in JSR-283?
 
2η πανελλήνια ημέρα σχ. αθλητισμού
2η πανελλήνια ημέρα σχ. αθλητισμού2η πανελλήνια ημέρα σχ. αθλητισμού
2η πανελλήνια ημέρα σχ. αθλητισμού
 
Module%201%20 physics%20basic%20science
Module%201%20 physics%20basic%20scienceModule%201%20 physics%20basic%20science
Module%201%20 physics%20basic%20science
 
Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.
Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.
Δες τη ζωή υγιεινά. Η διατροφή στην εφηβική ηλικία.
 
2008-12 OJUG JCR Demo
2008-12 OJUG JCR Demo2008-12 OJUG JCR Demo
2008-12 OJUG JCR Demo
 
Introducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management PlatformIntroducing Apricot, The Eclipse Content Management Platform
Introducing Apricot, The Eclipse Content Management Platform
 
The Java Content Repository
The Java Content RepositoryThe Java Content Repository
The Java Content Repository
 
我想請你吃飯 (繁体)
我想請你吃飯 (繁体)我想請你吃飯 (繁体)
我想請你吃飯 (繁体)
 
Η χημεία του κρασιού
Η χημεία του κρασιούΗ χημεία του κρασιού
Η χημεία του κρασιού
 
App and web with Hippo CMS and AngularJS
App and web with Hippo CMS and AngularJS App and web with Hippo CMS and AngularJS
App and web with Hippo CMS and AngularJS
 
JCR and ModeShape
JCR and ModeShapeJCR and ModeShape
JCR and ModeShape
 
你不是我的男朋友 (繁體)
你不是我的男朋友 (繁體)你不是我的男朋友 (繁體)
你不是我的男朋友 (繁體)
 
Introducing Hippo CMS 10.2
Introducing Hippo CMS 10.2Introducing Hippo CMS 10.2
Introducing Hippo CMS 10.2
 

Similar to Hippo gettogether april 2012 faceted navigation a tale of daemons

Build your next application in weeks and not months with Groovy and Grails
Build your next application in weeks and not months with Groovy and GrailsBuild your next application in weeks and not months with Groovy and Grails
Build your next application in weeks and not months with Groovy and Grails
People10 Technosoft Private Limited
 
LA HUG - Agile Analytics Applications on HDP
LA HUG - Agile Analytics Applications on HDPLA HUG - Agile Analytics Applications on HDP
LA HUG - Agile Analytics Applications on HDP
Hortonworks
 

Similar to Hippo gettogether april 2012 faceted navigation a tale of daemons (20)

How we build project for Open Source
How we build project for Open SourceHow we build project for Open Source
How we build project for Open Source
 
Don't get blamed for your choices - Techorama 2019
Don't get blamed for your choices - Techorama 2019Don't get blamed for your choices - Techorama 2019
Don't get blamed for your choices - Techorama 2019
 
Build your next application in weeks and not months with Groovy and Grails
Build your next application in weeks and not months with Groovy and GrailsBuild your next application in weeks and not months with Groovy and Grails
Build your next application in weeks and not months with Groovy and Grails
 
SEO with RoboHelp
SEO with RoboHelpSEO with RoboHelp
SEO with RoboHelp
 
Dev ops foundation v3 candidate handout(1)
Dev ops foundation v3   candidate handout(1)Dev ops foundation v3   candidate handout(1)
Dev ops foundation v3 candidate handout(1)
 
Devconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developedDevconf 2011 - PHP - How Yii framework is developed
Devconf 2011 - PHP - How Yii framework is developed
 
A Big Data Journey: Bringing Open Source to Finance
A Big Data Journey: Bringing Open Source to FinanceA Big Data Journey: Bringing Open Source to Finance
A Big Data Journey: Bringing Open Source to Finance
 
Orange County HUG - Agile Data on HDP
Orange County HUG - Agile Data on HDPOrange County HUG - Agile Data on HDP
Orange County HUG - Agile Data on HDP
 
Code sharing at MediaEval
Code sharing at MediaEvalCode sharing at MediaEval
Code sharing at MediaEval
 
DevOps -- A 10 year retrospective (based on interviews conducted at DevOps Da...
DevOps -- A 10 year retrospective (based on interviews conducted at DevOps Da...DevOps -- A 10 year retrospective (based on interviews conducted at DevOps Da...
DevOps -- A 10 year retrospective (based on interviews conducted at DevOps Da...
 
LA HUG - Agile Analytics Applications on HDP
LA HUG - Agile Analytics Applications on HDPLA HUG - Agile Analytics Applications on HDP
LA HUG - Agile Analytics Applications on HDP
 
Zend
ZendZend
Zend
 
Yocto Project - OSCON 7-17-2012
Yocto Project - OSCON 7-17-2012Yocto Project - OSCON 7-17-2012
Yocto Project - OSCON 7-17-2012
 
Intelli j idea-report
Intelli j idea-reportIntelli j idea-report
Intelli j idea-report
 
Beginner android
Beginner androidBeginner android
Beginner android
 
Bridging the Gap
Bridging the GapBridging the Gap
Bridging the Gap
 
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
10 clues showing that you are doing OSGi in the wrong manner - Jerome Moliere
 
Gerrit Workshop
Gerrit WorkshopGerrit Workshop
Gerrit Workshop
 
Open Apereo - Web components workshop
Open Apereo - Web components workshopOpen Apereo - Web components workshop
Open Apereo - Web components workshop
 
America Runs on Excel and HDF5 - Glued together by Python
America Runs on Excel and HDF5 - Glued together by PythonAmerica Runs on Excel and HDF5 - Glued together by Python
America Runs on Excel and HDF5 - Glued together by Python
 

Recently uploaded

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
Joaquim Jorge
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
giselly40
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
Earley Information Science
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
Enterprise Knowledge
 

Recently uploaded (20)

Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law DevelopmentsTrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
TrustArc Webinar - Stay Ahead of US State Data Privacy Law Developments
 
CNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of ServiceCNv6 Instructor Chapter 6 Quality of Service
CNv6 Instructor Chapter 6 Quality of Service
 
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptxEIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
EIS-Webinar-Prompt-Knowledge-Eng-2024-04-08.pptx
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Handwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed textsHandwritten Text Recognition for manuscripts and early printed texts
Handwritten Text Recognition for manuscripts and early printed texts
 
How to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected WorkerHow to Troubleshoot Apps for the Modern Connected Worker
How to Troubleshoot Apps for the Modern Connected Worker
 
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
Apidays Singapore 2024 - Building Digital Trust in a Digital Economy by Veron...
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?What Are The Drone Anti-jamming Systems Technology?
What Are The Drone Anti-jamming Systems Technology?
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024Axa Assurance Maroc - Insurer Innovation Award 2024
Axa Assurance Maroc - Insurer Innovation Award 2024
 
presentation ICT roal in 21st century education
presentation ICT roal in 21st century educationpresentation ICT roal in 21st century education
presentation ICT roal in 21st century education
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Presentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreterPresentation on how to chat with PDF using ChatGPT code interpreter
Presentation on how to chat with PDF using ChatGPT code interpreter
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
Strategies for Unlocking Knowledge Management in Microsoft 365 in the Copilot...
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
IAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI SolutionsIAC 2024 - IA Fast Track to Search Focused AI Solutions
IAC 2024 - IA Fast Track to Search Focused AI Solutions
 
Evaluating the top large language models.pdf
Evaluating the top large language models.pdfEvaluating the top large language models.pdf
Evaluating the top large language models.pdf
 

Hippo gettogether april 2012 faceted navigation a tale of daemons

  • 1. Faceted Navigation on Related Documents A tale of Daemons Wouter Danes – Hippo Gettogether – 20 april 2012 Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 1
  • 2. Agenda • About me • User story: faceted navigation for site wide search • Problem: practice doesn’t follow theory • Possible solution: Derived Data Engine • Better solution: Daemons! • Some stuff we learned • How to improve Hippo to make this easier Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 2
  • 3. About me – Wouter Danes • Hired via Orange11 @Rijksoverheid.nl • Java (10yrs experience) & Hippo Developer • Competence Manager Java & Hippo @ Hinttech • Merciless refactorer • Loves Test Driven Development • Hippo CMS Committer • Experience as a Software Architect Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 3
  • 4. Faceted Navigation for Site Wide Search • Rijksoverheid.nl needed a new side wide search • It had to allow a drill down via four facets: Responsible Department(s), Document Type Applicable Theme(s), Document Date • This is pretty easy with Hippo • It supports faceted navigation out of the box • At least, if all facets are properties on the document… Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 4
  • 5. Problem: Practice doesn’t follow theory We would like to see: Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 5
  • 6. Problem: Practice doesn’t follow theory We would like to see: The horrible truth: Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 6
  • 7. Possible solution: Derived Data Engine • Derived Data Engine allows you to define input properties and then populate some output properties • You can even point to a single property on ONE related Document (property name is secretly a relative path… shhh!) f.ex: “common:subject/@title” • You cannot point to a property on multiple related Documents • Crap! Foiled again! Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 7
  • 8. We Were About to Give Up… When Jeroen and me came up with this idea… Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 8
  • 9. Daemon Modules • Hippo CMS supports Daemon Modules • Daemon modules are services that run in the Hippo Repository in their own (admin) session • We could let this daemon module derive stuff for us, all we have to do is send it the UUID of the node… • Let’s see how that works! !! WARNING: DO NOT TRY THIS AT HOME !! Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 9
  • 10. Sequence Diagram Now show us some code..!! Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 10
  • 11. Nothing Like the Smell of a Good Hack! (unless you are Hippo Support and got 50+ clients doing this…) Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 11
  • 12. Stuff We Learned 1. Make Sure Your Daemon Module is Thread Safe 2. When you Refresh a Session, any Nodes it Supplied Become Useless 3. If a Derived Data Function Throws an Exception, any Action that Triggered the Node.save() Fails 4. This Will Break (Delayed) Publishing! 1 + 2 + 3 + 4 == Weird Artifacts ….That took us ages to debug Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 12
  • 13. How to improve Hippo to make this easier • Improve Derived Data Engine to Supply a Decorated Read Only Node instead of Input & Output Properties • Read Only is Good, Because You Don’t Want the Derived Data Engine to Modify/Save other Nodes • Output Concept Can Stay Like it Is • Or… Wait for SOLR Integration Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 13
  • 14. Wouter Danes @wouterdanes Tel: +31–(0)88–268 25 00 Address: Delftechpark 37i Mob: +31-(0) 6 1158 8264 2628 XJ Delft E-mail: Wouter.danes@hinttech.com The Netherlands Delft San Francisco Novi Sad Nordic United Kingdom Vrijdag 20 april 2012 | Copyright ©2012 HintTech B.V. All rights reserved 14