Why Benchmarking Your Code Matters

In the realm of programming, optimizing code for performance is akin to fine-tuning a well-oiled machine. One of the critical tools in achieving this optimization is benchmarking. Benchmarking refers to the process of measuring the performance of your code, comparing it against various parameters, and iterating to enhance its efficiency. Here are compelling reasons why benchmarking your code is an indispensable practice:

Performance Optimization

Benchmarking serves as a compass to navigate the complexities of code performance. By assessing execution times, memory usage, and other metrics, developers can pinpoint bottlenecks and areas for improvement. This data-driven approach empowers them to fine-tune algorithms, optimize data structures, and enhance overall system performance.

Identifying and Eliminating Bottlenecks

In intricate software systems, inefficiencies often lurk in unexpected places. Benchmarking helps pinpoint these bottlenecks, enabling developers to focus their efforts on specific areas that require optimization. Whether it’s inefficient loops, memory leaks, or suboptimal algorithms, benchmarking sheds light on these areas, allowing for targeted enhancements.

Comparison against Alternatives

When faced with multiple implementation choices or algorithms, benchmarking provides empirical evidence to support decision-making. It facilitates a side-by-side comparison, allowing developers to select the most efficient solution based on actual performance metrics rather than theoretical assumptions.

Preventing Performance Regressions

As software evolves, new features and changes might inadvertently introduce performance regressions. Regular benchmarking acts as a safety net by detecting any performance degradation early in the development cycle. This proactive approach helps maintain and even enhance the overall performance of the codebase.

Validating Optimization Efforts

When implementing optimizations, it’s crucial to verify their impact. Benchmarking allows developers to validate whether their optimizations result in actual performance improvements. This validation ensures that the efforts put into enhancing the codebase yield tangible benefits.

Enhancing User Experience

Efficient code directly translates to a better user experience. Faster load times, smoother interactions, and optimized resource usage contribute to a more responsive and enjoyable software experience for users.

Cultivating a Performance-Oriented Culture

By integrating benchmarking into the development process, teams foster a culture that prioritizes performance. It encourages continuous improvement, knowledge sharing, and a collective effort toward creating efficient and high-performing software.

In conclusion, benchmarking is not merely a tool; it’s a guiding principle for creating high-performance software. By regularly evaluating and optimizing code through benchmarking, developers pave the way for enhanced efficiency, better user experiences, and a more robust foundation for future innovations.

So I’m a .NET guy – what should I use for .NET?

Unlocking Code Performance Excellence with BenchmarkDotNet

In the quest for optimal code performance within the .NET ecosystem, BenchmarkDotNet stands tall as an indispensable tool, offering a suite of features that elevate code benchmarking to a whole new level. Here’s why BenchmarkDotNet reigns supreme as the go-to library for performance measurement and optimization:

Simplicity and Ease of Use

BenchmarkDotNet simplifies the benchmarking process with its intuitive syntax and straightforward setup. Its attribute-based model allows developers to create benchmarks quickly, focusing on the code’s performance rather than wrestling with complex configurations.

Extensive Platform Support

Supporting a wide array of platforms and frameworks within the .NET ecosystem, BenchmarkDotNet is versatile. Whether targeting .NET Framework, .NET Core, or the latest .NET platforms, it seamlessly adapts to various environments, ensuring consistent and reliable benchmarking across different setups.

Robust Statistical Analysis

Beyond merely measuring execution times, BenchmarkDotNet excels in statistical analysis. It provides robust statistical summaries, aiding developers in making informed decisions based on reliable metrics. This statistical prowess ensures accuracy in identifying performance variations and trends.

Flexible Configuration Options

Despite its simplicity, BenchmarkDotNet offers a rich set of configuration options. Developers can fine-tune benchmarks by customizing iterations, changing run settings, adjusting environment variables, and much more. This flexibility empowers users to tailor benchmarks to their specific needs.

Automatic Infrastructure Management

BenchmarkDotNet takes care of the benchmarking infrastructure, automatically handling warm-up periods, overhead calculations, and other intricacies involved in accurate performance measurements. This automation allows developers to focus solely on writing and optimizing their code.

