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.
Soft Wildflower Curations – The site is easy to use and ordering items feels effortless.
recommended progress link – Motivates readers to maintain consistent progress each day.
Willow Forge Hub – Felt confident browsing, items are carefully selected and easy to explore.
focus-driven page – Shows that attention to key tasks sustains forward motion efficiently.
Signal Hub – Pleasantly organized, content is clear and exploring pages is easy.
Wild Branch Picks – Inspiring visuals and interactive features encourage exploration and learning.
polished progress hub – Motivating design encourages intentional, consistent action toward objectives.
Sunrift Selection – Well-picked items with fair pricing make browsing enjoyable.
progress route hub – Guides users to take actionable steps that build lasting forward momentum.
Bond Link – User-friendly navigation, clear headings, and browsing is effortless.
Starfall Online Shop – The products show attention to detail and a well-curated selection.
recommended action link – Clean design reinforces the importance of direction for effective outcomes.
Energy Clarity – Clear and smooth experience, site makes information easy to access.
Wild Fern Goods – Boutique aesthetic and careful curation make browsing feel personal.
forward-thinking lab – Encourages moving deliberately while keeping objectives in sight.
growth through focus – Reminds readers that intentional focus turns ideas into practical achievements.
Sunspire Retail – Carefully chosen items and tasteful display create a refined shopping feel.
well-structured planning page – Helps maintain consistent advancement through clear direction.
clarityguidesexecution.click – The site’s layout is clean and makes understanding ideas straightforward.
Momentum Focus – Enjoyable experience, pages are readable and advice is easy to apply.
ideasflowforward.click – Creative approach that makes generating ideas and planning feel effortless.
progressive traction tips – Encourages smart planning and steady action to achieve lasting results.
Wild Grain Retail – Interactive and inspiring design makes exploring new ideas easy.
Sunweave Hub – Exploring the store was easy, and the design looks thoughtful and consistent.
check this resource – Highlights the value of clarifying ideas prior to execution.
straightforward guidance site – Layout promotes actionable steps and consistent progress toward objectives.
growth navigation – Highlights signals as useful tools for navigating growth.
forward action plan – Clean layout that supports the motivating message.
dynamic results hub – Encourages attention to core principles to drive meaningful progress.
visit this guidance hub – Well-structured content encourages continuous movement and focus.
clarityfirstaction.click – Clear and simple advice, encourages prioritizing clarity before taking any steps.
growth and focus path – Encourages combining clear priorities with action for measurable growth.
mask challenge updates – Informative and concise, site highlights safety measures clearly.
buildmomentumwisely.click – Useful advice, emphasizes planning thoughtfully to gain steady momentum.
Whollywood Halloween Bash – Energetic and festive, tickets and event details are easy to locate.
Pure Value Outlet – Well-organized content, browsing feels smooth and inspiring today.
growth boost click – Quick, clear content that inspires action.
Join Let Them Play – Informative pages, site makes participation simple and approachable.
visit this action hub – Inspiring concept encourages turning plans into practical actions.
progress essentials – Reminds that focus is a core ingredient of steady progress.
Berserker Zone – Engaging and fast-paced, users can find info quickly and easily.
Campaign with Regina – Well-structured pages, communicates campaign goals naturally.
Pepplish Spot – Colorful interface, browsing and finding information is quick and enjoyable.