Sunday, February 18, 2024

The Curious Case of Misplaced Orders: A Tale from the Sitecore Content Hub Kitchen

Imagine walking into your favorite restaurant, your stomach rumbling in anticipation of that delicious meal you've been craving all week. You place your order with excitement, only to receive something entirely different. Confused, you look around, wondering if there's been a mix-up. But then, the waiter insists, "This is exactly what you ordered." Now, replace the restaurant with Sitecore Content Hub, the meal with React examples for version 4.2, and you have a scenario many developers, including myself, have recently navigated.

The Missing React Recipe

When Sitecore Content Hub 4.2 was freshly served, developers like us were eager to dive into the new features, especially those related to extending capabilities with React. However, the excitement quickly turned into a mild frustration as we scoured the documentation for React examples, only to find the kitchen seemingly bare. It felt like being promised a gourmet meal but ending up with an empty plate.

A Surprising Discovery

But then, as if by magic (or perhaps a curious exploration), we stumbled upon a hidden menu. Yes, React examples were there all along, but not where you'd expect them. They were tucked away under the "Users" section, a place we'd least expect to find our developer delicacies. It's akin to finding the chef's special not on the main menu, but scribbled on a napkin at the bar. An odd choice, indeed.

The Misplaced Order Dilemma

This peculiar placement brings to mind the restaurant scenario where you're served something you didn't order. In our case, we ordered developer resources but were handed user guides. It's a humorous mix-up, one that certainly brings a smile when you picture developers sifting through user manuals, searching for that secret sauce to spice up their Sitecore Content Hub projects.

A Public Appeal for a Menu Revamp

This brings us to a public question, or rather, a friendly nudge to our friends at Sitecore: Could we consider moving these React examples from the "Users" section to the "Developers" section? It's a small tweak, but one that could save future developers from the culinary confusion we faced. After all, code samples are like recipes; they belong in the hands of those cooking up the solutions, not those enjoying the meal.

The Silver Lining

Despite the initial mix-up, discovering these React examples under the "Users" section was like finding a hidden gem. It reminded us of the importance of exploring every nook and cranny, even in places we might not initially think to look. And, in a way, it added a dash of adventure to our development journey.

A Call to Action

So, to my fellow developers venturing into the world of Sitecore Content Hub, let this tale be a reminder to look beyond the obvious. Sometimes, the resources we need are just around the corner, albeit in an unexpected place. And to the wonderful team at Sitecore, perhaps it's time to consider a slight reorganization of the menu. After all, a well-organized kitchen is the key to a successful restaurant.

In the end, our tale of misplaced orders is more than just a humorous anecdote; it's a testament to the ever-evolving landscape of technology and the importance of clear, accessible documentation. As we continue to navigate the vast and sometimes confusing world of Sitecore Content Hub, let's do so with a sense of curiosity, patience, and a readiness to explore every section of the menu, no matter how strangely organized it may be.

Example: https://doc.sitecore.com/ch/en/users/40/content-hub/manage--external-page-events.html

Saturday, February 10, 2024

A Toast to Achievement: My Sitecore MVP Journey - Sitecore Technology MVP 2024


A Toast to Achievement: My Sitecore MVP Journey

As I sit down to pen this celebratory post, I'm enveloped by a sense of profound gratitude and a touch of pride. Not every day is one recognized by Sitecore with their coveted MVP award, and I am thrilled to share this moment with you, my readers, who have been an integral part of my journey.

A Mentor's Guidance: Timothy Marsh

First and foremost, I must extend my heartfelt thanks to Timothy Marsh. Timothy, your mentorship has been the guiding star through the intricate maze of Sitecore Content Hub DAM. Your wisdom and patience have helped me hone my skills and instilled in me the confidence to push boundaries and innovate. I sincerely appreciate the time and knowledge you've invested in me.

The Art of Integration

In the spirit of sharing knowledge, let's delve into the art of integration, a topic close to my heart. Sitecore Content Hub DAM is not an island; it thrives on its ability to seamlessly integrate with other systems. Take, for example, the integration with Sitecore Send, which allows marketers to leverage DAM assets in email campaigns, landing pages, and subscription forms. This synergy between systems transforms an excellent digital experience into a great one.

Customization: The Secret Ingredient

Customization is the secret ingredient that turns a standard solution into a tailored masterpiece. Extending the M.Asset Schema in Sitecore Content Hub allows us to untangle complexities and tailor the platform to our unique needs. It's akin to a chef in a gourmet kitchen, carefully adjusting flavors to create a dish that's both memorable and distinctive.

Best Practices: The Recipe for Success

Adhering to best practices is akin to following a tried-and-true recipe. It ensures that the final outcome is not only delectable but also consistent. From using account impersonation to test security access to applying your company's branding to the Content Hub theme, these practices are the foundation upon which we build robust and efficient systems.

The Blogging Craft