Visualizations and Reporting

The library provides comprehensive visualizations and detailed reports, making it effortless to interpret benchmark results. Through clear charts, graphs, and statistical summaries, developers gain deeper insights into their code’s performance characteristics.

Active Community and Continuous Development

Benefiting from an active community and continuous development, BenchmarkDotNet receives regular updates, improvements, and bug fixes. Its community-driven nature ensures ongoing support and a constantly evolving toolset that adapts to the latest advancements in the .NET ecosystem.

Integration with CI/CD Pipelines

BenchmarkDotNet seamlessly integrates with Continuous Integration and Continuous Deployment (CI/CD) pipelines. This integration facilitates automated performance testing, ensuring that code changes don’t degrade performance inadvertently.

In essence, BenchmarkDotNet isn’t just a benchmarking library; it’s a comprehensive toolkit designed to elevate code performance to new heights within the .NET ecosystem. Its user-friendly nature, robust statistical analysis, and adaptability make it an invaluable asset for developers striving to create high-performance and efficient software. With BenchmarkDotNet, optimizing code performance becomes not just a goal, but an achievable reality.

So, in a nutshell – do benchmark, and if you on .NET, do it with BenchmarkDotNet!

Tablee des Chefs 2023 – fundraising gala!

There are a range of different organizations I do help via giving back – mostly using my skills, like Spectry, Skool, and – La Tablee des Chefs. It is a Canadian organization that encourages the youth to learn culinary skills and become aware of nutritional information regarding food preparation – they are engaging 150+ schools in Canada.

Morgan Stanley, through Code to Give, has committed to this organization 2 years ago to build a mobile application to be used to share information, learning plans, create a social network and maintain engagement with the youth. It contains advanced recipe searches, by cuisine type, dietary concerns, ingredients, etc. The application also provides up to date information on the calculated ecological impact of the meals and allows you to substitute ingredients to see how that changes the carbon footprint and other environmental factors.

At their annual Montreal fundraising gala, we were honored as participants acknowledging Morgan Stanley’s contributions. Jonathan Brunette, Keval Prabhudesai, Olivier Beau were there in person, and Ferenc Hubicsak and me were waiting for the reactions from the digital sidelines.

The fundraising brought in over $500.000 CAD in on night – a nice accomplishment for sure!

FINOS All Community Call Recap & memes

Last week, https://finos.org had their yearly All Community Call Recap – please do watch the recording and check out the deck.

