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.
official team tadros – Polished and professional, clearly outlining the team’s priorities.
coffee discovery click – Simple structure, reading about coffee is enjoyable and quick.
Whollywood Haunted Event – Thrilling layout, information about attractions is accessible and clear.
daybirdsyr portal – Clean and approachable, browsing content feels smooth and effortless.
PHL market online – Functional site, shopping experience is smooth and user-friendly.
1911 PHL Documentation – Well-laid-out content, readers can find key historical info quickly.
bennington area arts guide – Approachable and dynamic, content highlights community art projects beautifully.
structured insight page – Clear and practical guidance encourages taking time to reflect before acting.
Lux Noe Collection Hub – Elegant site, product pages are clear and navigation is effortless.
idea action blueprint – Practical concepts shared in an encouraging way.
clarencedillonpl site – Clean design, content is easy to understand and access efficiently.
BLP Awards Hub – Well-laid-out content, event info comes across clearly and professionally.
Shute Racing News – Well-organized content, site makes following races effortless.
nsfeg resources portal – Well-laid-out content with relevant updates for current users.
Pinellas SEHE Info – Smooth navigation, pages are informative without feeling overwhelming.
garymasino updates hub – Professional layout, information flows logically and makes sense for visitors.
hicks updates hub – Clear navigation, content is presented in a way that’s easy to digest.
Natasha 2026 – Smooth navigation, campaign information is accessible and well-presented.
will george writings – Well-laid-out, articles are accessible and informative for readers.
Montes Campaign – Engaging and informative, navigation flows naturally and content is clear.
FrontRoomOnline – User-friendly design with content that feels warm and engaging.
Sleep Cinema Escape – Eye-catching design, information is clear and booking steps are simple to follow.
wexfordliteraryartsfestival.com – Beautiful festival site, content is engaging and easy to explore naturally.
Democracy Roadshow Resources – Organized site, information is presented clearly and intuitively.
cateriarmccabe overview – Clear and professional, main points are highlighted for easy access.
FocusMindset – Well-organized pages present content clearly and encourage consistent focus.
play-brary main site – Creative and enjoyable, I found myself exploring longer than expected.
GrowthNavigator – Organized design makes concepts clear and accessible for all users.
south by free noms hub online – Fun and well-structured, makes attending the event seem effortless.
hair transplant turkey
Karen Platform – Well-structured pages, details are presented clearly for visitors.
electa murphy guide – Navigation is smooth, site explains priorities clearly without confusion.
Tobias Park Visit Guide – Easy to navigate, visuals are appealing and content is concise.
di bruno wine shop – Nice presentation, products are easy to find and checkout is quick.
SweetPhilly – Clear design ensures you find details without any hassle.
reader-friendly momentum hub – Modern look and feel help convey a sense of positive motion.
StrategyFocus – Simple layout supports quick understanding and usability.
stopkrasner news – Simple layout, presenting the main points in an easy-to-read manner.
Strategy Hub – Clean layout and intuitive navigation make exploring ideas effortless.
clear calm framework – The tone supports the message without distraction.
Mind Vault – Organized design makes understanding and navigating ideas effortless.
NextLevelGrowth – Well-laid-out information and concise explanations make navigation easy.
Momentum Path – Well-laid-out design keeps information accessible and easy to follow.
Momentum Path – Straightforward layout and actionable content support productive learning.
nycbhm info – Accessible and well-laid-out, makes learning about the topic simple and enjoyable.
Remi PHL Info Center – Well-structured site, content is simple to read and understand quickly.
democracy updates online – Well organized, facts are presented clearly and visitors are encouraged to act responsibly.
romain campaign info – Informative site, main goals are easy to find and understand.
ProCallSports – Organized content and simple layout make following sports easy.
Innovation Flow – Visitors can quickly understand and act on presented ideas.