Writing a blog post is much like crafting a fine meal. It requires a blend of creativity, structure, and attention to detail. As we choose topics we understand well and generate compelling titles, we create an engaging and informative narrative. And just like a chef garnishes a dish before serving, we too must proofread our posts, add images, and ensure that our content is SEO-friendly

Expressing Gratitude

In the world of blogging, expressing gratitude is not just polite; it's strategic. It fosters relationships and builds a community of engaged readers. So, as I thank Timothy and all of you, I'm not just fulfilling a social nicety; I'm nurturing the very community that has supported me.

In Conclusion

As we close this chapter of my Sitecore MVP journey, I look forward to the many stories we'll share and the challenges we'll overcome together. Here's to the future, where we continue to learn, innovate, and lead in digital asset management.

I also want to extend my congratulations to my esteemed colleagues who have also been honored with the Sitecore MVP award. Your dedication and expertise inspire me, and I am proud to stand among such a distinguished company. Together, we form a constellation of talent that illuminates the Sitecore community and guides it forward.

Thank you, Timothy, and thank you, my readers. Let's raise our glasses to the journey ahead and to the collective brilliance of my fellow MVPs! This addition aligns with the celebratory tone of your blog post and provides a space to acknowledge your colleagues' achievements. Congratulations once again on your Sitecore MVP award!


Sunday, February 4, 2024

Adding Flavor to Your Search: A Recipe for Selection in Sitecore Content Hub


Welcome back to RestaurantOfMistakenOrders.com, where we continue to cook up delicious tech recipes. Today, we're adding a new ingredient to our Sitecore Content Hub dish: selection. Just as a chef carefully selects the best ingredients for a recipe, we'll use React and TypeScript to select and display the most relevant search results.

The Ingredients of Our Selection Recipe

In our digital kitchen, we're preparing a new function to add to our search functionality. This function is like a chef's special tool, allowing us to select specific items from our search results. Here's the recipe:

const selectionPoolIdentifier = "SelectionPool.Content";
const definitionNames = ["M.Asset"];

const selectionChanges = sqlDataResponse.map(item => {
return {
action: 'add' as 'add' | 'remove' | 'clear',
ids: [1334737,1334720], //example id's to be selected, or
use [item.id].map(id => Number(id)),
selectionPoolIdentifier,
definitionNames: definitionNames
};
});
applySelectionToSearch(context, selectionChanges);
export const applySelectionToSearch = (context: Context,
selectionChanges: { action: 'add' | 'remove' | 'clear', ids?: number[],
subPoolId?: number, selectionPoolIdentifier: string, definitionNames?: string[] }[]) => {
selectionChanges.forEach(change => {
const { action, ids, subPoolId, selectionPoolIdentifier, definitionNames } = change;

switch (action) {
case 'add':
context.api.selection.addToSelection(ids!, selectionPoolIdentifier, subPoolId);
console.log("ADD: call from function");
break;
case 'remove':
context.api.selection.removeFromSelection(ids!, selectionPoolIdentifier, subPoolId);
break;
case 'clear':
context.api.selection.clearSelection(selectionPoolIdentifier, subPoolId, definitionNames);
break;
default:
throw new Error('Invalid action type');
}
});
};

In this code, we're preparing our selection. We're specifying the selectionPoolIdentifier and definitionNames—think of these as the type of ingredients we're looking for. Then, we're mapping over our sqlDataResponse (our list of ingredients) and creating a new array of selectionChanges. Each item in this array represents a change we want to make to our selection.

The action property can be 'add', 'remove', or 'clear', representing whether we want to add an item to our selection, remove an item, or clear the selection entirely. The ids property is an array of the IDs of the items we want to add or remove.

Finally, we call the applySelectionToSearch function, passing in our context (the current state of our kitchen) and our selectionChanges (the changes we want to make to our dish).

The Cooking Process

Just as a chef carefully selects the best ingredients for a dish, our code selects the most relevant search results based on the user's input. When a user selects a filter, it's like choosing a specific ingredient for a dish. Our code then updates the search results accordingly, without the need for the page to refresh—much like a live cooking station!

The Final Touch

Just as a chef adds the final garnish to a dish before serving, our React and TypeScript code adds the final touch to the user experience by making search results more relevant and easier to digest. It's a seamless blend of technology and user satisfaction, ensuring that every visit to your Sitecore Content Hub is a five-star experience.

Conclusion: Bon Appétit!

With a pinch of React, a dash of TypeScript, and a sprinkle of creativity, we've cooked up a solution that's both efficient and enjoyable. Join us next time at RestaurantOfMistakenOrders.com for another tech recipe that's sure to satisfy your digital palate!

Tuesday, January 23, 2024

Enhancing React UI: Choose Between Static Avatars or Lottie Animations


Welcome back to our tech blog, where we serve up delicious code recipes with a side of fun. Today, we're taking a trip to the Restaurant of Mistaken Orders, but don't worry, we're not serving up any culinary mishaps. Instead, we're cooking up a delightful React component that can serve either static or animated avatars.

The Recipe

