On March 5, the SaM Solutions team represented by Vadzim Papko, Vitali Taleika and me, Vadim Birkos, took part in the annual online event Sitecore Hackathon.
In this article, I’ll talk about our experience of participating in this event and the technical result we managed to achieve.
Why Participate in Hackathon
In 2020, I intended to compete in Hackathon but things didn’t work out. Why? My colleagues and I had a brilliant idea (which we’re still working on so I can’t disclose the details) but we couldn’t gather together at the appointed time and implement it. I guess first attempts often result in failure.
This year, when I saw the announcement for Sitecore Hackathon 2021, I decided to give it another go.
Hackathon is a good challenge for every developer. If you take part in this event, you can:
- gain new experiences
- get new ideas
- network with like-minded people
- get energy and motivation for creative and productive work.
In fact, it was my team who really inspired me to participate. I was sure that together with my talented and creative colleagues Vitali Taleika and Vadzim Papko we would achieve great results.
Since we didn’t know the Hackathon topics for this year, we could only discuss potential ideas that we were not sure would feature in the competition.
We spent a lot of time discussing the potential solutions we could implement, and we had some great ideas, but all of them required weeks or months of intensive work to be completed. This was clearly not appropriate for the bounds of a 24-hour marathon.
On March 5, we gathered together for the start of Hackathon (at 3 a.m. our local time) and learned that the following topics would feature:
- The best enhancement to the Sitecore Admin (XP) for Content Editors and Marketers
- The best enhancement to SXA
- Best use of SPE to help Content Authors and Marketers
- Best use of Headless using JSS or .NET
We were finally able to make a decision on which module to implement. Since all of us are experienced in Sitecore search functionality, Vitali Taleika suggested we work on improving the keyword synonym search for SOLR using Sitecore tools.
After some discussion, we agreed that it would be a very useful module for the Sitecore platform. We also thought that with our idea we could try to win in the category “The best enhancement to the Sitecore Admin (XP) for Content Editors and Marketers.”
As we ensured that our idea complied with all the requirements, we started to brainstorm how to implement it. The task was not hard because everyone in our team has a deep understanding of search functionality.
We discovered that the SOLR engine utilized the “synonyms.txt” file to get the necessary data. But there was no way of managing this useful function from Sitecore. We also found Sitecore Pipelines responsible for synonym management in SOLR.
By then, we had a plan on how to integrate a flexible synonym management approach in SOLR using Sitecore tools and make it manageable by the Content Author.
We implemented our idea in the following way:
- A content author fills in Sitecore items with the necessary synonyms in the content tree.
- All specified synonyms are migrated to SOLR with the help of a custom Ribbon button.
- The search can now be performed using specified synonyms.
In Sitecore, Content Author has two types of items. The first type is root settings for SOLR that contain Core names that should be applied with synonyms. You can see the structure below:
The second type contains synonyms that get published to the SOLR engine.
Below you can see our custom Ribbon, which triggers the sync with Solr synonyms:
When all synonyms are synchronized, we can show how the feature works. Let’s search for the word “superman”. We defined this word in the synonym content item, but search pages don’t contain it.
Here are two pages that contain a “superman” synonym. Let’s open the Contact page.
Here you see the word “MVP” but no “superman”. This is how the search-by-synonyms functionality works: a page may not contain the specified word but it will be in the search results if it contains a synonym for that word.
You can find the source code and documentation on how this module can be used on your website in the GitHub of our hackathon team.
Preparing for the Demo
The hardest task for us at this Hackathon was to prepare the demonstration website for our module.
We spent half of the allocated time (9–11 hours) looking for a demonstration website with pre-filled content and implemented search functionality. That’s quite a long time, isn’t it?
During this time, we could have created our own personalized website with enough content for any purpose using SXA. Unfortunately, that idea came to our minds too late, after we had already spent 6–7 hours searching for and installing available demonstration websites from Google.
Imagine our disappointment when we realized that the website we had installed was working well but was not compatible with our module, because its searching approach was not the one we needed. This was a moment of heartbreak for us.
I invite you to learn from our mistakes and create a website that will be appropriate for your purposes. And don’t hesitate to ask colleagues from the Sitecore Community in Slack or Twitter chats if you have questions that you can’t resolve yourself during the Hackathon.
Tips for Future Hackathons
During this Hackathon, we made a number of mistakes that prevented us from performing better. But as they say, experience comes from bad experiences. Next year, we’ll use the following tips to avoid serious obstacles:
- Concentrate on what’s really important. We were not concentrated enough and wasted a lot of time on issues that were not critical for our module.
- Sleep at least 3–4 hours. There is no need for you to stay awake for 24 hours. If you sleep a bit, you will reload and be more effective.
- Prioritize the Hackathon task over other tasks. You must put aside all your non-Hackathon plans to be fully involved in the process.
- Don’t waste time searching for the demonstration site. It’s more efficient to create your own demonstration website that will be relevant for your team and your idea.
- Eliminate negative emotions, only fun, and Rock’n’Roll 🙂
To Sum Up
It was really exciting for me to be a part of this event. I realized that the Sitecore Community is a big family passing positive energy to its members when they need it most.
In addition to the module development, I had much fun networking with the community members via Twitter and Slack. Many warm and friendly people were ready to help us with any issues and ideas. This made me feel good.
Undoubtedly, I will take part in Sitecore Hackathon next time and will do my best to perform better than this year.
If you have any questions, contact me via Twitter or LinkedIn.