Skip to main content

Particular Software Blog

Latest articles

  • NSBCon 2015: Decomposing the Domain

    In his presentation at NSBCon 2015, Gary Stonerock II talks about transforming a tightly-coupled synchronous process into an SOA/messaging-based solution using NServiceBus. Gary's team recently finished a rebuild of their clinical trial platform, and he shares with us some of the challenges, such as establishing stronger encapsulation and isolation, that they faced and how they overcame them.

    Read more
  • NSBCon 2015: All about Transports

    Knowing which NServiceBus transport is best for your application is not easy. There are many factors involved in selecting a message transport; distributed transactions, legacy integration, cross-platform capabilities, and cloud deployments are a few that might be considered. At NSBCon 2015 Andreas Öhlund outlines the different transports that are available for NServiceBus. He covers the highlights and lowlights of each. Rather than telling you which transport is the right one, Andreas provides you with the tools to make that decision yourself, within the context of your project.

    Read more
  • Dish washing and the chain of responsibility

    In our house, cleaning out the dishwasher is a shared chore. My son starts the unloading process by removing a dish or utensil from the dishwasher. If he can put it away, then he does. If the proper location for the dish is out of his reach, then he passes it to his mother. She then goes through the same process; put the dish away if she can, or pass it off to the next person in line, which is me. When I get handed a dish I will put it away and, since I'm 6'4" (1.92m) tall, I can reach all of our cupboard space which means that the process ends with me.

    Read more
  • I caught an exception. Now what?

    This post is part of the NServiceBus Learning Path.

    I can’t draw to save my life, but I love comics, especially ones that capture the essence of what it’s like to be a software developer. They capture the shared pain we all go through and temper it with humor. Luckily, I no longer work for large corporations, so it’s easier now to read Dilbert and laugh without also wincing.

    Read more
  • The Slippery Slope - Love your job, Live your life... Lose your mind

    It all began so innocently. Through a friend, I found a job at a small, young, high-tech company. It was a perfect fit for work-life balance—work from home and flexible hours. This job was completely in English, which was a major plus for one who chose to move overseas and, 10 years later, still struggles with a new language! As a bonus, there was a growing human resources component to the job, tapping into my original career choice years ago before I stepped off the corporate ladder to be home with my kids.

    Read more
  • Beyond ServiceMatrix

    When we originally started developing ServiceMatrix, our vision was to develop a tool that could help design distributed systems. One of our main goals was to enable architects to graphically design an immediately executable solution so they could quickly iterate on their designs. We also wanted to help developers who were new to NServiceBus to get started more quickly and avoid many common pitfalls with messaging. Unfortunately, even after years of effort, we just could not find the right balance between the "it just works" code generation experience and leaving developers enough control over how their solution was built. Although we were aware of many other companies who had struggled with this very issue, we also fell into that well-worn trap of thinking "this time will be different". We haven't given up though, and have started down a different path instead - one that doesn't rely on code generation and is more integrated with the rest of the platform.

    Read more
  • The dangers of ThreadLocal

    Languages and frameworks evolve. We as developers have to learn new things constantly and unlearn already-learned knowledge. Speaking for myself, unlearning is the most difficult part of continuous learning. When I first came into contact with multi-threaded applications in .NET, I stumbled over the ThreadStatic attribute. I made a mental note that this attribute is particularly helpful when you have static fields that should not be shared between threads. At the time that the .NET Framework 4.0 was released, I discovered the ThreadLocal class and how it does a better job assigning default values to thread-specific data. So I unlearned the ThreadStaticAttribute, favoring instead ThreadLocal. Fast forward to some time later, when I started digging into async/await. I fell victim to a belief that thread-specific data still worked. So I was wrong, again, and had to unlearn, again! If only I had known about AsyncLocal earlier. Let's learn and unlearn together!

    Read more
  • The day I tried to make cookies and learned something about writing documentation

    Have you ever wondered what it might feel like to read product documentation without the benefit of being an expert in the product? It’s a frustrating exercise, but it's usually something I can work around once I figure out the gap between what I know and what the reader knows. It’s never been brought home so completely as it was the other day. I had a hankering for some home-baked cookies and, perhaps stupidly, I figured I’d cook them myself. After all, how hard can it be to follow a bunch of simple instructions to bake some cookies, right?

    Read more
  • An organization deconstructed

    It’s safe to say I knew next to nothing about the challenges of a software development company when I joined the Operations department at Particular Software two years ago. My background is in Human Resources, and that part of me was intrigued by the little I knew about the company – just past the start-up stage, 100% dispersed, flexible hours, growing fast. As a passionate planner, it rocked my boat a bit that there was no master plan for the company. Three things were clear, though. One, I was part of a team passionate about our culture, organization, and products. Two, we wanted to build tools that developers were equally passionate about. And three, we wanted to build the kind of company where we all wanted to work.

    Read more
  • Encouraging an "I don't know" culture

    I recently started as a software engineer with Particular. Being new means I've had plenty of opportunities to realize what I know and what I don't know. With every new role, project, or technology, I've always found there is a lot to learn. I look at the team around me and see their good qualities, how they have it all together, and I realize how far I have to grow. They are experts, and I am supposed to know what I'm doing as well. You respect the knowledge of your peers, and you want them to respect yours, too. Admitting that you don't know something is scary. Will you lose a bit of that respect? What if you admit not knowing something that was obvious to everyone else?

    Read more