Our main ingredients for today's dish are the React library, the Lottie-web library, and a sprinkle of Material UI for styling. The Lottie-web library, developed by Airbnb, allows us to render Adobe After Effects animations natively on the web

Here's the code for our AnimatedRobotIcon component:

import { useEffect, useRef } from 'react';
import lottie from 'lottie-web';
import { SxProps } from '@mui/system';
import { Theme } from '@mui/material/styles';
import animationData from './AnimatedRobotIcon.json';

interface AnimatedRobotIconProps {
children?: React.ReactNode;
onClick?: () => void;
sx?: SxProps<Theme>;
animationData?: object;
staticImageSrc?: string;
useLottie?: boolean;
}

function AnimatedRobotIcon({ children, onClick, sx, staticImageSrc, useLottie }: Readonly<AnimatedRobotIconProps>) {
const container = useRef<HTMLDivElement>(null);
const animationInstance = useRef<any>(null);

useEffect(() => {
if (useLottie && container.current) {
const anim = lottie.loadAnimation({
container: container.current,
renderer: 'svg',
loop: true,
autoplay: true,
animationData: animationData,
});
animationInstance.current = anim;
return () => anim.destroy();
}
}, [animationData, useLottie]);

return (
<div ref={container} onClick={onClick}>
{useLottie ? children : <img src={staticImageSrc} alt="Static Avatar" />}
</div>
);
}

export default AnimatedRobotIcon;

The Main Course: AnimatedRobotIcon Component

Our AnimatedRobotIcon component is a versatile dish that can serve up either a static image or an animated avatar, depending on the useLottie prop.

The useEffect hook is the kitchen where the magic happens. If useLottie is true, it uses the Lottie-web library to load an animation into the container ref. The animation data is passed in as a prop, allowing for different animations to be used with the same component. If the component is unmounted, the animation is destroyed to prevent memory leaksIf useLottie is false, the component serves up a static image avatar, using the staticImageSrc prop as the image source.

The Secret Sauce: Best Practices

Our AnimatedRobotIcon component follows several React best practices. It adheres to the Single Responsibility Principle, as it only handles the rendering of an avatar, either static or animated. It also uses prop types to ensure that the correct types of props are passed to the component

The use of the useEffect hook to handle side effects, such as loading and destroying the animation, is another best practice followed in this component

Dessert: Serving the Component

To serve up our AnimatedRobotIcon component, you simply import it into your React application and use it like any other component. You can pass in an onClick prop if you want the avatar to be interactive and a sx prop to apply Material UI styling.

import AnimatedRobotIcon from './AnimatedRobotIcon';
import robotAnimation from './robotAnimation.json';

function App() {
return (
<AnimatedRobotIcon
useLottie={true}
animationData={robotAnimation}
onClick={() => console.log('Avatar clicked!')}
sx={{ width: 100, height: 100 }}
/>
);
}

export default App;

In this example, we're serving up an animated avatar using the robotAnimation data. When the avatar is clicked, it logs a message to the console.

Closing Time

That's it for today's visit to the Restaurant of Mistaken Orders. We hope you enjoyed learning about our AnimatedRobotIcon component and how it can serve up both static and animated avatars. Remember, the best code recipes are the ones that are easy to read, maintain, and reuse. Happy coding!


Sunday, January 21, 2024

A Colorful Twist to Sitecore Content Hub: Changing Avatar Colors for Environment Indication



Welcome back to the Restaurant of Mistaken Orders, where we serve up a delightful mix of tech insights and fun. Today, we're cooking up a new recipe to help you navigate your Sitecore Content Hub environment with ease and style. 

The Problem with the Current Menu

If you're a regular at our restaurant, you're probably familiar with the Chrome plugin that creates an overlay to indicate different environments in Sitecore Content Hub. While it does its job, it's a bit like a dish that's too spicy - always in the way and overpowering the other flavors. 

A New Recipe: Colorful Avatars

We've come up with a new recipe that's subtle yet clear - changing your avatar color to indicate different environments. It's like adding a dash of color to your plate, making it visually appealing and easy to understand. 

Cooking Instructions

Here's how you can change your avatar color in Sitecore Content Hub:

  1. Click on your profile icon on the right side of the menu bar to open the Profile and Settings menu.
  2. Click on 'Profile'.
  3. On the left side of the page, click 'CHANGE AVATAR'.
  4. Upload a picture file with the color you want to represent the environment (green, orange, or red). You can do this by either dragging and dropping the file in the upload file area or clicking 'SELECT FILES' and browsing your filesystem to find the desired file.

Remember, this is your avatar, so feel free to get creative with it. You could use a simple colored square, or perhaps a fun icon or image that's predominantly the color you've chosen for the environment. 

Once you've uploaded your image, click 'SET AS AVATAR' to save the photo. And voila! You've got a colorful, environment-indicating avatar.

The Result

By changing your avatar color, you can easily identify the environment you're in without the need for an intrusive overlay. It's a subtle change that can make a big difference in your daily work, much like a pinch of salt in a dish. 


The Takeaway