So, as I was watching the recap and was preparing for my section (together with Keith O’Donnell, we were talking about https://zenith.finos.org ), I could not miss that I was mentioned once… twice… three times… up to five times in 60 minutes. And I wasn’t the only one spotting this – after the 3rd one I started to get memes from
people, let me share a little selection here 🙂

* want to mention Dov Katz, Brian Ingenito, Stephen Goldbaum, Rita Chaturvedi, Matthew Bain, Mimi Flynn, Alvin Shih, Amol Shukla, Paul Stevenson, Attila Mihaly, Ferenc Hubicsak, and more, who contributed significantly to FINOS from Morgan Stanley.

So, looking forward to a fun 2024, in my new roles at FINOS (Open Source Readiness, InnerSource, Emerging Technologies, and Technical Oversight Committee), and driving Big Boost Mondays in NYC – see you at an upcoming session (like the one tonight)!

Embrace your self-worth value

Far from the first time I’m touching the topic of imposter syndrome – you know, this might be a way for me to fight it, actually.

brown wooden blocks with number
Photo by Brett Jordan on Pexels.com

Understanding Your Intrinsic Worth: Mel Robbins’ Quote

In a world where validation often comes from external sources, Mel Robbins’ quote stands as a poignant reminder of self-value and self-perception. “There will always be someone who can’t see your worth. Don’t let it be you.” These words encapsulate a profound truth that echoes through the corridors of self-esteem and personal validation.

Acknowledging External Perceptions

The quote touches upon the inevitability of encountering individuals who may fail to recognize your true worth. Society, with its myriad perspectives and biases, often dictates value through its own lens, sometimes disregarding the essence of an individual’s true worth. It could be a boss overlooking your contributions, a peer undermining your efforts, or even societal norms imposing unrealistic standards.

The Power of Self-Perception

However, the crux lies in one’s own perception. The pivotal message within Robbins’ words is the importance of self-assessment and self-acknowledgment. It’s about not internalizing or adopting the limited perceptions of others as a measure of personal value.

Cultivating Self-Worth

Cultivating a strong sense of self-worth involves understanding one’s strengths, acknowledging accomplishments, and embracing imperfections. It’s about recognizing that inherent value isn’t contingent upon external validation. Instead, it springs from a deep understanding and appreciation of one’s unique qualities, experiences, and potential.

Empowerment through Self-Validation

Robbins’ quote is a call to action—an invitation to empower oneself by taking charge of one’s narrative. By reframing self-perception and detaching it from external judgments, individuals can harness the power to recognize and appreciate their worth irrespective of others’ opinions.

Conclusion

Mel Robbins’ quote encapsulates a profound truth about self-worth—one that resonates across cultures and times. It serves as a guiding beacon, encouraging individuals to embrace their intrinsic value, irrespective of the limitations others may impose. It’s a reminder to be the guardian of one’s own worth, refusing to let external perceptions cloud the understanding of one’s true essence. Ultimately, it’s an affirmation of the importance of self-belief in navigating the intricacies of life.

Strategies for combating confirmation bias

Confirmation bias, the tendency to seek out information that aligns with our beliefs while ignoring contradictory evidence, is a pervasive cognitive bias affecting decision-making and critical thinking. Overcoming this bias requires intentional strategies and mindfulness. Here’s a guide on combating confirmation bias:

woman holding mirror against her head in the middle of forest
Photo by Tasha Kamrowski on Pexels.com

1. Recognize Your Biases

Acknowledging that everyone has biases is the first step. Be aware of your predispositions and understand how they influence your perceptions and judgments.

2. Seek Diverse Perspectives

Actively expose yourself to different viewpoints and sources of information. Engage with diverse opinions, cultures, and ideologies to broaden your understanding.

3. Question Your Assumptions

Challenge your own beliefs by asking critical questions. Assess the evidence objectively and consider alternative explanations before drawing conclusions.

4. Practice Mindful Evaluation

Evaluate information systematically. Fact-check sources, cross-verify information, and question the reliability of data before accepting it as true.

5. Encourage Constructive Disagreement

Embrace debates and discussions with people who hold opposing views. Constructive disagreement fosters learning and helps in uncovering blind spots.

6. Develop Critical Thinking Skills

Enhance your critical thinking abilities by learning logic, reasoning, and scientific methods. Apply these skills to analyze information objectively.

7. Stay Open-Minded

Cultivate an open-minded approach. Be willing to change your opinions in the face of new, compelling evidence. Flexibility in thinking is crucial.

8. Pause and Reflect

Before making decisions or forming conclusions, take a moment to reflect. Consider whether your judgments are influenced by bias and consciously reassess them.

9. Create Decision-Making Processes

Establish decision-making frameworks that encourage deliberation, multiple perspectives, and scrutiny to minimize the impact of biases.

10. Continuous Learning

Embrace a continuous learning mindset. Stay curious, be receptive to new information, and adapt your beliefs based on reliable evidence.

Conclusion

By acknowledging and actively addressing confirmation bias, individuals can enhance their decision-making processes and foster a more inclusive and informed worldview. Embracing diverse perspectives, cultivating critical thinking skills, and maintaining an open-minded approach are key in combating confirmation bias.

Remember, while complete elimination of bias might be impossible, consistent efforts to mitigate it can lead to more rational and objective decision-making.

Dangers of Stochastic Parrots: Can Language Models Be Too Big?

“In recent years”, language models have seen exponential growth in size and complexity, leading to the development of immensely powerful AI systems capable of generating human-like text. However, this advancement hasn’t come without concerns, and one of the significant debates revolves around the concept of “Stochastic Parrots” – the potential dangers of excessively large language models.

The Rise of Stochastic Parrots

Stochastic Parrots refer to AI models that, despite their remarkable capabilities, may merely mimic human language without true comprehension or critical thinking. As models grow in size and absorb more data, they become proficient at regurgitating information without genuinely understanding it. This phenomenon raises profound ethical, societal, and technical questions.

Ethical Concerns

The ethical concerns surrounding these expansive models are multifaceted. Firstly, they can perpetuate biases present in the data they are trained on, leading to biased or discriminatory outputs. Moreover, the environmental impact of training and maintaining colossal models cannot be ignored, as they demand immense computational resources, contributing significantly to carbon emissions.

Societal Implications

Language models wield tremendous influence in various domains, from content generation to decision-making processes. However, an overreliance on these models can result in a decrease in critical thinking and creativity among users. Moreover, the propagation of misinformation or malicious content at an unprecedented scale poses a serious threat to society.

Technical Challenges

Apart from ethical and societal issues, the sheer size of these models presents technical challenges. Handling, fine-tuning, and deploying such massive systems require substantial computational power and expertise, limiting access to smaller organizations or researchers with fewer resources.

Addressing the Challenges

Addressing the dangers posed by Stochastic Parrots requires a multi-pronged approach. This includes developing techniques to mitigate biases in training data, promoting transparency and accountability in AI systems, and fostering research into smaller, more efficient models that balance performance with ethical considerations.

Conclusion

While large language models undoubtedly showcase the immense potential of AI, they also come with inherent risks and challenges. As we continue to push the boundaries of AI technology, it becomes imperative to weigh the benefits against the risks and work towards the responsible and ethical development of these powerful tools.

In the pursuit of innovation, it’s crucial to ensure that the evolution of language models aligns with the broader goals of societal well-being, ethical usage, and environmental sustainability.

Do I still need to do math?

While I was helping with Gauss elimination my sons, I started to think about – beside that I can now teach them these skills, do I still need to do math, as an adult? The answer is: Absolutely, math skills play a pivotal role in adult life, especially in career development. While many of us might have breathed a sigh of relief after completing our last math class in school, the reality is that mathematical abilities remain highly relevant and impactful in numerous professions. Here’s an exploration of how math skills continue to be crucial for career growth and development in adulthood.

Problem-Solving and Analytical Thinking

Mathematics cultivates problem-solving and analytical thinking, both of which are invaluable in the professional world. In virtually every field, adults encounter challenges that require logical reasoning and critical analysis. Whether it’s in finance, engineering, computer science, medicine, or even in everyday scenarios like budgeting or interpreting data, the ability to dissect problems and derive solutions is greatly enhanced by a solid mathematical foundation.

Financial Management and Economics

In the realm of personal finance, math skills are indispensable. Understanding budgets, calculating investments, managing debt, and comprehending interest rates are vital aspects of financial literacy. For those pursuing careers in finance, accounting, economics, or business, mathematical prowess is the backbone of decision-making processes, risk assessment, and strategic planning.

Technology and Data Analysis

With the rapid advancement of technology, data has become a cornerstone of many professions. From marketing and healthcare to manufacturing and research, data analysis drives decision-making. Proficiency in mathematics, including statistics and algorithms, empowers individuals to make sense of complex datasets, derive meaningful insights, and predict trends. This skill is increasingly sought after in tech-driven industries and fields like artificial intelligence, machine learning, and data science.

Engineering and Sciences

In engineering disciplines, mathematics serves as the language of problem-solving. Concepts from calculus, algebra, and geometry are foundational in designing structures, developing innovations, and understanding physical phenomena. Similarly, in scientific fields such as physics, chemistry, and biology, mathematical models and formulas are essential for hypothesis testing, experimentation, and making scientific advancements.

Career Advancement and Adaptability

Moreover, possessing strong math skills enhances one’s adaptability and opens doors to diverse career opportunities. In a rapidly evolving job market, individuals with a solid mathematical background often find it easier to upskill or transition between professions. The ability to quickly grasp quantitative concepts and adapt to new technologies gives professionals a competitive edge in various industries.

Conclusion

In essence, math skills remain pertinent throughout adulthood, playing a pivotal role in career development and advancement. They provide a framework for problem-solving, critical thinking, and decision-making that transcends specific job roles or industries. Embracing and honing these skills not only fosters personal growth but also significantly enhances one’s professional capabilities in an increasingly complex and data-driven world. Therefore, whether it’s calculating budgets, analyzing trends, or designing innovative solutions, the relevance of math skills in adult life cannot be overstated.

Harnessing the Past

In the journey toward a fulfilling career, the past often holds the key to unlocking future success. Our experiences, both triumphs and missteps, serve as invaluable guides, shaping our professional trajectories in profound ways. Reflecting on the past and learning from our errors can be transformative, offering insights that propel us toward growth and success.

Mistakes, often perceived as setbacks, are in fact stepping stones to progress. They provide a wealth of lessons, teaching us about ourselves, our capabilities, and the intricacies of our chosen paths. Embracing these lessons can fundamentally alter our approach to career building.

Embracing Failure as a Catalyst for Growth

Failure, an inherent part of any career journey, is not the end but a springboard for advancement. Each error unveils areas for improvement, signaling where we need to recalibrate our strategies or enhance our skills. Instead of fearing failure, successful individuals learn to embrace it, seeing it as a necessary element in the pursuit of excellence.

For instance, entrepreneurs often encounter multiple setbacks before achieving success. Their ability to learn from past mistakes, pivot, and adapt their approaches is what ultimately propels them forward. They understand that errors provide crucial insights that refine their business models and strategies.

Leveraging Experience for Informed Decision-Making

Reflection on past decisions, especially those that led to unfavorable outcomes, equips us with a deeper understanding of cause and effect. This insight becomes a valuable asset in making informed decisions in the future. Whether it’s choosing a career path, navigating a project, or making crucial business decisions, drawing upon past experiences helps in mitigating risks and optimizing outcomes.

In a career context, professionals who analyze their past choices are better equipped to identify patterns, anticipate challenges, and make calculated decisions. They utilize their errors as case studies, enhancing their problem-solving abilities and decision-making acumen.

Cultivating a Growth Mindset

The mindset with which we approach our past errors significantly impacts our future endeavors. Adopting a growth mindset, popularized by psychologist Carol Dweck, involves viewing challenges and failures as opportunities for growth rather than fixed setbacks. This mindset shift reframes errors as avenues for learning and development.

In a career context, individuals with a growth mindset are more resilient in the face of adversity. They bounce back from setbacks, leveraging their experiences to continuously evolve and improve. This mindset fosters innovation, adaptability, and a willingness to take calculated risks, essential traits for career advancement.

Conclusion

Our past, characterized by both successes and errors, is a treasure trove of wisdom waiting to be unearthed. From failed ventures to misguided decisions, each experience holds the potential to shape a brighter, more successful future. By embracing our errors, learning from them, and leveraging these lessons, we fortify our careers with invaluable insights that steer us toward growth and accomplishment. As we navigate the complexities of career building, let us not overlook the invaluable teachings that lie within our past, for therein lies the blueprint for a more prosperous future.

Finding What Makes Your Heart Smile

In the symphony of life, amidst the daily hustle and bustle, we often find ourselves chasing after success, achievements, and external validations. In this pursuit, we sometimes overlook the essence of what truly brings us joy and contentment. The quest to find what makes our hearts smile is a journey that leads us back to our core, our passions, and the simple yet profound things that ignite a genuine sense of happiness within us.

Each person’s journey to discovering what brings them joy is as unique as a fingerprint. It begins with introspection, a moment of pause amid life’s whirlwind, where we take the time to reflect on what truly makes us feel alive. It’s about reconnecting with our inner child, rekindling the flames of curiosity, and exploring the activities or moments that evoke a genuine sense of happiness.

Often, what makes our hearts smile resides in the simple joys of life—the laughter shared with loved ones, the warmth of a sunrise, the embrace of nature, the melodies that resonate within us, or the act of creating something with our own hands. It might be found in hobbies like painting, writing, gardening, cooking, or in activities that make us feel fully engaged and present.

The pursuit of what makes our hearts smile requires an open mind and a willingness to step out of comfort zones. It beckons us to try new experiences, explore diverse cultures, or simply experiment with different facets of life until we stumble upon that which resonates deeply within us.

Sometimes, it’s not about grand gestures or monumental achievements but rather the small, everyday moments that bring us immense joy. It might be the smile exchanged with a stranger, the satisfaction of helping someone in need, or the peacefulness of a quiet moment spent in solitude.

However, this pursuit is not always straightforward. Life’s complexities, responsibilities, and societal expectations can create a fog that obscures our path to joy. It’s essential to declutter our minds, strip away the noise, and actively listen to our inner selves. Mindfulness practices, journaling, meditation, or seeking guidance from mentors or therapists can aid in this process of self-discovery.

Moreover, allowing ourselves the freedom to evolve and change our pursuits is vital. What made our hearts smile in the past might not necessarily bring the same joy in the present. Embracing this evolution and being open to discovering new passions is key to continuous fulfillment and happiness.

Ultimately, the quest to find what makes our hearts smile is not just about personal gratification; it’s about nurturing our well-being, fostering resilience, and cultivating a deeper connection with ourselves and the world around us. It’s about leading a more authentic, purposeful life guided by the pursuit of joy.

In conclusion, amidst life’s complexities, finding what makes our hearts smile is an odyssey that beckons us to delve within, explore the world around us, and embrace the myriad of experiences that evoke genuine happiness. It’s about cherishing the small moments, discovering our passions, and nurturing our souls. As we embark on this journey, let us remember that the truest joy often resides in the simplest of things, waiting for us to notice and embrace it.

So, take a moment, listen closely to your heart’s whispers, and embark on the beautiful journey of finding what truly makes your heart smile.

New supertypeface

Monaspace is a new type system that advances the state of the art for the display of code on screen. It consists of five fonts, each with a distinct voice, but all compatible with one another. You can mix and match them to create more expressive and beautiful code. Monaspace is an exploration from GitHub Next, a team of designers and engineers who are passionate about the future of coding. Monaspace is free and open source, and you can download it from here.

Monaspace is not just a font, it’s a new way of seeing your code. 🚀

The five fonts that make up Monaspace are:

  • Neon: A neo-grotesque sans serif that is clean and modern. It has a geometric and minimalist design, with a subtle texture that adds warmth and character. Neon is ideal for code that needs clarity and simplicity.
  • Argon: A humanist sans serif that is friendly and elegant. It has a natural and organic design, with a smooth and fluid shape. Argon is ideal for code that needs personality and grace.
  • Xenon: A slab serif that is bold and confident. It has a sturdy and robust design, with a strong and solid structure. Xenon is ideal for code that needs authority and impact.
  • Radon: A handwriting font that is playful and creative. It has a whimsical and quirky design, with a lively and dynamic movement. Radon is ideal for code that needs fun and flair.
  • Krypton: A mechanical sans serif that is futuristic and cool. It has a technical and precise design, with a sharp and angular edge. Krypton is ideal for code that needs innovation and style.

Each font has three variable axes: weight, width, and slant. You can adjust these axes to fine-tune the appearance and expression of your code. For example, you can make your code lighter or bolder, narrower or wider, upright or italic. You can also use the texture axis to add or remove the subtle noise effect that gives Monaspace its unique charm.

Monaspace also supports coding ligatures, which are special glyphs that combine two or more characters into one. Coding ligatures can make your code more readable and compact, by reducing visual clutter and enhancing semantic meaning. Monaspace has eight groups of coding ligatures, separated into stylistic sets. You can enable or disable individual sets selectively, depending on your preference and coding language.

Monaspace is designed to be seamlessly mixed and matched. You can use different fonts for different parts of your code, to layer more meaning and hierarchy. For example, you can use Neon for comments, Argon for variables, Xenon for keywords, Radon for strings, and Krypton for operators. You can also use different weights, widths, and slants for different purposes, such as highlighting errors, warnings, or suggestions.

Monaspace is a revolutionary type system that reimagines the way we write and read code. It offers a more expressive and beautiful typographical palette, that goes beyond colors and bolder weights. It is a font for the future of coding, and you can try it today. Download Monaspace from here and see your code in a new light. 💡