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.
Exodus Alliance Resources – Informative and intuitive, site layout makes learning easy.
Kuwait-Iraq History Hub – Well-organized site, makes following historical events effortless.
forward concept guide – Simple layout and approachable presentation make reading easy.
explore this platform – Practical advice for achieving goals without unnecessary strain.
Sparxcle Studio – Creative and functional, content layout feels approachable and clear.
The Street Cafe – Warm and clear, navigating menu items is smooth and enjoyable.
Festival Hub Online – Fun and structured, site makes checking schedules simple.
polished guidance hub – Advice is clear, practical, and illustrates how focus anchors project advancement.
planning for success – Highlights that smart execution creates smooth and continuous momentum.
Supports Ros Official – Campaign info is clear, site is easy to navigate and well-presented.
Quint Tatro Creations Hub – Clean design, portfolio content is easy to navigate and understand.
etiquette guidebook – Smooth reading experience, tips are practical and understandable.
purpose-driven platform – Demonstrates that concentrated effort consistently leads to strong results.
Fearless Food RD – Excellent nutrition advice, tips are clear and easy to incorporate today.
idea driven clarity – Simple presentation with motivating, usable ideas.
Simons Cider Collection – Simple and fun, exploring products is smooth and naturally engaging.
signal momentum click – Strong focus and clear suggestions make this easy to apply.
Gin Journey – Clean and readable, content helps users understand products quickly.
initiative resource – Demonstrates that moving first often leads to valuable openings.
Discover MDC Jealous – Unique and interesting, site feels easy to navigate and read.
Creepy Celebration Hub – Layout is clean, navigating events is easy and fun.
Kim’s Commonsense Ideas – Clean and readable, navigation makes accessing information effortless.
visit this guidance hub – Thoughtful content encourages intentional choices and staying on course.
Redhill DIY Repurposing – Easy-to-read layout, encourages creativity with clear examples.
Malton Racing Portal – Clear and practical, site makes planning for the event easy.
action powered clarity – The structure helps the concepts make sense quickly.
Guitar Icons – Fantastic presentation, site navigation is intuitive and easy to follow.
Shop ML – Fast loading pages with clean design, shopping feels effortless.
TAHWLA Resources – Helpful site layout, information is presented clearly for users.
Ride Fundraiser – Smooth navigation, website makes learning about the cause simple.
alix personal hub – Friendly tone, content is clear and keeps the reader interested.
UK Asterix Films – Informative layout, film details are simple to find and enjoy.
Tampa Leadership Janet – Pages are intuitive and clean, learning about positions is easy.
purposeful action path – Easy to follow and helps organize thoughts for better decisions.
Zakk’s Knockout – Energetic site design, content flows well and keeps readers engaged.
TAHWLA Organization – Smooth navigation, site content is approachable and structured logically.
Islington Design Trail – Attractive and functional, presents events and local businesses in an intuitive way.
colossal stories – Well-organized site, makes ideas easy to understand and enjoy.
ideasigniteforward.click – Inspiring title and focus, encourages regular action and creativity.
Parenting Info Hub – Clear and approachable, navigation is smooth and content helpful.
Saratoga Train Rides – Joyful site, navigating ride details is smooth and quick.
ThirtyMale Ideas Portal – Interactive and creative, resources are simple to understand and use.
Farm Life Guide – Organized pages, content is simple and clear without being overwhelming.
Mark Mackenzie for Congress – Clear and professional, site makes campaign information easy to navigate.
hellgate100 recap – Friendly design, coverage is thorough and easy to understand.
Larkfest Photos – Vibrant images and text, layout makes browsing enjoyable and effortless.
< Kionna West Gallery – Smooth navigation, site makes viewing creative work enjoyable.
Newlywed Experiences – Site is clear and organized, exploring events feels natural and smooth.
FullumHolt Updates – Intuitive navigation, content is concise and accessible for all visitors.
FilAmericans Advocacy Hub – Well-organized and approachable, site encourages readers to get involved.