In the bustling kitchen of Sitecore Content Hub, it's important to find ways to streamline your work and make your environment more user-friendly. Changing your avatar color is a simple yet effective way to do this. 

So, why not give this recipe a try? It might just add that extra flavor you've been looking for in your Sitecore Content Hub experience. 

Until next time, keep experimenting with new recipes in the tech kitchen!

Saturday, December 16, 2023

Culinary Adventures in Wedding: A Hidden Foodie Paradise in Berlin

Welcome to Wedding, Berlin's best-kept secret for gastronomic delights! Nestled in the heart of the city, this vibrant and eclectic district is a treasure trove of culinary experiences waiting to be discovered. From the sleek and sophisticated Ernst, where Japanese cuisine meets Michelin-starred elegance, to the cozy and unassuming UUU, a haven of Chinese culinary wizardry, Wedding offers a palette of flavors as diverse as its history.

Journey with us as we explore the tantalizing fusion of Japanese and Lebanese at O-Slow, where vegan and vegetarian dishes take center stage in a symphony of flavors. Don't miss the healthy, plant-based Korean masterpieces at Dal Tokki, a casual spot where every dish tells a story of tradition and innovation.

Whether you're a connoisseur of fine dining or a seeker of hidden gems, Wedding's culinary landscape offers something for every taste and occasion. So, grab your forks (and chopsticks!), and let's dive into the delicious and unexpected world of Wedding's best restaurants. Get ready to have your taste buds tantalized and your culinary expectations exceeded in this vibrant Berlin neighborhood!

Ernst 



Ernst
is a Michelin-starred restaurant in Berlin's Wedding district that serves fine dining Japanese cuisine. The menu is based on Japanese ingredients, but with a modern twist. If you're looking for a traditional Japanese experience, this might not be the place for you. Instead, Ernst is ideal for those who want to try something new and exciting.

Diners can expect to be greeted with a warm and inviting atmosphere, with minimalist decor that complements the food perfectly. The menu features a variety of dishes, from sushi and sashimi to grilled skewers and tempura. The portions are generous, and the prices are quite reasonable.

While the price point might seem intimidating to some, Ernst is well worth the splurge. The food is truly exceptional, and the dining experience is one that will leave you with lasting memories.

UUU 


UUU is another small restaurant in Wedding that serves a tasting menu of Chinese dishes paired with teas and kombuchas. The menu changes seasonally, so there's always something new to try. UUU is a great place to go if you're looking for a unique dining experience.

The restaurant is located in an unassuming building, but don't let that fool you - the food is anything but ordinary. The tasting menu offers a variety of dishes, from dumplings and dim sum to more adventurous options like Peking duck and stir-fries. The portions are generous, and the wines are carefully selected to complement the cuisine.

If you're looking for a truly memorable dining experience, UUU is the place to be.

O-Slow



O-Slow is a restaurant in Wedding that serves a fusion of Japanese and Lebanese cuisine. The menu features vegan and vegetarian dishes, and the flavors are absolutely incredible. O-Slow is a great place to go if you're looking for something different than the usual Thai, Indian, or Chinese restaurants that line the streets.

The restaurant is located in a cozy space, with warm lighting and a friendly atmosphere. The menu features a variety of small plates, so it's perfect for sharing with friends.

If you're looking for something light, fresh, and flavorful, O-Slow is the place to be.

Dal Tokki 

Dal Tokki is a vegan Korean restaurant in Wedding that serves authentic Korean food. The menu is full of healthy and delicious dishes, and the portions are generous. Dal Tokki is a great place to go if you're looking for something to satisfy your taste buds without compromising on health.

The restaurant is located in a casual space, with simple decor and friendly staff. The menu features a variety of dishes, from bibimbap and japchae to tofu stew and kimchi pancakes.

If you're looking for a healthy and delicious meal, Dal Tokki is the place to be.

Le Slam 

Le Slam is a cafe in Wedding that serves American-style brunches, as well as other foods like soy-meat tostadas, French sausage with butternut squash mash, Indian chickpea lentil soup, and tempeh topped okonomiyaki. The food is fresh and delicious, and the prices are very reasonable.

Le Slam is a great place to go if you're looking for a casual and affordable meal. The restaurant is located in a bright and airy space, with friendly staff and a laid-back atmosphere. The menu features a variety of dishes, so there's something for everyone.

If you're looking for a great place to start your day or enjoy a delicious and affordable meal, Le Slam is the place to be.

Cafe Pförtner 


Cafe Pförtner is a cafe / restaurant in Wedding that serves a variety of dishes, including Thai food, Italian food, and Taiwanese food. The food is all cooked to order, and the flavors are amazing. The prices are very reasonable.

Cafe Pförtner is a great place to go if you're looking for a taste of different cuisines. The restaurant is located in a charming space, with exposed brick walls and wooden furniture. The menu features a variety of dishes, so there's something for everyone.

If you're looking for a diverse and delicious meal, Café Pförtner is the place to be.

Dan Thai 


