Gnarly Learnings from December 2022
Published: 2022-12-30 22:18:31

We love reading, watching, and listening in order to keep our skills sharp and our perspectives fresh. Here are some of the resources we learned from this month.


## [OWASP Top Ten](https://owasp.org/www-project-top-ten/)

It's important to stay sharp when it comes to online security. The Open Web Application Security Project, or OWASP, is a non-profit organization dedicated to keeping the world informed about security threats on the web and how to protect against them. This top ten list, which many of you will be familiar with, is a good place to start.


## [Modern CSV](https://www.moderncsv.com)

Many of the projects we work on involve parsing and generating CSVs. Excel is a powerful piece of software, but is often more than we need. Plus, it's a bit of a hassle always exporting .xlsx to .csv. Modern CSV is an alternative we recently discovered, explicitly made for reading and writing CSV. There is a full version for purchase, but we found we can also get significant mileage with the free version. 


## [ActiveRecord::Store](https://www.honeybadger.io/blog/rails-activerecord-store)

If you’re like us, you continue to be surprised and delighted by Rails despite decades of combined experience in the industry. There’s always more to explore under the hood, such as `ActiveRecord::Store. `This article provides a tour of the `store` (for serialization) and `store_accessor` (for reading and writing) methods and how they can be used to persist structured data (e.g. JSON or YAML)  in relational databases. You aren’t likely to use these on a daily basis but in the event that you need to work with data and/or data structures that are changeable and unknowable, you may be able to dust them off and impress your friends with your awesome obscure Rails knowledge.


## [Shopify/Job-Iteration](https://github.com/Shopify/job-iteration)

Wouldn’t it be great if we could have more control over our background jobs? To be able to pause and resume jobs, and to have a bookmark that tracks the progress a job has made? Yeah, it would be, and the folks at Shopify thought so too. This API has been in use in their production systems since 2017 and is their response to infrastructure-related issues that impact long-running jobs, such as worker restarts and interruptions due to frequent deploys. Neat stuff!


## [Crystal for Rubyists](https://www.crystalforrubyists.com/)

In my experience, one of the most helpful tools for learning a new programming language is the ability to make comparisons between what’s familiar and what isn’t. As a Rubyist learning a new language I might ask myself, “_How would I write this in Ruby?_”. This guide makes it really simple to answer that question for folks who know Ruby and are interested in learning [Crystal](https://crystal-lang.org/). And boy howdy, would I love to have one of these for all the languages out there!


## [JavaScript’s Intl.Segmenter](https://www.stefanjudis.com/today-i-learned/how-to-split-javascript-strings-with-intl-segmenter/)

There are tons of folks all over the world that write code in their native languages. We know that we can use string manipulation functions and regular expressions to split up and manage strings in English, but would we know how to do it if they were expressed in Mandarin? Probably not, but JavaScript’s `Intl.Segmenter` object can. MDN describes it as "enabl[ing] locale-sensitive text segmentation, enabling you to get meaningful items (graphemes, words or sentences) from a string.", unless you’re developing for Firefox. 😉 This article covers the basics of this object and provides some fun examples using emojis.


## Contributors:



* [Ethan Fertsch](https://github.com/efertsch)
* [Taylor Kearns](https://github.com/taylorkearns)

_Learn more about how The Gnar [builds software](https://www.thegnar.com/software-development)._