<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title type="text">Cambia Research</title>
  <subtitle type="text">Software Better</subtitle>
  <id>https://www.cambiaresearch.com</id>
  <rights type="text">Cambia Research</rights>
  <updated>2026-04-03T15:46:44-05:00</updated>
  <logo>https://www.cambiaresearch.com/sites/cambia/themes/cambia/logo.png</logo>
  <generator>PieceWorx Website Framework</generator>
  <link rel="self" type="text/html" title="Cambia Research Feed" href="https://www.cambiaresearch.com/feed.xml" />
  <link type="text/html" title="Cambia Research" href="https://www.cambiaresearch.com/" />
  <entry>
    <id>https://www.cambiaresearch.com/articles/103288/an-easier-way-to-append-strings-with-a-delimiter</id>
    <title type="text">An Easier Way to Append Strings with a Delimiter</title>
    <published>2019-10-10T17:10:41-05:00</published>
    <updated>2019-10-10T17:10:41-05:00</updated>
    <link href="https://www.cambiaresearch.com/articles/103288/an-easier-way-to-append-strings-with-a-delimiter" />
    <content type="html">&lt;img src='https://www.cambiaresearch.com/tenants/cambia/articles/images/d88f727b-9d9a-46fa-9ba1-5bf78b4be663_ArticleImageThumb_0.jpg' /&gt;&lt;p&gt;Appending strings is a common and repetitive task in C#. You'll be surprised how much time and energy this little extension method saves you.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://www.cambiaresearch.com/articles/166/timeofday-class-for-csharp</id>
    <title type="text">TimeOfDay Class for C#</title>
    <published>2019-05-31T22:55:32-05:00</published>
    <updated>2019-05-31T22:55:32-05:00</updated>
    <link href="https://www.cambiaresearch.com/articles/166/timeofday-class-for-csharp" />
    <content type="html">&lt;img src='https://www.cambiaresearch.com/tenants/cambia/articles/images/e9cd2ca5-b4ad-4e69-a538-c786331f2c77_ArticleImageThumb_0.jpg' /&gt;&lt;p&gt;There are a lot of ways you can hack a time of day in C#, but why not use a dedicated TimeOfDay class.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://www.cambiaresearch.com/articles/204333/generic-enumhelper-class-for-csharp</id>
    <title type="text">Generic EnumHelper Class for C#</title>
    <published>2018-05-28T15:51:56-05:00</published>
    <updated>2020-09-13T11:57:01-05:00</updated>
    <link href="https://www.cambiaresearch.com/articles/204333/generic-enumhelper-class-for-csharp" />
    <content type="html">&lt;img src='https://www.cambiaresearch.com/tenants/cambia/articles/images/90d0503d-2a52-4bdd-9bf2-ad59d69ac740_ArticleImageThumb_0.jpg' /&gt;&lt;p&gt;Enums in C# are very useful, but it can seem difficult to work with them at times.  In truth, they're pretty easy, but a generic helper class can make our lives a lot easier.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://www.cambiaresearch.com/articles/995518/six-reasons-to-ditch-the-term-code-smell</id>
    <title type="text">Six Reasons To Ditch the Term "Code Smell"</title>
    <published>2017-05-03T17:15:21-05:00</published>
    <updated>2017-05-03T19:35:26-05:00</updated>
    <link href="https://www.cambiaresearch.com/articles/995518/six-reasons-to-ditch-the-term-code-smell" />
    <content type="html">&lt;img src='https://www.cambiaresearch.com/tenants/cambia/articles/images/59492402-4279-4fff-8801-4c9e4a8f0985_ArticleImageThumb_0.jpg' /&gt;&lt;p&gt;The term "code smell" has been around for a while to indicate a particular quality of software code that suggests a problem or bad practice.  But it might not be the best choice of words for a software development team.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://www.cambiaresearch.com/articles/404466/the-cambia.gravatar-nuget-package</id>
    <title type="text">The Cambia.Gravatar Nuget Package</title>
    <published>2016-09-30T21:46:54-05:00</published>
    <updated>2016-10-01T15:10:03-05:00</updated>
    <link href="https://www.cambiaresearch.com/articles/404466/the-cambia.gravatar-nuget-package" />
    <content type="html">&lt;img src='https://www.cambiaresearch.com/tenants/cambia/articles/images/44c1f3e2-69ef-405f-a82a-ddd1462c6e51_ArticleImageThumb_0.jpg' /&gt;&lt;p&gt;Cambia.Gravator is a free Nuget package.  It contains a simple .NET class for generating Gravatar URLs from emails.  It supports all gravatar options.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://www.cambiaresearch.com/articles/730004/the-dotnet-uri-class-and-the-cambia.uriextensions-nuget-package</id>
    <title type="text">The .NET Uri Class and the Cambia.UriExtensions Nuget Package</title>
    <published>2016-09-14T15:53:51-05:00</published>
    <updated>2016-09-24T01:40:18-05:00</updated>
    <link href="https://www.cambiaresearch.com/articles/730004/the-dotnet-uri-class-and-the-cambia.uriextensions-nuget-package" />
    <content type="html">&lt;img src='https://www.cambiaresearch.com/tenants/cambia/articles/images/3a2dcb4c-cc0c-4c6f-a53e-8c174f54835e_ArticleImageThumb_0.jpg' /&gt;&lt;p&gt;Cambia.UriExtensions is a Nuget package provides extension methods to the existing .NET Uri class which make extracting, modifying and building URIs and their parts easier than ever.  An overarching goal of this project was to make worrying about delimiter characters a thing of the past.  Build and modify your URIs using fluent Drop and Set methods.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://www.cambiaresearch.com/articles/241022/intro-to-number-bases-and-the-cambia.basen-package</id>
    <title type="text">Intro to Number Bases and the Cambia.BaseN Package</title>
    <published>2016-08-29T23:30:17-05:00</published>
    <updated>2016-09-07T22:16:16-05:00</updated>
    <link href="https://www.cambiaresearch.com/articles/241022/intro-to-number-bases-and-the-cambia.basen-package" />
    <content type="html">&lt;img src='https://www.cambiaresearch.com/tenants/cambia/articles/images/535c767b-1b57-4faf-9514-c833ae7fc132_ArticleImageThumb_0.jpg' /&gt;&lt;p&gt;Conversions of numbers between different bases or representations in different bases is often needed or useful in computing.  This article will introduce you to alphabets, clear up some common misconceptions and discuss some of the issues one might encounter doing base conversions.  We further define a new Cambia95 standard alphabet which we hope may be adopted elsewhere for conversion and encoding solutions.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://www.cambiaresearch.com/articles/969077/cambia.basen-documentation-and-code-samples</id>
    <title type="text">Cambia.BaseN Documentation and Code Samples</title>
    <published>2016-08-29T23:29:27-05:00</published>
    <updated>2016-11-25T00:01:42-06:00</updated>
    <link href="https://www.cambiaresearch.com/articles/969077/cambia.basen-documentation-and-code-samples" />
    <content type="html">&lt;img src='https://www.cambiaresearch.com/tenants/cambia/articles/images/0d9de4a5-f4ba-4a3b-ac21-97769a88642e_ArticleImageThumb_0.jpg' /&gt;&lt;p&gt;Cambia.BaseN is a Nuget package for converting and representing numbers in different bases.  This article provides numerous code sample to show you how to use the package.  I think you'll see that it's pretty straight forward.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://www.cambiaresearch.com/articles/86/hacking-the-monty-hall-problem</id>
    <title type="text">Hacking The Monty Hall Problem</title>
    <published>2016-02-18T14:07:04-06:00</published>
    <updated>2016-04-22T13:08:16-05:00</updated>
    <link href="https://www.cambiaresearch.com/articles/86/hacking-the-monty-hall-problem" />
    <content type="html">&lt;img src='https://www.cambiaresearch.com/tenants/cambia/articles/images/70a27782-2aa9-445f-8f55-f5070d685c32_ArticleImageThumb_0.jpg' /&gt;&lt;p&gt;Thousands of people, including many PhDs, have been completely fooled by the Monty Hall problem.  It is utterly counterintuitive and even when you hear an explanation it doesn't make any sense.  I break it down here with pictures and go all the way back to the simple defintion of probability to make it clear.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://www.cambiaresearch.com/articles/85/surface-web-deep-web-dark-web----whats-the-difference</id>
    <title type="text">Surface Web, Deep Web, Dark Web -- What's the Difference?</title>
    <published>2016-02-06T19:39:03-06:00</published>
    <updated>2016-04-22T13:15:05-05:00</updated>
    <link href="https://www.cambiaresearch.com/articles/85/surface-web-deep-web-dark-web----whats-the-difference" />
    <content type="html">&lt;img src='https://www.cambiaresearch.com/tenants/cambia/articles/images/2c5ce2a4-66db-459a-8c80-c682f33d2114_ArticleImageThumb_0.jpg' /&gt;&lt;p&gt;Are you wondering how the surface web, deep web and dark web are different?  I've had a ring-side seat since the beginning of the web and clarify these often mis-used terms.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://www.cambiaresearch.com/articles/84/how-to-integrate-a-google-custom-search-popup-in-a-bootstrap-navbar</id>
    <title type="text">How to Integrate a Google Custom Search Popup In a Bootstrap Navbar</title>
    <published>2015-10-15T14:15:59-05:00</published>
    <updated>2016-09-07T22:16:39-05:00</updated>
    <link href="https://www.cambiaresearch.com/articles/84/how-to-integrate-a-google-custom-search-popup-in-a-bootstrap-navbar" />
    <content type="html">&lt;img src='https://www.cambiaresearch.com/tenants/cambia/articles/images/65b3cd60-9798-42b7-a608-26b0a2d78a71_ArticleImageThumb_0.jpg' /&gt;&lt;p&gt;Suitable for a Bootstrap noob, this tutorial will walk you through, start to finish, creating a Bootstrap 3 menu bar and integrating Google's free custom website search capability in a modal popup window.  It's fast.  It's light.  And with this tutorial, easy to do.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://www.cambiaresearch.com/articles/83/rule-6---adapt-and-adopt</id>
    <title type="text">Rule #6 - Adapt and Adopt</title>
    <published>2015-10-12T09:31:57-05:00</published>
    <updated>2016-04-22T13:14:29-05:00</updated>
    <link href="https://www.cambiaresearch.com/articles/83/rule-6---adapt-and-adopt" />
    <content type="html">&lt;img src='https://www.cambiaresearch.com/tenants/cambia/articles/images/153d95ef-e6e6-4532-8278-362bd36cced4_ArticleImageThumb_0.jpg' /&gt;&lt;p&gt;In 1965, Dr. Richard Feynman won the Nobel Prize in Physics.  He was brash, rebellious and rarely passed up an opportunity to point out hypcrisy and irrationality.  An experience from his youth can teach us something about programming standards.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://www.cambiaresearch.com/articles/11/pathhelper---convert-file-and-folder-paths-and-urls-in-an-aspnet-application</id>
    <title type="text">PathHelper - Convert File and Folder Paths and URLs in an ASP.NET Application</title>
    <published>2015-03-14T12:37:03-05:00</published>
    <updated>2020-09-13T11:57:09-05:00</updated>
    <link href="https://www.cambiaresearch.com/articles/11/pathhelper---convert-file-and-folder-paths-and-urls-in-an-aspnet-application" />
    <content type="html">&lt;img src='https://www.cambiaresearch.com/tenants/cambia/articles/images/db318b3c-d374-458b-a2c6-1d4ca14488c7_ArticleImageThumb_0.jpg' /&gt;&lt;p&gt;Managing all the various types of paths in ASP.NET can be a chore.  You have URLs, virtual paths, absolute paths, relative paths and application paths.  This article helps you make sense of all of these while managing conversions and getting the type of path you need when you need it.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://www.cambiaresearch.com/articles/82/generic-undoredo-stack-in-csharp</id>
    <title type="text">Generic Undo/Redo Stack in C#</title>
    <published>2013-07-31T16:21:58-05:00</published>
    <updated>2016-04-22T13:08:08-05:00</updated>
    <link href="https://www.cambiaresearch.com/articles/82/generic-undoredo-stack-in-csharp" />
    <content type="html">&lt;img src='https://www.cambiaresearch.com/tenants/cambia/articles/images/73a2d549-1e18-405d-a443-46b4570ebb9e_ArticleImageThumb_0.jpg' /&gt;&lt;p&gt;In the process of customizing the RichTextBox for Inspire Writing Studio, I discovered the need to manage my own undo/redo stack.  I present the code for a simple generic undo/redo stack.  This generic undo/redo implementation can be extended for a variety of usage scenarios.&lt;/p&gt;</content>
  </entry>
  <entry>
    <id>https://www.cambiaresearch.com/articles/81/writing-software-for-the-novelist</id>
    <title type="text">Writing Software for the Novelist</title>
    <published>2013-07-27T11:54:01-05:00</published>
    <updated>2016-04-22T13:17:54-05:00</updated>
    <link href="https://www.cambiaresearch.com/articles/81/writing-software-for-the-novelist" />
    <content type="html">&lt;img src='https://www.cambiaresearch.com/tenants/cambia/articles/images/df74525e-ef52-4935-9613-0d2429355a45_ArticleImageThumb_0.jpg' /&gt;&lt;p&gt;I began my third unfinished novel about four months ago.  This time, though, I had a very specific reason for putting it on the shelf.  I was unhappy with the writing software available to me and I decided to create my own.  I want to invite you on this journey and open the door to the process of planning and creating a viable software product.&lt;/p&gt;</content>
  </entry>
</feed>