Dan Thai is a Thai restaurant in Wedding that serves affordable food. The menu is full of classic Thai dishes, as well as some more creative options. The portions are generous, and the prices are very reasonable.

Dan Thai is a great place to go if you're looking for a taste of Thai cuisine without breaking the bank. The restaurant is located in a casual space, with friendly staff and a laid-back atmosphere. The menu features a variety of dishes, from pad thai and green curry to tom yum soup and mango sticky rice.


Friday, December 1, 2023

Sitecore Content Hub - The AI-Prompt POC That's Cooking Up a Storm

Welcome to the unique culinary world of query crafting in Sitecore Content Hub! Here, we're not just dealing with data and technology; we're embarking on a gastronomic journey, where each query is a recipe, and every search result is a dish served. We're focusing solely on the art of prompt implementation – the secret sauce of our digital kitchen.

Hungry for the code without the appetizer of a blog post? Jump straight to our GitHub to savor the full spread of our coding banquet! For those who prefer to dive right into the technical feast, our repository awaits with all the ingredients of our latest Sitecore culinary adventure. Ready, set, code! 🍽️👨‍💻🚀

The Concept: Culinary Prompting in the Digital Kitchen

Imagine entering a digital restaurant, where your every query is interpreted by the chef (our AI system) to deliver exactly what you didn't know you were craving. This is the essence of our project – using the power of well-crafted prompts to whip up the perfect search results in Sitecore Content Hub.

The Ingredients: Understanding Our Digital Pantry

Sitecore Content Hub: Our pantry stocked with diverse ingredients (data). It holds everything from user queries to interaction history, all ready to be transformed into a delectable digital dish.

Prompt Crafting: The chef's knife in our kitchen. Crafting prompts is an art, requiring a deep understanding of how to ask the right questions to elicit the most satisfying answers (search results).

The Recipe: Steps to Perfect Prompt Implementation

Understanding User Palate: Just like understanding a diner’s preference, we delve deep into user interactions, preferences, and history. This helps us tailor prompts that resonate with their tastes.

Crafting the Prompt: This is where we mix our ingredients. A well-crafted prompt is like a well-balanced recipe – it should be clear, concise, and designed to bring out the best in the ingredients (data).

Testing and Tasting: No dish is served without tasting. We test our prompts, ensuring they bring out the desired results, tweaking them as a chef would adjust seasoning.

Serving the Dish: Once perfected, these prompts are used to serve up the most relevant and personalized search results, much like a chef presenting the final dish to the diner.

Extending the Menu: Advanced Prompt Techniques

Seasonal Prompts: Just like a menu changes with seasons, our prompts can be adapted to current trends, user behavior changes, or specific events.

Special Dietary Requests: Recognizing the uniqueness of each user, prompts can be customized for different user roles, like Asset Managers or Marketers, ensuring each gets a dish that suits their specific dietary (data) needs.

Pairing with the Right Sauce (Context): A dish is incomplete without the right sauce, and a prompt is incomplete without context. We ensure our prompts are enriched with contextual data, enhancing the relevance of search results.

Ensuring a Five-Star Experience

User Feedback: Like a chef taking feedback from diners, we continuously refine our prompts based on user feedback and interaction patterns.

Regular Menu Updates: Keeping our digital menu fresh and exciting, we regularly update our prompts to align with evolving data and user preferences.

Final Thoughts: A Gastronomic Adventure in Data Querying

In this digital restaurant, every search is a journey, and every result is a delightful surprise crafted with care and precision. By focusing on the art of prompt implementation in Sitecore Content Hub, we are not just delivering data; we are creating a culinary experience that leaves our users both satisfied and curious for more.

So, let's tie our aprons and start crafting those prompts – after all, in the kitchen of Sitecore Content Hub, every query is an opportunity to create something extraordinary!

Hungry for more? Check out our GitHub for the full code feast! Until our next culinary coding adventure, keep coding and stay curious! 🍽️👩‍💻🚀

Tuesday, November 21, 2023

Unveiling Content Hub Tools: The Ultimate Safari Extension for Sitecore Developers

Supercharge Your Sitecore Content Hub Experience

Attention, Sitecore developers! Are you ready to revolutionize the way you interact with Sitecore Content Hub? Introducing Content Hub Tools, a bespoke Safari extension meticulously crafted to enhance your productivity and streamline your Sitecore Content Hub operations.

Download safari extension
Download chrome extension

Why Content Hub Tools is a Game-Changer for Sitecore Developers

In the intricate world of content management, efficiency is king. Content Hub Tools is designed with a deep understanding of the challenges and nuances of working with Sitecore Content Hub. It's not just an extension; it's a powerhouse tool that transforms your Safari browser into an optimized workspace tailored for Sitecore development.

Features Tailored for Your Sitecore Workflow

Seamless Sitecore Integration: Navigate and manage your Sitecore Content Hub with unparalleled ease. Our extension integrates seamlessly, providing a fluid and intuitive user experience.

