JSJ 351: Dinero.js with Sarah Dayan

JavaScript Jabber

Episode | Podcast

Date: Tue, 12 Feb 2019 11:00:00 +0000

<div class="trix-content"> <div><strong>Sponsors</strong></div><ul> <li><a href="https://www.netlify.com/">Netlify</a></li> <li> <a href="http://sentry.io">Sentry</a> use the code "devchat" for $100 credit</li> <li><a href="https://clubhouse.io/jsjabber"><strong>Clubhouse</strong></a></li> </ul><div><strong>Panel:</strong></div><ul> <li>Joe Eames</li> <li>Aimee Knight</li> <li>Chris Ferdinandi</li> <li>AJ O’Neal</li> <li>Charles Max Wood</li> </ul><div><strong>Special Guest - Sarah Dayan </strong></div><div>In this episode of JavaScript Jabber, the panelists talk to Sarah Dayan, who is a Frontend Software Engineer working for Algolia in Paris. They about the complications in handling money in software development and ask Sarah about the journey that led to the creation of Dinero.js, it’s implementation details, importance of maintaining good documentation, dealing with issues faced along the way, various features of Dinero and working with open source projects in general. Check it out!</div><div><strong>Show Topics:</strong></div><div>0.40 - Advertisement : <a href="https://www.netlify.com/">Netlify</a> </div><div>1:44 - Sarah introduces herself and Chris talks about his interest in learning more about Dinero and compliments Sarah on its great documentation.</div><div>3.10 - Sarah gives some background saying that she created and published Dinero around a year ago. She goes on to explain that the Dinero library helps in handling monetary values. It comes with several methods to parse, manipulate and format these values. The reason behind creating it is that there is no consensus on representing money in software development currently. She shares the story from her previous job where her work was to maintain legacy accounting software, and along the way they realized, that since JavaScript did not have a way to natively represent decimal values, it led to adding large numbers of rounded up numbers continuously, eventually leading to wrong computations.</div><div>6:50 - Aimee asks about ways to handle different currencies in Dinero. Sarah answers that she has followed Martin Fowler’s money pattern where two different currencies were not allowed to be worked on directly, conversion was mandatory, just like in real life.</div><div>7:50 - Charles talks about his old freelance work where he was overwhelmed while handling and representing money in software.</div><div>8:25 - Aimee enquires if Dinero can be used for both frontend and backend. Sarah replies that it can be used anywhere and explains that there is no such thing as just a number when it comes to money, there must be a currency associated with it.</div><div>9:30 - Charles asks how to figure out the direction to go to when dealing with money and to make sure that all use-cases are covered. Sarah answers that in cases such as floating-point math where the computations don’t end up being accurate as handling is not supported, numbers can be used if treated as subunits (for e.g. 100cents = 1$). However, even then, there are issues in dividing money. She then explains the procedure of “allocation” from the Fowler pattern and she says that Dinero helps in doing the same in such scenarios.</div><div>12:54 - They discuss how they did not realize how difficult it was dealing with monetary values in development. Sarah talks about the fact that there are numerous aspects involved in it, giving the example of rounding off and stating that there are even factors such as different laws in different countries that need to be considered.</div><div>16:00 - AJ asks details about crafting the library, maintaining the centralized code and covering of edge cases and using inheritance. Sarah explains the concept of domain driven development and the importance of being an expert in the respective domains. She talks about the library structure briefly, describing that is kept very simple with a module pattern and it has allowed her to manage v... Support this podcast at — https://redcircle.com/javascript-jabber/donations Advertising Inquiries: https://redcircle.com/brands Privacy & Opt-Out: https://redcircle.com/privacy