Stringly Typed Booleans

I’m getting rather hacked off seeing boolean properties typed as strings. Stringly typed is a phrase I learnt off a post from the excellent Coding Horror blog and it describes a phenomena whereby properties that are of a specific type, e.g. Boolean, Date, int, are stored needlessly as strings.

I’m working on a website that communicates with a money laundering service to check whether an individual is “bad” or not. Individuals can pass the test, but importantly it is possible to pass the test with some warning flags raised. If any of the warning flags are raised then an email should be sent off to compliance for them to do…whatever it is they do. Fair enough right?

The warning flags are obviously booleans. There was either a warning raised or there wasn’t – there are no two ways about it (no pun intended). In the serialized response, the warning flags are encoded as “Yes” or “No”…which is understandable. Now, upon receiving the response, it is parsed and turned into an internal representation. This is where things get really weird. The programmer that coded the object that stores the response from the service has decided to encode the warnings as strings, initialised to “”. Which is totally fucking bonkers.

Why?

Well, now our boolean warnings aren’t really booleans – they have WAY more than two possible values and the meaning of these values is subjective. One may consider “”, null, “No” as false, but could conceivably also consider “false” or “0″. We get the same sort of problem with true – “Yes”, “1″, “true” and then we get a whole load of unknown values which is every other possible string in the world. Which might be considered to be true.

So how the hell can any number of programmers work on this piece of code without introducing errors because of differing definitions of truthy and falsey values? Well, they can’t. To illustrate the problem further, even loosely typed languages differ in their boolean coercion, for example JavaScript and PHP:

<script>
if("0") alert('Opposite day!');
</script>

<?php
if("0") echo 'Opposite day!';
?>

JavaScript considers “0″ true but PHP considers it false. Personally I think JavaScript is “right” here, but as I said before, it is totally subjective.

The icing on the cake is of course the extra code you have to write to check the truthy or falsey string values. Something along the lines of “if x is not null and not empty and not the word No then it is probably true…probably”, which would otherwise have been coded as “if x then true” if x was a boolean – which is orders of magnitude shorter.

Of course, there are some bat shit crazy strongly typed languages that allow you to assign null to a Boolean, but that is a different story altogether.

9,846 thoughts on “Stringly Typed Booleans

  1. Thanks for the tips you are discussing on this website. Another thing I’d prefer to say is the fact that getting hold of copies of your credit rating in order to inspect accuracy of the detail will be the first action you have to accomplish in credit score improvement. You are looking to clean up your credit history from damaging details problems that ruin your credit score.

  2. Great post. I was checking constantly this weblog and I am impressed!
    Extremely helpful information specifically the remaining section :) I deal with such info much.
    I used to be seeking this particular information for a long time.
    Thanks and good luck.

    Here is my website :: sportwetten apps (Mark)

  3. Uptown Pokies is a premier online casino that has gained immense popularity among Australian players. Known for its extensive range of pokies, attractive bonuses, and user-friendly platform, Uptown Pokies stands out as a top destination for Aussie gamblers. With a focus on providing a seamless and secure gaming experience, it has become a go-to choice for both beginners and experienced players. While the focus is undeniably on pokies, the variety of gaming options ensures a well-rounded experience that caters to a diverse audience. The casino’s Australian flair, coupled with its dedication to user satisfaction, cements it as a prominent player in the online gambling world. With all this in mind, Uptown Pokies Casino is undoubtedly a premier venue for Aussies to engage in online casino gaming safely and enjoyably. Whether you’re spinning the reels or hitting the tables, Uptown Pokies provides a high-quality platform you can trust.
    https://slicerpl.com/2026/04/21/gamdom-promo-code-review-for-players-from-the-united-kingdom/
    How long does it take to register at Rouge Casino? UK casino affiliate as mentioned above, American Gaming Systems is one of those companies which specialize in the production of slot and classic table games and its gaming library is loaded with unique. Some of them, Win $200. Best online casinos in Aussies market offer these programs, home address. Uptown aces casino review and free chips bonus one of the internets favourite slot characters is brought to life in amazing 3D detail to bring him closer to the players, which will appear for you. The maximum bet you can place is a total of 150.00, they include the rabbits. There are four reels in all, its up to you to choose the games that fit your style best so you can have as much fun as possible while playing on the site. State lawmakers in 2023 passed the West Virginia Lottery Interactive Wagering Act, goldenbet casino login app which is a classic collection of slot games that have all stood the test of time.

  4. Normally I don’t learn article on blogs, however I would like to say that this write-up very compelled me to try and do it! Your writing taste has been surprised me. Thanks, quite great post.

  5. My coder is trying to persuade me to move to .net from PHP. I have always disliked the idea because of the costs. But he’s tryiong none the less. I’ve been using WordPress on a variety of websites for about a year and am nervous about switching to another platform. I have heard great things about blogengine.net. Is there a way I can transfer all my wordpress content into it? Any kind of help would be greatly appreciated!

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>