Efficient Content Management: Juggling multiple assets and workflows? Content Hub Tools streamlines these processes, allowing you to focus on creativity and efficiency.

Developer-Friendly Tools: From quick-access code snippets to enhanced content previews, every feature is designed to cater to the specific needs of Sitecore developers.

A Culinary Twist on Code

We approached the creation of Content Hub Tools like a master chef crafting a signature dish. We blended the finest ingredients – advanced technology, user-centric design, and a deep understanding of Sitecore Content Hub – to cook up an extension that's both powerful and delightful to use.

Installation is a Breeze

Embrace the ease of installation. Simply visit the Safari Extensions Gallery, locate Content Hub Tools, and with a few clicks, you're set to embark on a smoother Sitecore journey.

Your Feedback Fuels Our Innovation

Content Hub Tools is more than a product; it's a community-driven project. Your insights and feedback are invaluable, helping us continuously refine and enhance the extension. Together, we can shape a tool that perfectly aligns with the evolving demands of Sitecore development.

Transform Your Sitecore Experience Today

Don’t miss out on the opportunity to elevate your Sitecore Content Hub workflow. Join the community of developers who have already unlocked the potential of Content Hub Tools. Download today and experience a leap in productivity and a reduction in stress, all thanks to a Safari extension that understands the heart of Sitecore Content Hub.

Ready to revolutionize your Sitecore development? Content Hub Tools awaits.
Download safari extension
Download chrome extension

Happy Sitecore-ing! 🚀💻🌐

Special Thanks to my incredible colleagues at Epam; you know who you are!


Sunday, November 12, 2023

Cooking Up Success and Serendipity: My Culinary Chronicle of 2023

As the autumn leaves begin to fall, it’s the perfect time to simmer down and reflect on the whirlwind of flavors and experiences that 2023 has brought into my life. It’s been a year of blending the professional and the whimsical, much like marrying the robustness of a good Cabernet with the delicacy of a well-cooked filet mignon.

My journey started at the quaint yet unconventional Restaurant of Mistaken Orders. Here, I had the honor of serving smiles alongside scrumptious meals, often with a side of unexpected surprises. The unique concept of the restaurant, where orders get deliciously mixed up, taught me that sometimes, a dash of unpredictability can lead to a perfect recipe for joy and human connection.

Transitioning from the whimsical world of mistaken orders, I ventured into a more structured culinary domain. My professional stride on LinkedIn led me to collaborate with a bouquet of seasoned chefs and enthusiastic foodpreneurs. Together, we embarked on a gastronomic adventure that not only tantalized the taste buds but also forged enduring partnerships.

Each engagement was a step towards carving my niche in the culinary cosmos. The digital realm unfolded opportunities to connect, share, and grow. My profile became a smorgasbord of endorsements, recommendations, and a kaleidoscope of culinary achievements that reflected the vibrant and eclectic food scene I was immersing myself in.

As I whisked and sautéed through the professional kitchen, the aroma of creativity and camaraderie wafted through the air, creating a bouquet of delightful memories. The sweet and savory moments, the critiques that added spice to my journey, and the applause that was the cherry on top of a well-baked year.

2023 was not just about satiating the palate, but also about brewing meaningful connections, concocting innovative ideas, and plating up success with a side of fun. It’s been a flavorful year, full of zest, zeal, and a zest for continual learning.

As I fold this chapter, I am whisked with excitement for the new recipes, stories, and adventures that 2024 has in store. With a heart full of gratitude and a spoonful of ambition, I am ready to cook up a storm in the upcoming year.

So here’s to more mistaken orders, happy accidents, and the endless quest for the perfect culinary concoction. Cheers to a year well-spent and to the many more to come!

Monday, November 6, 2023

A Guide to Simplified Logging in Sitecore Content Hub (React Components): The Restaurant of Mistaken Orders Approach


Introduction

Imagine a bustling kitchen at the Restaurant of Mistaken Orders, where every dish is prepared with care, yet the chefs know that the occasional error is not just expected, it’s celebrated. This quirky establishment serves as the perfect metaphor for the development environment of our React components within Sitecore Content Hub. Just as the restaurant's staff learns from every mistaken order, we've crafted a logging system that helps developers learn from every unexpected event in our applications.

The Concept

In the heart of our kitchen, the logging system is akin to the central order station - a place where all communications are logged, and any anomalies are noted. The logs are the tickets that help trace back the steps to where the ingredients might have been mixed up. But fear not, this isn’t about admonishing the chefs; it's about understanding the ‘why’ and ‘how’ to prevent future mishaps.

The Setup

We've placed our logbooks (the logger files) in a centralized location: utils/log. Think of it as the main shelf where all order pads are stored. It’s easily accessible and allows for a uniform logging format across all components, just as every chef in the restaurant uses the same format to write down orders.

The Use

When a new dish is being crafted (a component being used), the chef (developer) doesn’t need to worry about setting up a new logbook. They simply refer to the central station, where all logging preferences are set. Is the dish gluten-free? Should this error be reported to the head chef? The logging station has all the preferences noted down.

