<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.3.3">Jekyll</generator><link href="https://blog.jez.io/feed/javascript.xml" rel="self" type="application/atom+xml" /><link href="https://blog.jez.io/" rel="alternate" type="text/html" /><updated>2026-01-21T18:17:55-05:00</updated><id>https://blog.jez.io/feed/javascript.xml</id><title type="html">Jake Zimmerman | Javascript</title><subtitle>A collection of blog posts about programming, software, types, programming languages, Sorbet, Vim, Markdown, and more.</subtitle><author><name>Jake Zimmerman</name></author><entry><title type="html">Ruby’s Conditional Send is not Safe Navigation</title><link href="https://blog.jez.io/conditional-send/" rel="alternate" type="text/html" title="Ruby’s Conditional Send is not Safe Navigation" /><published>2023-09-03T11:06:27-04:00</published><updated>2023-09-03T11:06:27-04:00</updated><id>https://blog.jez.io/conditional-send</id><author><name>Jake Zimmerman</name></author><category term="ruby" /><category term="javascript" /><category term="programming" /><summary type="html"><![CDATA[A brief explanation of why Ruby calls x&.foo "conditional send" and not "safe navigation."]]></summary></entry><entry><title type="html">Prefer .then() over .catch()</title><link href="https://blog.jez.io/prefer-then-over-catch/" rel="alternate" type="text/html" title="Prefer .then() over .catch()" /><published>2018-05-31T18:58:52-04:00</published><updated>2018-05-31T18:58:52-04:00</updated><id>https://blog.jez.io/prefer-then-over-catch</id><author><name>Jake Zimmerman</name></author><category term="flow" /><category term="fragment" /><category term="javascript" /><summary type="html"><![CDATA[When designing asynchronous APIs that could error in Flow, prefer using `.then` for both successful and failure cases. Flow exposes a relatively unsafe library definition for the `.catch` method, so it's best to avoid it if you can.]]></summary></entry><entry><title type="html">Union Types in Flow &amp;amp; Reason</title><link href="https://blog.jez.io/union-types-flow-reason/" rel="alternate" type="text/html" title="Union Types in Flow &amp;amp; Reason" /><published>2018-04-19T01:43:26-04:00</published><updated>2018-04-19T01:43:26-04:00</updated><id>https://blog.jez.io/union-types-flow-reason</id><author><name>Jake Zimmerman</name></author><category term="flow" /><category term="types" /><category term="javascript" /><category term="reasonml" /><summary type="html"><![CDATA[Union types are powerful yet often overlooked. At work, I've been using Flow which thankfully supports union types. But as I've refactored more of our code to use union types, I've noticed that our bundle size has been steadily increasing!]]></summary></entry><entry><title type="html">Case Exhaustiveness in Flow</title><link href="https://blog.jez.io/flow-exhaustiveness/" rel="alternate" type="text/html" title="Case Exhaustiveness in Flow" /><published>2018-04-15T23:02:26-04:00</published><updated>2018-04-15T23:02:26-04:00</updated><id>https://blog.jez.io/flow-exhaustiveness</id><author><name>Jake Zimmerman</name></author><category term="javascript" /><category term="types" /><category term="flow" /><category term="programming" /><summary type="html"><![CDATA[Compared to some other languages, Flow's story around exhaustiveness checking within 'if / else' and 'switch' statements leaves something to be desired. By default, Flow doesn't do any exhaustiveness checks! But we can opt-in to exhaustiveness checking one statement at a time. In this post, we'll discover from the ground up how Flow's exhaustiveness checking behaves.]]></summary></entry><entry><title type="html">Code Review from the Command Line</title><link href="https://blog.jez.io/cli-code-review/" rel="alternate" type="text/html" title="Code Review from the Command Line" /><published>2018-01-13T16:14:24-05:00</published><updated>2018-01-13T16:14:24-05:00</updated><id>https://blog.jez.io/cli-code-review</id><author><name>Jake Zimmerman</name></author><category term="bash" /><category term="git" /><category term="programming" /><category term="vim" /><category term="javascript" /><summary type="html"><![CDATA[I do the bulk of my code reviews from the command line, especially when reviewing larger changes. I've built up a number of tools and config settings that help me dig into the nuances of the code I'm reviewing, so that I can understand it better than if I were just browsing online.]]></summary></entry></feed>