The Flexibility

Just like chefs have the autonomy to report issues as they deem fit, our logging system is flexible. Developers can choose when to log, what to log, and where to log it. They can even turn off logging completely when they're just experimenting with new recipes (features) and don't want the logs to be cluttered with test runs.

The Conclusion

By the end of the night, when the kitchen slows down, our chefs (developers) can look back at the logs to understand what went exceptionally well and what could use a bit more seasoning. This centralized logging approach isn't just about catching errors; it's about creating a culture where learning from mistakes is as valuable as the dish served perfectly.

For those interested in the exact recipes (code snippets) and the detailed workings of our logging system, please visit our Git repository: Centralized Logging in React for Sitecore Content Hub. Here you'll find all the ingredients and steps to integrate this logging system into your own projects.

Bon Appétit and Happy Coding!

Thursday, November 2, 2023

From Sushi to Sashimi: A React Transformation of our Sitecore Content Hub Component


Greetings, dear patrons of the digital realm! 🎩

Today, we invite you to a special behind-the-scenes peek into the kitchen of our software development. Remember that succulent dish we served up last September, the Sitecore Content Hub User Group Display? Well, we've taken that recipe, added a pinch of React, and transformed it into a delightful sashimi that's lighter, more flavorful, and just as satisfying!

🍣 Reactifying our Code - The Why

Just as the chefs at "The Restaurant of Mistaken Orders" are always looking for ways to innovate their dishes, we developers are on a continuous quest to refine our code. React, with its component-based architecture and virtual DOM, offers a more efficient and modular approach. It's like transitioning from a hearty sushi roll to a delicate slice of sashimi; both are delightful, but the latter is a more refined experience.

🍤 Diving Deep into the React Component

Let's break down the fresh ingredients of our new React component. If you're a seasoned developer, you'll notice that our earlier non-React code has undergone a transformation akin to a lobster shedding its shell to reveal the succulent meat within.

Our core objective remains the same: dynamically display user groups based on a user's membership. But now, with React's state and effect hooks, we've added some magic spices to make this process smoother and more efficient.

For the uninitiated, the useEffect and useRef hooks are like our sous-chefs, ensuring everything runs in perfect order. While the former responds to changes and side-effects, the latter remembers the 'state' of things, ensuring that our component doesn't mistakenly inject user groups multiple times.

🥢 Integrating with Sitecore Content Hub

React's magic isn't just confined to its ecosystem. With the createRoot method, we've seamlessly integrated our React component into the Sitecore Content Hub. It's akin to pairing wasabi with your sashimi; the integration elevates the experience!

🍱 The Restaurant of Mistaken Orders Touch

Now, you may wonder, how does the philosophy of "The Restaurant of Mistaken Orders" fit into all of this? Just as our beloved restaurant celebrates the beauty of imperfection, our transition to React was driven by a desire to embrace change, to continually evolve, and to serve our digital guests with ever-improving experiences. Mistakes can be delicious learning opportunities, and this transformation is a testament to that ethos.

🍜 Wrapping Up

Our Reactified Sitecore Content Hub component is a testament to the power of continuous learning and evolution. It reminds us that there's always room for improvement, no matter how delicious the initial dish might be.

We hope you enjoyed this culinary-code journey with us. If you're looking to add this sashimi to your tech stack, don't hesitate to fork the recipe or drop us a line. And remember, in the world of code, as in the world of food, it's the passion, innovation, and the occasional mistaken order that makes the journey truly memorable!

Until next time, happy coding and bon appétit! 🍲👩‍💻👨‍💻

Full code available here: https://github.com/RoelRoozendaal/ch-basic-template-show-user-groups-on-profile-hover

https://www.restaurantofmistakenorders.com/2023/09/sitecore-content-hub-user-group-display.html

Sunday, October 29, 2023

The Restaurant of Mistaken Orders: A Tale of Sitecore Content Hub’s Transition to React


In the bustling digital metropolis, there resides a quaint little establishment known as Sitecore Content Hub. It's akin to the "Restaurant of Mistaken Orders," a place where the unexpected brews charm, yet also brews a concoction of technical quandaries. Much like the friendly staff at the restaurant, who serves dishes you didn't order with a smile, Sitecore embarked on a journey to spice up its menu by transitioning from the Knockout/Javascript fare to a more contemporary React cuisine.

However, the transition was akin to a chef persuading diners to swap their favorite vintage wine for a trendy cocktail. The mandate to move from version 4.x to 4.2 was presented as a necessary evolution to keep up with the digital gourmet landscape. Yet, this shift wasn't as palatable for many patrons, who found the React concoction a tad bit overwhelming to their established tastes. The hesitance was palpable, the reservations many.

Sitecore, being the avant-garde chef, was unsure about the compatibility of the old and new ingredients. The notion of a Mixmode - a blend of Knockout and React components - was akin to mixing Italian with Thai, a daring culinary adventure that could either tantalize the taste buds or result in a recipe for disaster. The promise was a full-fledged React feast, but the reality was a buffet where Knockout still found its place.

As clients gingerly navigated the transition, rolling up their sleeves to migrate components to React, the journey was akin to diners at the Restaurant of Mistaken Orders awaiting their surprise dish. The anticipation was laced with a dash of excitement and a sprinkle of dread.

The promise was a tech gourmet's delight with React's modern syntax and robust capabilities. Yet, as the migration unfolded, it was clear that Knockout was still holding fort in certain corners of the Content Hub, particularly the 'myorder' pages that seemingly had a penchant for the old world charm of Knockout.

The narrative of a full React transition seemed like a master-chef's dream, but the reality was more of a potluck where both React and Knockout found a place on the table. The insistence on transitioning seemed a tad over-seasoned, as the Content Hub couldn't quite bid adieu to Knockout.

As the tale unfolds, it's clear that the Sitecore Content Hub's transition journey had its share of quirky anecdotes, much like a dinner at the Restaurant of Mistaken Orders. The essence of the unexpected, the embrace of the old amidst the new, and the whimsical journey of navigating change, brewed a narrative that's both technically intriguing and gastronomically whimsical.

So, as we dine in the digital realm of Sitecore, the menu continues to evolve. The tale is a reminder that in the world of tech gourmet, the old and new often share a table, sometimes in harmony and sometimes in a playful tussle, much like the charming chaos of the Restaurant of Mistaken Orders.

In conclusion, the Sitecore Content Hub’s expedition from Knockout to React was much like a culinary adventure at a quirky eatery. There were surprises, and a few mistaken orders, but at the end of the day, the experience was a blend of the classic and contemporary, leaving patrons with a tale to reminisce and tech connoisseurs with lessons to mull over as they navigate the ever-evolving digital dining landscape.

Wednesday, October 25, 2023

Introduction

Welcome back to our quirky corner of the web, The Restaurant of Mistaken Orders! While we usually dish out code and tech tips with a side of humor, today we're serving up something different. Let's talk about a common post-pandemic pickle: the relentless online shopping habit. Think of it like ordering a simple pasta dish and ending up with a mysterious, yet intriguing, gourmet meal you never planned on trying.

Understanding the Habit: A Menu of Madness

The Pandemic Special

Picture this: the world went into lockdown, and our shopping habits were like ordering from a menu in the dark. We needed comfort, safety, and something to do. So, we turned to our screens, clicking 'Add to Cart' like it was the only dish available.

Why We Kept Coming Back

Online shopping, much like our restaurant's surprise orders, provides an unexpected thrill. Who doesn't love a package at the doorstep? It's like the chef sending out a complimentary dessert, except you pay for it, and it clutters your house.

Spotting the Excess: When You've Ordered Too Much

Signs You're Overstuffed

Do you remember the last time you impulsively added five different types of pasta to your cart, only to regret it later? That's what unnecessary online purchases feel like. Your digital shopping cart becomes a culinary misadventure you didn't plan for.

The Side Effects

Just as overeating can lead to a food coma, excessive online shopping can result in a financial hangover. You don't just lose money; you gain clutter and a hefty serving of buyer's remorse.

Culinary Strategies to Curb the Craving

1. Inventory Your Ingredients

Track your spending like a chef monitors their pantry. Know what you have, what you need, and what's simply taking up space.

2. Unsubscribe from Tempting Menus

Just as you wouldn't want a dessert menu waved under your nose on a full stomach, unsubscribe from those enticing retail emails.

3. Implement a "Cooling Off" Cooking Timer

Wait before you checkout. Let your shopping cart simmer for a day or two. You might find that the urge to buy that quirky spatula dissipates on its own.

4. Substitute Shopping with a Tastier Recipe

Find a hobby that's as satisfying as a perfectly cooked meal but doesn't cost as much as a five-star restaurant. Maybe it's time to cook up some new coding projects?

5. Understand the Emotional Eater Within

Sometimes, we shop online to fill an emotional void, much like stress eating. Recognizing these moments can help us find healthier ways to cope, like whipping up a real meal instead.

6. Setting Small Portion Goals

Cut back slowly. Don't try to go from a feast to a diet overnight. Reduce your online shopping orders bit by bit.

Extra Helpings of Support

Chew the Fat with Friends

Talk to people about your shopping habits. They might offer insights or join you in cutting back. It's like having a meal with friends instead of dining alone.

Professional Guidance: The Master Chef's Advice

If the habit feels too big to tackle, like trying to cook a five-course meal when you can barely boil water, seek professional advice.

Wrapping Up the Leftovers

Just like a meal at The Restaurant of Mistaken Orders, online shopping habits can surprise, delight, and sometimes overwhelm. Breaking free from this habit is about making mindful choices, understanding our impulses, and occasionally indulging in moderation.


As we close this unusual chapter in our tech-focused blog, remember: whether it's food, coding, or shopping, life's about savoring the experience, not overindulging in the distractions. Bon Appétit and Happy Coding!