<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="http://localhost:4000/feed.xml" rel="self" type="application/atom+xml" /><link href="http://localhost:4000/" rel="alternate" type="text/html" /><updated>2025-05-19T02:38:07+00:00</updated><id>http://localhost:4000/feed.xml</id><title type="html">My Personal Site</title><subtitle>This is my personal site! Here you can find information about me, my work, and some of my projects!</subtitle><entry><title type="html">We Run On Junk</title><link href="http://localhost:4000/We-Run-On-Junk" rel="alternate" type="text/html" title="We Run On Junk" /><published>2025-05-19T00:00:00+00:00</published><updated>2025-05-19T00:00:00+00:00</updated><id>http://localhost:4000/We-Run-On-Junk</id><content type="html" xml:base="http://localhost:4000/We-Run-On-Junk"><![CDATA[<p>Our world runs on garbage. Most the things “modern society” seems to require only work because most of what they process amounts to useless. Heaps amounts of time, money, &amp; capital are burned on making output that seek only to steal your time, misinform, or money by immediately falling apart.</p>

<p>Internationally shipped orders are throw away a month later, most physical mail we instantly toss unread, we see unprompted ads for things we don’t (at least at a higher level) want to buy, etc. Stuff is just produced for the slim marginally “positive” value that someone will sign up for something or get two wears out of it.</p>

<h2 id="advertising">Advertising</h2>

<p>The internet runs on advertising. Unless you’re using an ad-blocker if you’re reading an article, watching a video, or doing a web search you’re going to have ads forced across eyes without your consent.</p>

<p>They gunk up website borders, prolong watch times, and sit atop search results. You’re trying to do one thing &amp; they only serve only to try to (unwillingly) drive your attention elsewhere in the hopes you might click (accidentally or purposely) into buying something you don’t need. Best case lightning strikes and targeted advertising coincides with an actual need - but they’re almost always a net negative to user experience. Yet they’re how a good chunk of sites make most of their money, so we’re stuck in an unhappy necessity with them.</p>

<p>Unfortunately ads infect your non-internet reality as well. Drive down any US highway, take any public transit, or even already be shopping in some store and you’re going to be blasted with calls to buy even more. Existing in any urban or heavily trafficked area, some non-insignificant amount of your attention going to be subconsciously attracted towards attention seeking ads. Unfortunately you can’t use an ad-blocker to opt of physical reality (yet),</p>

<h2 id="international-shipping">International Shipping</h2>

<p>Global shipping runs on the back of massive container ships that circumnavigating the globe carrying the latest iPhones to the latest fashion (not as much US with current slate of tariffs). Yet how many of those shipments fall apart after a couples uses then end up in the landfill? From the likes of hot brands like Shein &amp; Temu dominating social media, up to even more expensive goods like the iPhone that begin to “break” after a couple years from software bloat. With how frequent some physical goods break nowadays, it just feels like a physical subscription service.</p>

<p>Countless resources are spent producing things people buy so it does seem “economically productive”. Jobs are made, goods are purchased, &amp; needs “fulfilled”. Yet their true price isn’t captured because externalities of their pollution &amp; unfair labor practices during production aren’t accounted. This easily verges on becoming a critique of over-consumption &amp; planned obsolescence, but can we really not do better than a global economic system that promotes or allows this? All this “productivity” that ends up feeling for naught.</p>

<h2 id="mail">Mail</h2>

<p>In the same vein as global shipping, most pieces of mail shipped across the US are pure garbage. Gone are the days of letters from friends or college acceptance letters, now when mailbox is yanked open you’re just met with heaps of advertisements, payment notices, and a weekly coupon pamphlet you don’t remember signing up for. Best case one of those payment notices is for something you didn’t turn on autopay for.</p>

<p>Similar point to the above section, spending so many resources on transporting items for them just to end up in the garbage just feels like pure waste. Granted this might be like the case of advertising where junk subsidizes the service enough so you can get the stuff you actually want - but could the price not be captured in a less wasteful way?</p>

<h2 id="llms">LLMs</h2>

<p>A good chunk of the above is just spam. Making the problem worse, LLMs are <em>really</em> good at making spam. How much computation has been wasted to flood social media &amp; shopping sites like Amazon or Etsy with automated, misleading ads to sell more stuff? Either cheaper ads for existing physical crap, or automating the process of digital crap like “books” or “posts” on social medial. That’s not even really touching on automated scam.</p>

<p>The cynic in me finds some compliance in the job of spam creation being automated to some degree. That this is what the “latest &amp; greatest” technology is being used for.</p>

<h2 id="whats-to-be-done">What’s To Be Done?</h2>

<p>You’re just a person, you’re not going to change the how everything works with the marginal actions of a single person. Yet opting out of the above systems as much as you also comes with some real quality-of-life improvements, consider trying:</p>

<ul>
  <li>
    <p>make everything possible e-delivery: utility bills, credit card bills, etc.</p>
  </li>
  <li>
    <p>opt out of credit card offer mail <a href="https://www.optoutprescreen.com/">here</a></p>
  </li>
  <li>
    <p>order less stuff online: wait 24 hours before you purchase, buy second hand, &amp; other general “reduce your lifestyle advice”</p>
  </li>
  <li>
    <p>ad blockers are great, but also support creators you really like through alternative methods (Patreon, Kofi, merch, etc.)!</p>
  </li>
</ul>

<h1 id="bottom-line">Bottom Line</h1>

<p>I just find it somewhat upsetting that so many resources seem to be put towards types of output like the above, just for it not to really do anything at all. It’s mostly just trashed or ignored, never really having ever existed. Yet this “junk” feels somewhat indispensable to our current economic structure either because they’ve upended most other options (shopping) or it’s the only way many stay afloat in the attention economy (websites, artists, etc.). As a business or a consumer, you’re just one part of this machine you don’t have much say in.</p>

<p>This whole post could easily continue into a greater criticism of the aforementioned economic system that incentives or requires the behaviors covered here, but others have done that before better than I could. This post is at most an observation rant trying to leave you with this question of is junk like this a “least worst” way to structure things, or are they bad systems that haven’t been upended due to the sheer weight of their societal momentum?</p>]]></content><author><name>Nate Hofmann</name></author><summary type="html"><![CDATA[Our world runs on garbage. Most the things “modern society” seems to require only work because most of what they process amounts to useless. Heaps amounts of time, money, &amp; capital are burned on making output that seek only to steal your time, misinform, or money by immediately falling apart.]]></summary></entry><entry><title type="html">Edh: 0 To 60</title><link href="http://localhost:4000/EDH-0-to-60" rel="alternate" type="text/html" title="Edh: 0 To 60" /><published>2025-04-15T00:00:00+00:00</published><updated>2025-04-15T00:00:00+00:00</updated><id>http://localhost:4000/EDH:-0-to-60</id><content type="html" xml:base="http://localhost:4000/EDH-0-to-60"><![CDATA[<p>MTG is complicated. With thousands of cards and thousands more interactions between them (both growing every year) tracking what’s even possible in the game is a fool’s errand, there’s <em>always</em> something new to see. Oh, and you’ll only start to intuitively understand the top level rules after a few dozen of games and say ~100+ hours of gameplay.</p>

<p>That’s also only considering “typical” two player formats like Extended or Standard. EDH makes that same complexity exponential. With double the players (at minimum), higher turn counts, and almost twice the typical deck size (and 4x the unique card count) the playing curve becomes radically steeper.</p>

<p>All that complexity easily turns a normal EDH game night into a migraine of state tracking, numerous extraneous actions, and “I wish we had a judge right now”. The table waits as you shuffle for the 8th time that game, someone (again) asks to redirect their removal after they remember a game changer, and someone again asks what your token represents before entering combat. I think we can do better.</p>

<p>Below are some ideas to help reduce the complexity of your decks so you can increase your speed &amp; ease of play:</p>

<h2 id="1-cut-your-tutors-including-farseek">1. Cut your tutors (including Farseek)</h2>

<p>Shuffling sucks and tutors are a main cause of this, sorry! Not even counting how repetitive they makes decks &amp; games, the 10-30 secs it takes to find a card gums up the game flow and adds to the cumulative “waiting for someone to finish” part of the game.</p>

<p>I’d say a deck should have no more then 2-4 non-land tutors per deck. At the extreme, I’d extend to gutting land tutors like fetchlands &amp; even staples like Farseek and Cultivate. Though if you’re this point, you now have the relative luxury of the top card of your library being the only card in your deck you ever interact with!</p>

<h2 id="2-the-card-you-play-is-the-card-you-get">2. The card you play is the card you get</h2>

<p>Reduce play of cards that don’t introduce additional cards or other forms of state tracking. Meaning when you play a card - you don’t get any other counters, coins, tokens, dungeons, or similar. They’re are all extremely fun game elements, but I feel like so much time is wasted with someone fumbling to increment all their dice every other turn, or reminding everyone what that one dungeon from 5 years ago does for the third time.</p>

<p>I don’t think tokens offend as often so long as someone has proper representation for them - i.e. a 1/1 Soldier token has a 1/1 Soldier token card. My gripe here comes from experiences of someone using a random assortment of face down cards or other knick-knacks to represent multiple types of different tokens - whose exact types are inevitably forgotten.</p>

<h2 id="3-keep-your-play-simple">3. Keep your play simple</h2>

<p>What EDH player doesn’t love to see the complex interactions &amp; nuances of their deck play out? Casting an intricate sequence of 17 spells per turn, layering 8 separate triggers in just the right way to get an extra 3 life, or finding a new combo from their board of 20 permanents. Unfortunately, this is durdling. All the time you spend playing your deck out on your turn is less time for the table as a whole.</p>

<p>Personally I know after a turn goes for &gt;2-3 mins, my eyes start to glaze and my attention subconsciously shifts elsewhere, and before I know it I’ve completely lost track of the board. I love my deck popping off as much as the next player, but I’d (and most other players) would rather be at table of quicker, even outright simpler, decks with 1/3 the turn time &amp; require significantly less attention to follow.</p>

<p>Not saying avoid a deck where every pieces synergies together, but maybe don’t always go right for your storm deck or your trigger happy aristocrats deck. At the very least, know your deck well enough you can clearly &amp; quickly articulate what is happening to your opponents.</p>

<h2 id="4-let-your-opponents-play-out">4. Let your opponents play out</h2>

<p>I don’t see this one often because interaction-centric control decks are already stigmatize and the average EDH deck rarely features enough interaction to cause problem, but I feel like it is worth mentioning. If 2-3 players are slowing down their play because one player always “might have removal”, that one player should lower the amount of interaction their decks has or opt for a different completely different style of deck.</p>

<p>Interaction 100% has a place in EDH- I’ll happily Murder your commander anytime. Letting it grow to the point that no one is really MTG at all is a different story. In general, I’d rather see a powerful deck play out &amp; play cleanup when needed then play grind to a halt as no one wants to suffer resource loss.</p>

<p>All though the real solution to this is more players need to learn how to navigate around interaction heavy decks.</p>

<h2 id="in-brief">In Brief</h2>

<p>These are meant to be suggestions, not an attempt to demonize any specific playstyle or aspect of the game. There’s definitely a time &amp; place for complex MTG! I’ve just observed that the enjoyment of my decks for myself &amp; others improves the more I’ve followed these rules. My decks take less mental bandwidth to pilot, my turns are quicker so more players get more\ playtime, opponents can follow my actions more easily, and overall it keeps EDH feeling fun and not like a mental chore!</p>]]></content><author><name>Nate Hofmann</name></author><summary type="html"><![CDATA[MTG is complicated. With thousands of cards and thousands more interactions between them (both growing every year) tracking what’s even possible in the game is a fool’s errand, there’s always something new to see. Oh, and you’ll only start to intuitively understand the top level rules after a few dozen of games and say ~100+ hours of gameplay.]]></summary></entry><entry><title type="html">Voronoi Relaxation Under Different Distance Metrics</title><link href="http://localhost:4000/Voronoi-Relaxation-Under-Different-Distance-Metrics" rel="alternate" type="text/html" title="Voronoi Relaxation Under Different Distance Metrics" /><published>2022-07-07T00:00:00+00:00</published><updated>2022-07-07T00:00:00+00:00</updated><id>http://localhost:4000/Voronoi-Relaxation-Under-Different-Distance-Metrics</id><content type="html" xml:base="http://localhost:4000/Voronoi-Relaxation-Under-Different-Distance-Metrics"><![CDATA[<p>This post is a series of visual demonstrations of what Voronoi relaxation looks like under varying distance functions and alternative formulations. The code behind the diagrams and relaxation algorithm are from a <a href="https://github.com/njhofmann/voronoi-generation">small and dreadfully simple C program I wrote</a>, Python was used to process and visualize the results.</p>

<p>If you have any questions, suggestions, or comments about this post, feel free to contact me via the contact info on my home page!</p>

<h2 id="background">Background</h2>

<p>(<strong>Note:</strong> this is a simplification of the proper definition of Voronoi diagrams and relaxation)</p>

<p><a href="https://en.wikipedia.org/wiki/Voronoi_diagram">Voronoi diagrams</a> are commonly introduced as a set of $n$ points $X={x_1,x_2,…,x_n}\in \mathbf{R}^k$ where each point $x_i$ is apart of some “cell” $R_j$. Each $R_j$ is said to have some “center” point $c_{R_j}$ such that every point $\in R_j$ is closer to $c_{R_j}$ than the center point of any other cell $c_{R_i}$, as measured by some <a href="https://en.wikipedia.org/wiki/Metric_(mathematics)">distance metric</a> $D$.</p>

<p>From this, we introduce <a href="https://en.wikipedia.org/wiki/Lloyd%27s_algorithm">Voronoi relaxation</a> as the process of finding Voronoi diagrams where every cell has roughly the same “area” (in this project we work with discrete points, so we define area as number of points in a cell). This is done by selecting a subset of $t$ points $c\in X$, and designating them as <strong>center points</strong>. We then iteratively repeat:</p>

<ol>
  <li>
    <p>Find the Vornoi diagram of the $t$ center points by - for each point $x_i\in X$, finding its closest center point (as defined by $D$) and adding it to that center’s cell. For example, if $x_i$ is closest to center $c_j$, we add it to the cell $R_j$. We can then define $R_j$ as the set of points whose closest center point was $c_j$.</p>
  </li>
  <li>
    <p>Next, we define a new set of $t$ center points by finding a new center for each cell $R_i$. In this project, this we define this as the cell’s <strong>centroid</strong> - or the arithmetic mean of each point $x_i\in R_j$.</p>
  </li>
</ol>

<p>These two steps are usually repeated either for a fixed number of steps, or until convergence has occured. The latter occurs when each cell is roughly the same size (as defined by the number of pixels in the cell), commonly identified when the distance between two successive centers of the same cell are less than some threshold $\tau$ (usually something like .1).</p>

<p>For a quick approximation on the running time of this algorithm, assuming points are in $k$ dimensions where each dimension is of size $d$ (each coordinate is in range $[0,d)$) that occurs for $b$ iterations - may say the running time has a rough upper bound of $O(bd^K)$. Most of this runtime comes from consturcting the Voronoi diagram point-by-point. However faster - but more complicated - algoriths such as <a href="https://en.wikipedia.org/wiki/Fortune%27s_algorithm">Fortune’s algorith</a> exist, but are beyond the scope of this project</p>

<p>For more information on the underlying algorithm from which this project is largely derived, refer to <a href="https://en.wikipedia.org/wiki/Lloyd%27s_algorithm">Lloyd’s algorithm</a>. .</p>

<h2 id="distance-functions">Distance Functions</h2>

<p>The most common distance metrics selected for $D$ are <a href="https://en.wikipedia.org/wiki/Euclidean_distance">Euclidean distance</a> and <a href="https://en.wikipedia.org/wiki/Taxicab_geometry">Manhattan distance</a>, but there also exist other distance metrics for points in $R^k$ that might be used.</p>

<p>In explaining the <a href="https://en.wikipedia.org/wiki/Metric_(mathematics)">distance metrics</a> explored in this piece below, we say $x$ and $y$ are two points in $R^k$ whose distance is being measured by distance metric $D$.</p>

<p>Many more distance functions exist, but only a few are demonstrated below in the interest of brevity and keeping the visualizations interesting (some devolve into garbage non-sense).</p>

<p>To demonstrate each distance function, we demonstate Voronoi relaxation in 2D and 3D space - as well as how those centers change position over time. For the Minowski and Yang metrics - for $p$ values of 3, 4, and 5 are demonstrated. Each cell is assigned a distinct color.</p>

<p>For 2D ($R^2$ space), GIFs show Voronoi relaxation for 100 iterations occuring on a 300x300 plane under each distance metric, starting from 32 randomly selected centers.</p>

<p>For 3D ($R^3$), images show the resulting Vornoi diagram after 100 iterations of Voronoi relaxation on a 100x100x100 space under each distance metric, starting from 32 randomly selected centers.</p>

<h3 id="euclidean"><a href="https://en.wikipedia.org/wiki/Euclidean_distance">Euclidean</a></h3>

<p>The most common distance function used with Voronoi diagrams (and in general), gives the length of the line between $x$ and $y$.</p>

<p>$$D(x,y)=\sqrt{\sum\limits_{i=1}^k (x_i-y_i)^2}$$</p>

<center><img src="assets/voronoi/euclidean/2d-euclidean-cells.gif" /></center>
<center>Euclidean in 2D</center>

<center><img src="assets/voronoi/euclidean/2d-euclidean-centers.gif" /></center>
<center>Cell centers over time in Euclidean-2D</center>

<center><img src="assets/voronoi/euclidean/3d-euclidean-cells.jpg" /></center>
<center>Euclidean in 3D</center>

<center><img src="assets/voronoi/euclidean/3d-euclidean-centers.jpg" /></center>
<center>Cell centers over time in Euclidean-3D</center>

<h3 id="manhattan"><a href="https://en.wikipedia.org/wiki/Taxicab_geometry">Manhattan</a></h3>

<p>Probably the second most common distance function “in general”, giving the sum of the absolute differences between the corresponding elements of $x$ and $y$.</p>

<p>$$D(x,y)=\sum\limits_{i=1}^k \lvert x_i-y_i \rvert$$</p>

<center><img src="assets/voronoi/manhattan/2d-manhattan-cells.gif" /></center>
<center>Manhattan in 2D</center>

<center><img src="assets/voronoi/manhattan/2d-manhattan-centers.gif" /></center>
<center>Cell centers over time in Manhattan-2D</center>

<center><img src="assets/voronoi/manhattan/3d-manhattan-cells.jpg" /></center>
<center>Manhattan in 3D</center>

<center><img src="assets/voronoi/manhattan/3d-manhattan-centers.jpg" /></center>
<center>Cell centers over time in Manhattan-3D</center>

<h3 id="bray-curtis--sorenborg"><a href="https://docs.scipy.org/doc/scipy/reference/generated/scipy.spatial.distance.braycurtis.html#scipy.spatial.distance.braycurtis">Bray-Curtis</a> / Sorenborg</h3>

<p>While technically not a distance function due to not obeying the triangle inequality, it comes from biostatistics and related fields aiming to measure the how different two “sites” (says sites of animals). are on a per-element basis. Guaranteed to be between $[0,1]$ if all elements are positive.</p>

<p>$$D(x,y)=\frac{\sum\limits_{i=1}^k \lvert x_i-y_i \rvert}{\sum\limits_{i=1}^k \lvert x_i+y_i \rvert}$$</p>

<center><img src="assets/voronoi/bray-curtis/2d-bray-curtis-cells.gif" /></center>
<center>Bray-Curtis in 2D</center>

<center><img src="assets/voronoi/bray-curtis/2d-bray-curtis-centers.gif" /></center>
<center>Cell centers over time in Bray-Curtis-2D</center>

<center><img src="assets/voronoi/bray-curtis/3d-bray-curtis-cells.jpg" /></center>
<center>Bray-Curtis in 3D</center>

<center><img src="assets/voronoi/bray-curtis/3d-bray-curtis-centers.jpg" /></center>
<center>Cell centers over time in Bray-Curtis-3D</center>

<h3 id="canberra"><a href="https://en.wikipedia.org/wiki/Canberra_distance">Canberra</a></h3>

<p>A weighted version of Manhanttan distance, where the $i$-th element is weighted by the sum of the absolute value of $x_i$ and absolute value of $y_i$.</p>

<p>$$D(x,y)=\sum\limits_{i=1}^k \frac{\lvert x_i - y_i \rvert}{\lvert x_i \rvert + \lvert y_i \rvert}$$</p>

<center><img src="assets/voronoi/canberra/2d-canberra-cells.gif" /></center>
<center>Canberra in 2D</center>

<center><img src="assets/voronoi/canberra/2d-canberra-centers.gif" /></center>
<center>Cell centers over time in Canberra-2D</center>

<center><img src="assets/voronoi/canberra/3d-canberra-cells.jpg" /></center>
<center>Canberra in 3D</center>

<center><img src="assets/voronoi/canberra/3d-canberra-centers.jpg" /></center>
<center>Cell centers over time in Canberra-3D</center>

<h3 id="chebyshev"><a href="https://en.wikipedia.org/wiki/Chebyshev_distance">Chebyshev</a></h3>

<p>Also known as the maximum metric, defines distance as the maximum distance between any two of their corresponding elements of $x$ and $y$ ($x_1$ and $y_1$, $x_2$ and $y_2$, etc.).</p>

<p>$$D(x,y)=\max\limits_i (\lvert x_i - y_i \rvert)$$</p>

<center><img src="assets/voronoi/chebyshev/2d-chebyshev-cells.gif" /></center>
<center>Chebyshev in 2D</center>

<center><img src="assets/voronoi/chebyshev/2d-chebyshev-centers.gif" /></center>
<center>Cell centers over time in Chebyshev-2D</center>

<center><img src="assets/voronoi/chebyshev/3d-chebyshev-cells.jpg" /></center>
<center>Chebyshev in 3D</center>

<center><img src="assets/voronoi/chebyshev/3d-chebyshev-centers.jpg" /></center>
<center>Cell centers over time in Chebyshev-3D</center>

<h3 id="hellinger"><a href="https://en.wikipedia.org/wiki/Hellinger_distance#Discrete_distributions">Hellinger</a></h3>

<p>Basically the Euclidean norm between the difference of the square root vectors of $x$ and $y$, more formally a version of a probability distribution similarity measure assuming $x$ and $y$ are discrete distributions.</p>

<p>$$D(x,y)=\frac{1}{\sqrt{2}}\sqrt{\sum\limits_{i=1}^k (\sqrt{x_i} - \sqrt{y_i})^2}$$</p>

<center><img src="assets/voronoi/hellinger/2d-hellinger-cells.gif" /></center>
<center>Hellinger in 2D</center>

<center><img src="assets/voronoi/hellinger/2d-hellinger-centers.gif" /></center>
<center>Cell centers over time in Hellinger-2D</center>

<center><img src="assets/voronoi/hellinger/3d-hellinger-cells.jpg" /></center>
<center>Hellinger in 3D</center>

<center><img src="assets/voronoi/hellinger/3d-hellinger-centers.jpg" /></center>
<center>Cell centers over time in Hellinger-3D</center>

<h3 id="minkowski"><a href="https://en.wikipedia.org/wiki/Minkowski_distance">Minkowski</a></h3>

<p>A generalization of the Manhattan and Euclidian distances by integer $p &gt; 0$ ($p=1$ is Manhattan distance, $p=2$ is Euclidean). Measures distances on normed vector spaces.</p>

<p>$$D(x,y)=(\sum\limits_{i=1}^k \lvert x_i - y_i\rvert^p)^\frac{1}{p}$$</p>

<h4 id="when-p3">When $p=3$</h4>

<center><img src="assets/voronoi/minkowski/2d-minkowski-cells-3.gif" /></center>
<center>Mikowski-3 in 2D</center>

<center><img src="assets/voronoi/minkowski/2d-minkowski-centers-3.gif" /></center>
<center>Cell centers over time in Mikowski-3-2D</center>

<center><img src="assets/voronoi/minkowski/3d-minkowski-cells-3.jpg" /></center>
<center>Minkowski-3 in 2D</center>

<center><img src="assets/voronoi/minkowski/3d-minkowski-centers-3.jpg" /></center>
<center>Cell centers over time in Minkowski-3-2D</center>

<h4 id="when-p4">When $p=4$</h4>

<center><img src="assets/voronoi/minkowski/2d-minkowski-cells-4.gif" /></center>
<center>Minkowski-4 in 2D</center>

<center><img src="assets/voronoi/minkowski/2d-minkowski-centers-4.gif" /></center>
<center>Cell centers over time in Minkowski-4-2D</center>

<center><img src="assets/voronoi/minkowski/3d-minkowski-cells-4.jpg" /></center>
<center>Minkowski-4 in 2D</center>

<center><img src="assets/voronoi/minkowski/3d-minkowski-centers-4.jpg" /></center>
<center>Cell centers over time in Minkowski-4-2D</center>

<h4 id="when-p5">When $p=5$</h4>

<center><img src="assets/voronoi/minkowski/2d-minkowski-cells-5.gif" /></center>
<center>Minkowski-5 in 2D</center>

<center><img src="assets/voronoi/minkowski/2d-minkowski-centers-5.gif" /></center>
<center>Cell centers over time in Minkowski-5-2D</center>

<center><img src="assets/voronoi/minkowski/3d-minkowski-cells-5.jpg" /></center>
<center>Minkowski-5 in 2D</center>

<center><img src="assets/voronoi/minkowski/3d-minkowski-centers-5.jpg" /></center>
<center>Cell centers over time in Minkowski-5-2D</center>

<h3 id="yang"><a href="https://link.springer.com/article/10.1007/s10618-019-00622-6">Yang</a></h3>

<p>A “newer” distance metric introduced for the purposes of retaining all the properties of distance metrics while being more useful than similarity measures used in high dimensional data (like cosine “distance”).</p>

<p>$$D(x,y)=((\sum\limits_{i:x_i\geq y_i} x_i - y_i)^p + (\sum\limits_{i:x_i &lt; y_i} y_i - x_i)^p)^\frac{1}{p}$$</p>

<h4 id="when-p3-1">When $p=3$</h4>

<center><img src="assets/voronoi/yang/2d-yang-cells-3.gif" /></center>
<center>Yang-3 in 2D</center>

<center><img src="assets/voronoi/yang/2d-yang-centers-3.gif" /></center>
<center>Cell centers over time in Yang-3-2D</center>

<center><img src="assets/voronoi/yang/3d-yang-cells-3.jpg" /></center>
<center>Yang-3 in 2D</center>

<center><img src="assets/voronoi/yang/3d-yang-centers-3.jpg" /></center>
<center>Cell centers over time in Yang-3-2D</center>

<h4 id="when-p4-1">When $p=4$</h4>

<center><img src="assets/voronoi/yang/2d-yang-cells-4.gif" /></center>
<center>Yang-4 in 2D</center>

<center><img src="assets/voronoi/yang/2d-yang-centers-4.gif" /></center>
<center>Cell centers over time in Yang-4-2D</center>

<center><img src="assets/voronoi/yang/3d-yang-cells-4.jpg" /></center>
<center>Yang-4 in 2D</center>

<center><img src="assets/voronoi/yang/3d-yang-centers-4.jpg" /></center>
<center>Cell centers over time in Yang-4-2D</center>

<h4 id="when-p5-1">When $p=5$</h4>

<center><img src="assets/voronoi/yang/2d-yang-cells-5.gif" /></center>
<center>Yang-5 in 2D</center>

<center><img src="assets/voronoi/yang/2d-yang-centers-5.gif" /></center>
<center>Cell centers over time in Yang-5-2D</center>

<center><img src="assets/voronoi/yang/3d-yang-cells-5.jpg" /></center>
<center>Yang-5 in 2D</center>

<center><img src="assets/voronoi/yang/3d-yang-centers-5.jpg" /></center>
<center>Cell centers over time in Yang-5-2D</center>

<h2 id="alternative-formulations">Alternative Formulations</h2>

<p>There exist many modifications to the original definitions of Voronoi diagrams and relaxation that can also lead to some interesting visual phenonena.</p>

<p>Perhaps one of the simplest modifications are <strong>k-th order</strong> Voronoi diagrams. Here instead of assigning points to cells based on their closest center, they are assigned to cells based on their 2-nd closest center, 3-rd closest, and so on ending at the $t$-th closest center (i.e. the furthest center). Formally we may also say, assigning based on the closest center (the original definition) is a <em>1-st order</em> Vorinoi diagram.</p>

<p>Below we show resulting image for each distance measure as before, under the same 2D formulation. We opt for images instead of gifs here because for $k&gt;1$, cells tend to split apart into smaller groups resulting in less visually cohesive iterations.</p>

<h3 id="1-st-order">1-st Order</h3>

<h4 id="euclidean-1">Euclidean</h4>

<center><img src="assets/voronoi/euclidean/2d-euclidean-1st-order-cells.jpg" /></center>

<h4 id="manhattan-1">Manhattan</h4>

<center><img src="assets/voronoi/manhattan/2d-manhattan-1st-order-cells.jpg" /></center>

<h4 id="bray-curtis">Bray-Curtis</h4>

<center><img src="assets/voronoi/bray-curtis/2d-bray-curtis-1st-order-cells.jpg" /></center>

<h4 id="canberra-1">Canberra</h4>

<center><img src="assets/voronoi/canberra/2d-canberra-1st-order-cells.jpg" /></center>

<h4 id="chebyshev-1">Chebyshev</h4>

<center><img src="assets/voronoi/chebyshev/2d-chebyshev-1st-order-cells.jpg" /></center>

<h4 id="hellinger-1">Hellinger</h4>

<center><img src="assets/voronoi/hellinger/2d-hellinger-1st-order-cells.jpg" /></center>

<h4 id="minkowski-1">Minkowski</h4>

<h5 id="p3">$p=3$</h5>

<center><img src="assets/voronoi/minkowski/2d-minkowski-3-1st-order-cells.jpg" /></center>

<h5 id="p4">$p=4$</h5>

<center><img src="assets/voronoi/minkowski/2d-minkowski-4-1st-order-cells.jpg" /></center>

<h5 id="p5">$p=5$</h5>

<center><img src="assets/voronoi/minkowski/2d-minkowski-5-1st-order-cells.jpg" /></center>

<h4 id="yang-1">Yang</h4>

<h5 id="p3-1">$p=3$</h5>

<center><img src="assets/voronoi/yang/2d-yang-3-1st-order-cells.jpg" /></center>

<h5 id="p4-1">$p=4$</h5>

<center><img src="assets/voronoi/yang/2d-yang-4-1st-order-cells.jpg" /></center>

<h5 id="p5-1">$p=5$</h5>

<center><img src="assets/voronoi/yang/2d-yang-5-1st-order-cells.jpg" /></center>

<h3 id="-1-st-order">-1-st Order</h3>

<p>The $-1$-order occurs when points are added to cells based on the <em>furthest</em> center point. Generally the results under any distance formula are largely the same, only 2-4 cells emerge as most points have the same “furthest center point”.</p>

<p>Due to the aforementioned similarity across distace metrics, only the Euclidean and Manhattan distances are shown.</p>

<center><img src="assets/voronoi/euclidean/2d-euclidean-furthest-cells.jpg" /></center>
<center>Furthest cells in Euclidean-2D</center>

<center><img src="assets/voronoi/manhattan/2d-manhattan-furthest-cells.jpg" /></center>
<center>Furthest cells in Manhattan-2D</center>]]></content><author><name>Nate Hofmann</name></author><summary type="html"><![CDATA[This post is a series of visual demonstrations of what Voronoi relaxation looks like under varying distance functions and alternative formulations. The code behind the diagrams and relaxation algorithm are from a small and dreadfully simple C program I wrote, Python was used to process and visualize the results.]]></summary></entry><entry><title type="html">New Grad Job Search 2021</title><link href="http://localhost:4000/New-Grad-Job-Search-2021" rel="alternate" type="text/html" title="New Grad Job Search 2021" /><published>2021-11-04T00:00:00+00:00</published><updated>2021-11-04T00:00:00+00:00</updated><id>http://localhost:4000/New-Grad-Job-Search-2021</id><content type="html" xml:base="http://localhost:4000/New-Grad-Job-Search-2021"><![CDATA[<p>As of writing this, I am in the midst of wrapping up my first full-time job search as a soon-to-be college graduate, come this spring. It’s been a long, emotionally draining, and largely monotonous process I am thrilled to see end. Despite all that however, I hope briefly recounting my experience over the past few months can give some insight to the state of new grad hiring (albeit from a single data point), and some valuable lessons learned.</p>

<h2 id="background">Background</h2>

<p>Entering the job search, I was a senior computer science major at Northeastern University with a GPA ~3.7. I had three prior internships &amp; co-ops centered mostly in back-end software engineering and machine learning research.</p>

<p>All of the organizations I worked at were large (+1k people) entities with only modest name recognition outside of their respective industries and regions (not trying to downplay how awesome they were, just giving some context).</p>

<h2 id="preparation">Preparation</h2>

<p>Preparing for the process centered mostly around technical interview prep and resume restructuring beginning around the end of May. Due to prior years of internship applications, like most I had built up a good foundation for technical interview questions needing only to brush up. I did around ~4 Leetcode-medium level questions a week for around 6 weeks, guided by the infamous <a href="https://seanprashad.com/leetcode-patterns/">Leetcode Patterns</a>. This appears to have been enough for most of the interview questions and automated assessments I received.</p>

<p>For overhauling my resume, I spent vastly too much time in proportion to how little of the interviewing process it actually makes up. During the process I completely redid my resume three times, and while each time personally gave me more confidence - after the first do over the number of callbacks I got appeared mostly constant. If I was to do it all again, I would’ve definitely solidified my resume <em>before</em> sending out any applications - if not to just have one less thing to worry about.</p>

<h2 id="applying">Applying</h2>

<p>I began applying for new grad and a few “early career” positions around the end of July going through mid-September. I mostly focused on machine learning related &amp; backend SWE roles, trying to apply to at least 3-5 places a day.</p>

<p>I generally applied in 2-3 week “waves” where I would send out  applications everyday over a couple of weeks, spend another week doing all the technical screenings I would receive. This repeated ~3-4 times before I started receiving offers. I also found this strategy helpful since it separated out the time spent filling out applications and the time spent doing technical assessments (since both take a couple of hours each time) - which can be extra tiring when doing them both at once.</p>

<h2 id="results">Results</h2>

<p>In total I applied to ~85 positions at ~75 companies, receiving ~20 technical or phone screenings (most occurred after a resume screening I assume, but some were sent to every applicant), ending in four final round interviews and three offers from Microsoft, Amazon, and Grubhub.</p>

<h2 id="thoughts">Thoughts</h2>

<h3 id="leetcode-isnt-enough">Leetcode Isn’t Enough</h3>

<p>A common quip endlessly repeated on CS related-career forums like Reddit’s /r/cscareerquestions is to “just grind Leetcode”. Despite its genericity, I think it does hold true since Leetcode-style technical assessments do appear in most technical interviews. Most important for the “automated assessments” used to filter out applicants before any interviewing begins.</p>

<p>For <em>actual</em> technical interviews, where a Leetcode-style question is answered in front of another person - I think the usefulness of this advice diminishes significantly since the purpose of the interview shifts from “solve a problem” to “<em>show</em> how you solve a problem”.</p>

<p>Since most applicants have only prepared for the latter by “grinding Leetcode”, not all will catch on to the change. The interview for them will quickly turn into 30 minutes of dead silence as one person watches another person write code. Instead, any competent interviewer usually wants to see the <em>thought process</em> behind how someone approaches solving the problem. If they wanted to see you just solve the problem, you would’ve been given another automated assessment! Even then though, sometimes the problem doesn’t even have to be solved in its entirety to pass the interview</p>

<p>So not only is it vital to know the <em>structure</em> of Leetcode questions, but also to be able to effectively explain to an interviewer items such as rationale, underlying assumptions, etc. So while preparing for technical interviews in this style is harder - habits like explaining your thoughts aloud while practicing Leetcode and even <em>just interviewing more</em> can help.</p>

<h3 id="resume-screening-after-technical-screen">Resume Screening After Technical Screen</h3>

<p>There were a few occurrences where I received a technical screen and successfully passed all the presented test cases, but then would summarily receive a rejection the following day. Since the norm as I understand it from my experience is that one receives a first round interview or phone screening <em>after</em> a passing an automated technical screening, the only explanation I can imagine is a resume screening occuring <em>after</em> the technical screening instead of vice versa as usual.</p>

<p>While this appears harmless, and perhaps I am missing something, but when I spend 1-3 hours of my time during a college semester on a technical assessment &amp; ace it, only to get a rejection email less than 24 hours later - it paints the organization to me as not repecting their applicants enough to respect their time.</p>]]></content><author><name>Nate Hofmann</name></author><summary type="html"><![CDATA[As of writing this, I am in the midst of wrapping up my first full-time job search as a soon-to-be college graduate, come this spring. It’s been a long, emotionally draining, and largely monotonous process I am thrilled to see end. Despite all that however, I hope briefly recounting my experience over the past few months can give some insight to the state of new grad hiring (albeit from a single data point), and some valuable lessons learned.]]></summary></entry><entry><title type="html">Some Interesting Tidbits About Mtg Cards</title><link href="http://localhost:4000/Some-Interesting-Tidbits-About-MTG-Cards" rel="alternate" type="text/html" title="Some Interesting Tidbits About Mtg Cards" /><published>2020-11-26T00:00:00+00:00</published><updated>2020-11-26T00:00:00+00:00</updated><id>http://localhost:4000/Some-Interesting-Tidbits-About-MTG-Cards</id><content type="html" xml:base="http://localhost:4000/Some-Interesting-Tidbits-About-MTG-Cards"><![CDATA[<p>As apart of my ever ongoing project <a href="https://github.com/njhofmann/mtg-analysis">mtg-analysis</a>, I created a small SQL database of every MTG card ever printed by drawing from the wonderful <a href="scryfall.com/docs/api">Scryfall Api</a> - tracking card information, reprints, and other basic information. Combining this with the power of some simple SQL queries allows for some basic (but interesting!) questions to be answered.</p>

<p>First some caveats, underlying assumptions, and other info:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>1. Includes cards printed up until Commander Legends.

2. Schemes, tokens, Avatars, Emblems, Planes, and other cards with "non-standard" types are not considered.  

3. All printings are considered, this may give different numbers from Scryfall's listings. 

4. For most answers, the top 5-10 results will be displayed. 

5. Cards with multiple types have each type counted separately.

6. Don't consider cards from Un-sets.

7. Double faced cards are treated as one card.
</code></pre></div></div>

<p>If you have any questions about or suggestions for this article - please reach out to me!</p>

<h2 id="overall-cards-with-the-most-reprints">Overall cards with the most reprints</h2>

<table>
  <thead>
    <tr>
      <th style="text-align: left">Card</th>
      <th style="text-align: left">Reprints</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/war/162/giant-growth">Giant Growth</a></td>
      <td style="text-align: left">46</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/jmp/132/serra-angel">Serra Angel</a></td>
      <td style="text-align: left">43</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/cmr/395/counterspell">Counterspell</a></td>
      <td style="text-align: left">41</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/cmr/372/disenchant">Disenchant</a></td>
      <td style="text-align: left">40</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/m19/314/llanowar-elves">Llanowar Elves</a></td>
      <td style="text-align: left">40</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/a25/82/dark-ritual">Dark Ritual</a></td>
      <td style="text-align: left">39</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/cmr/482/evolving-wilds">Evolving Wilds</a></td>
      <td style="text-align: left">38</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/cmr/387/swords-to-plowshares">Swords to Plowshares</a></td>
      <td style="text-align: left">35</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/ima/128/fireball">Fireball</a></td>
      <td style="text-align: left">33</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/m20/44/air-elemental">Air Elemental</a></td>
      <td style="text-align: left">32</td>
    </tr>
  </tbody>
</table>

<h2 id="artifact-cards-with-the-most-reprints">Artifact cards with the most reprints</h2>

<table>
  <thead>
    <tr>
      <th style="text-align: left">Card</th>
      <th style="text-align: left">Reprints</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/cmr/472/sol-ring">Sol Ring</a></td>
      <td style="text-align: left">31</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/cmr/328/nevinyrrals-disk">Nevinyrral’s Disk</a></td>
      <td style="text-align: left">24</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/jmp/471/juggernaut">Juggernaut</a></td>
      <td style="text-align: left">22</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/c16/257/howling-mine">Howling Mine</a></td>
      <td style="text-align: left">21</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/ori/231/jayemdae-tome">Jayemdae Tome</a></td>
      <td style="text-align: left">21</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/klr/255/ornithopter">Ornithopter</a></td>
      <td style="text-align: left">21</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/m14/217/rod-of-ruin">Rod of Ruin</a></td>
      <td style="text-align: left">20</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/2xm/267/lightning-greaves">Lightning Greaves</a></td>
      <td style="text-align: left">20</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/7ed/307/meekstone">Meekstone</a></td>
      <td style="text-align: left">17</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/uma/229/mana-vault">Mana Vault</a></td>
      <td style="text-align: left">17</td>
    </tr>
  </tbody>
</table>

<h2 id="creature-cards-with-the-most-reprints">Creature cards with the most reprints</h2>

<table>
  <thead>
    <tr>
      <th style="text-align: left">Card</th>
      <th style="text-align: left">Reprints</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/jmp/132/serra-angel">Serra Angel</a></td>
      <td style="text-align: left">43</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/m19/314/llanowar-elves">Llanowar Elves</a></td>
      <td style="text-align: left">40</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/m20/44/air-elemental">Air Elemental</a></td>
      <td style="text-align: left">32</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/m20/335/shivan-dragon">Shivan Dragon</a></td>
      <td style="text-align: left">31</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/cn2/176/birds-of-paradise">Birds of Paradise</a></td>
      <td style="text-align: left">30</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/lea/127/sengir-vampire">Sengir Vampire</a></td>
      <td style="text-align: left">29</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/m19/183/giant-spider">Giant Spider</a></td>
      <td style="text-align: left">29</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/m20/103/gravedigger">Gravedigger</a></td>
      <td style="text-align: left">27</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/uma/64/mahamoti-djinn">Mahamoti Djinn</a></td>
      <td style="text-align: left">23</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/jmp/471/juggernaut">Juggernaut</a></td>
      <td style="text-align: left">22</td>
    </tr>
  </tbody>
</table>

<h2 id="legendary-cards-with-the-most-reprints">Legendary cards with the most reprints</h2>

<table>
  <thead>
    <tr>
      <th style="text-align: left">Card</th>
      <th style="text-align: left">Reprints</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/c20/225/niv-mizzet-the-firemind">Niv-Mizzet, the Firemind</a></td>
      <td style="text-align: left">10</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/jmp/181/talrand-sky-summoner">Talrand, Sky Summoner</a></td>
      <td style="text-align: left">9</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/uma/32/reya-dawnbringer">Reya Dawnbringer</a></td>
      <td style="text-align: left">9</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/arc/61/kamahl-fist-of-krosa">Kamahl, Pit Fighter</a></td>
      <td style="text-align: left">9</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/uma/244/karakas">Karakas</a></td>
      <td style="text-align: left">8</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/plist/2/emrakul-the-aeons-torn">Emrakul, the Aeons Torn</a></td>
      <td style="text-align: left">8</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/ima/193/bladewing-the-risen">Bladewing the Risen</a></td>
      <td style="text-align: left">8</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/c17/80/arcanis-the-omnipotent">Arcanis the Omnipotent</a></td>
      <td style="text-align: left">7</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/plist/108/nezumi-graverobber-nighteyes-the-desecrator">Nezumi Graverobber // Nighteyes the Descreator</a></td>
      <td style="text-align: left">7</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/ima/144/ryusei-the-falling-star">Ryuesi, the Falling Start</a></td>
      <td style="text-align: left">7</td>
    </tr>
  </tbody>
</table>

<h2 id="enchantment-cards-with-the-most-reprints">Enchantment cards with the most reprints</h2>

<table>
  <thead>
    <tr>
      <th style="text-align: left">Card</th>
      <th style="text-align: left">Reprints</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/jmp/125/pacifism">Pacifism</a></td>
      <td style="text-align: left">31</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/9ed/11/circle-of-protection:-red">Circle of Protection: Red</a></td>
      <td style="text-align: left">24</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/ima/175/lure">Lure</a></td>
      <td style="text-align: left">22</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/dvd/47/unholy-strength">Unholy Strength</a></td>
      <td style="text-align: left">22</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/9ed/10/circle-of-protection:-black">Circle of Protection: Black</a></td>
      <td style="text-align: left">21</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/cma/34/control-magic">Control Magic</a></td>
      <td style="text-align: left">19</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/10e/290/regeneration">Regeneration</a></td>
      <td style="text-align: left">18</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/m11/16/holy-strength">Holy Strength</a></td>
      <td style="text-align: left">18</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/10e/142/fear">Fear</a></td>
      <td style="text-align: left">17</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/m12/132/firebreathing">Firebreathing</a></td>
      <td style="text-align: left">17</td>
    </tr>
  </tbody>
</table>

<h2 id="instant-cards-with-the-most-reprints">Instant cards with the most reprints</h2>

<table>
  <thead>
    <tr>
      <th style="text-align: left">Card</th>
      <th style="text-align: left">Reprints</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/war/162/giant-growth">Giant Growth</a></td>
      <td style="text-align: left">46</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/cmr/395/counterspell">Counterspell</a></td>
      <td style="text-align: left">41</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/cmr/372/disenchant">Disenchant</a></td>
      <td style="text-align: left">40</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/a25/82/dark-ritual">Dark Ritual</a></td>
      <td style="text-align: left">39</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/cmr/387/swords-to-plowshares">Swords to Plowshares</a></td>
      <td style="text-align: left">35</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/m20/78/unsummon">Unsummon</a></td>
      <td style="text-align: left">29</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/jmp/342/lightning-bolt">Lightning Bolt</a></td>
      <td style="text-align: left">29</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/m21/159/shock">Shock</a></td>
      <td style="text-align: left">26</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/rix/114/shatter">Shatter</a></td>
      <td style="text-align: left">26</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/me4/99/terror">Terror</a></td>
      <td style="text-align: left">26</td>
    </tr>
  </tbody>
</table>

<h2 id="land-cards-with-the-most-reprints">Land cards with the most reprints</h2>

<table>
  <thead>
    <tr>
      <th style="text-align: left">Card</th>
      <th style="text-align: left">Reprints</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/cmr/482/evolving-wilds">Evolving Wilds</a></td>
      <td style="text-align: left">38</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/cmr/357/terramorphic-expanse">Terramorphic Expanse</a></td>
      <td style="text-align: left">31</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/cmr/483/forgotten-cave">Forgotten Cave</a></td>
      <td style="text-align: left">20</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/cmr/491/secluded-steppe">Secluded Steppe</a></td>
      <td style="text-align: left">19</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/mma/221/city-of-brass">City of Brass</a></td>
      <td style="text-align: left">19</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/mh1/248/tranquil-thicket">Tranquil Thicket</a></td>
      <td style="text-align: left">18</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/cmr/350/command-tower">Command Tower</a></td>
      <td style="text-align: left">18</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/c19/229/barren-moor">Barren Moor</a></td>
      <td style="text-align: left">18</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/znc/140/selesnya-sanctuary">Selesnya Sanctuary</a></td>
      <td style="text-align: left">18</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/c20/319/temple-of-the-false-god">Temple of the False God</a></td>
      <td style="text-align: left">17</td>
    </tr>
  </tbody>
</table>

<h2 id="sorcery-cards-with-the-most-reprints">Sorcery cards with the most reprints</h2>

<table>
  <thead>
    <tr>
      <th style="text-align: left">Card</th>
      <th style="text-align: left">Reprints</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/ima/128/fireball">Fireball</a></td>
      <td style="text-align: left">33</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/plist/43/wrath-of-god">Wrath of God</a></td>
      <td style="text-align: left">32</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/plist/156/stone-rain">Stone Rain</a></td>
      <td style="text-align: left">29</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/m21/96/duress">Duress</a></td>
      <td style="text-align: left">27</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/a25/5/armageddon">Armageddon</a></td>
      <td style="text-align: left">27</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/cmr/432/rampant-growth">Rampant Growth</a></td>
      <td style="text-align: left">25</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/klr/101/mind-rot">Mind Rot</a></td>
      <td style="text-align: left">25</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/10e/270/hurricane">Hurricane</a></td>
      <td style="text-align: left">24</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/cm2/95/earthquake">Earthquake</a></td>
      <td style="text-align: left">24</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/w17/18/raise-dead">Raise Dead</a></td>
      <td style="text-align: left">23</td>
    </tr>
  </tbody>
</table>

<h2 id="planeswalker-cards-with-the-most-reprints">Planeswalker cards with the most reprints</h2>

<table>
  <thead>
    <tr>
      <th style="text-align: left">Card</th>
      <th style="text-align: left">Reprints</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/gvl/1/garruk-wildspeaker">Garruk Wildspeaker</a></td>
      <td style="text-align: left">8</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/jvc/1/jace-beleren">Jace Beleren</a></td>
      <td style="text-align: left">8</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/gvl/32/liliana-vess">Liliana Vess</a></td>
      <td style="text-align: left">8</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/2xm/56/jace-the-mind-sculptor">Jace, the Mind Sculptor</a></td>
      <td style="text-align: left">7</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/klr/117/chandra-torch-of-defiance">Chandra, Torch of Defiance</a></td>
      <td style="text-align: left">7</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/e01/42/chandra-pyromaster">Chandra, Pyromaster</a></td>
      <td style="text-align: left">7</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/cm2/4/daretti-scrap-savant">Daretti, Scrap Savant</a></td>
      <td style="text-align: left">6</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="hhttps://scryfall.com/card/uma/104/liliana-of-the-veil">Liliana of the Veil</a></td>
      <td style="text-align: left">6</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/akh/14/gideon-of-the-trials">Gideon of the Trials</a></td>
      <td style="text-align: left">6</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/e01/10/gideon-jura">Gideon Jura</a></td>
      <td style="text-align: left">6</td>
    </tr>
  </tbody>
</table>

<h2 id="tribes-elves-goblins-etc-with-the-most-cards">Tribes (elves, goblins, etc.) with the most cards</h2>

<p>Doesn’t consider supertypes like creature, legendary, etc.</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">Type</th>
      <th style="text-align: left">Count</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left">human</td>
      <td style="text-align: left">2529</td>
    </tr>
    <tr>
      <td style="text-align: left">warrior</td>
      <td style="text-align: left">800</td>
    </tr>
    <tr>
      <td style="text-align: left">wizard</td>
      <td style="text-align: left">791</td>
    </tr>
    <tr>
      <td style="text-align: left">soldier</td>
      <td style="text-align: left">716</td>
    </tr>
    <tr>
      <td style="text-align: left">zombie</td>
      <td style="text-align: left">513</td>
    </tr>
    <tr>
      <td style="text-align: left">elemental</td>
      <td style="text-align: left">499</td>
    </tr>
    <tr>
      <td style="text-align: left">spirit</td>
      <td style="text-align: left">488</td>
    </tr>
    <tr>
      <td style="text-align: left">cleric</td>
      <td style="text-align: left">441</td>
    </tr>
    <tr>
      <td style="text-align: left">beast</td>
      <td style="text-align: left">437</td>
    </tr>
    <tr>
      <td style="text-align: left">elf</td>
      <td style="text-align: left">429</td>
    </tr>
  </tbody>
</table>

<h2 id="secondary-tribes-elf-warriors-goblin-scouts-etc-with-the-most-cards">“Secondary” Tribes (elf warriors, goblin scouts, etc.) with the most cards</h2>

<p>Doesn’t consider supertypes like creature, legendary, etc. Only considers cards with exactly two subtypes.</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">First Type</th>
      <th style="text-align: left">Second Type</th>
      <th style="text-align: left">Count</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left">human</td>
      <td style="text-align: left">wizard</td>
      <td style="text-align: left">406</td>
    </tr>
    <tr>
      <td style="text-align: left">human</td>
      <td style="text-align: left">soldier</td>
      <td style="text-align: left">364</td>
    </tr>
    <tr>
      <td style="text-align: left">human</td>
      <td style="text-align: left">cleric</td>
      <td style="text-align: left">244</td>
    </tr>
    <tr>
      <td style="text-align: left">human</td>
      <td style="text-align: left">knight</td>
      <td style="text-align: left">193</td>
    </tr>
    <tr>
      <td style="text-align: left">human</td>
      <td style="text-align: left">warrior</td>
      <td style="text-align: left">193</td>
    </tr>
    <tr>
      <td style="text-align: left">human</td>
      <td style="text-align: left">rogue</td>
      <td style="text-align: left">113</td>
    </tr>
    <tr>
      <td style="text-align: left">human</td>
      <td style="text-align: left">shaman</td>
      <td style="text-align: left">97</td>
    </tr>
    <tr>
      <td style="text-align: left">goblin</td>
      <td style="text-align: left">warrior</td>
      <td style="text-align: left">93</td>
    </tr>
    <tr>
      <td style="text-align: left">merfolk</td>
      <td style="text-align: left">wizard</td>
      <td style="text-align: left">90</td>
    </tr>
    <tr>
      <td style="text-align: left">elf</td>
      <td style="text-align: left">druid</td>
      <td style="text-align: left">76</td>
    </tr>
  </tbody>
</table>

<h2 id="number-of-unique-cards-printed-by-color">Number of unique cards printed by color</h2>

<p><code class="language-plaintext highlighter-rouge">c</code> is for colorless cards, multicolored cards are considered twice.</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">Color</th>
      <th style="text-align: left">Count</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left">w</td>
      <td style="text-align: left">4273</td>
    </tr>
    <tr>
      <td style="text-align: left">b</td>
      <td style="text-align: left">4248</td>
    </tr>
    <tr>
      <td style="text-align: left">r</td>
      <td style="text-align: left">4208</td>
    </tr>
    <tr>
      <td style="text-align: left">u</td>
      <td style="text-align: left">4188</td>
    </tr>
    <tr>
      <td style="text-align: left">g</td>
      <td style="text-align: left">4177</td>
    </tr>
    <tr>
      <td style="text-align: left">c</td>
      <td style="text-align: left">311</td>
    </tr>
  </tbody>
</table>

<h2 id="number-of-unique-cards-printed-by-type">Number of unique cards printed by type</h2>

<p>Major types like creature, artifact, etc.</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">Type</th>
      <th style="text-align: left">Count</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left">creature</td>
      <td style="text-align: left">11593</td>
    </tr>
    <tr>
      <td style="text-align: left">enchantment</td>
      <td style="text-align: left">2599</td>
    </tr>
    <tr>
      <td style="text-align: left">instant</td>
      <td style="text-align: left">2596</td>
    </tr>
    <tr>
      <td style="text-align: left">sorcery</td>
      <td style="text-align: left">2384</td>
    </tr>
    <tr>
      <td style="text-align: left">artifact</td>
      <td style="text-align: left">2169</td>
    </tr>
    <tr>
      <td style="text-align: left">land</td>
      <td style="text-align: left">747</td>
    </tr>
    <tr>
      <td style="text-align: left">planeswalker</td>
      <td style="text-align: left">228</td>
    </tr>
  </tbody>
</table>

<h2 id="cards-with-the-most-text">Cards with the most text</h2>

<p>Does include reminder text; text for suspend, cumulative upkeep, and banding are the longest contributors.</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">card</th>
      <th style="text-align: left">Text Size</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/me2/83/dance-of-the-dead">Dance of the Dead</a></td>
      <td style="text-align: left">657</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/a25/181/master-of-the-wild-hunt">Master of the Wild Hunt</a></td>
      <td style="text-align: left">627</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/2ed/188/camouflage">Camouflage</a></td>
      <td style="text-align: left">589</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/plc/14/riftmarked-knight">Riftmarked Knight</a></td>
      <td style="text-align: left">580</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/me3/76/takklemaggot">Takklemaggot</a></td>
      <td style="text-align: left">561</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/plist/107/necromancy">Necromancy</a></td>
      <td style="text-align: left">552</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/mir/149/tombstone-stairwell">Tombstone Stairwell</a></td>
      <td style="text-align: left">543</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/me3/197/illusionary-mask">Illusionary Mask</a></td>
      <td style="text-align: left">534</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/plc/79/roiling-horror">Roiling Horror</a></td>
      <td style="text-align: left">531</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/prm/35956/nalathni-dragon">Nalathni Dragon</a></td>
      <td style="text-align: left">515</td>
    </tr>
  </tbody>
</table>

<h2 id="cards-with-the-most-subtypes">Cards with the most subtypes</h2>

<p>Only really interesting entry here is that only one creature has four subtypes. Ignorings subtypes granted by a card’s text.</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">Card</th>
      <th style="text-align: left">Number of Types</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/tor/138/setons-scout">Seton’s Scout</a></td>
      <td style="text-align: left">4</td>
    </tr>
  </tbody>
</table>

<h2 id="cards-with-the-longest-name">Cards with the longest name</h2>

<p>This does include spaces.</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">Card</th>
      <th style="text-align: left">Name Length</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/chk/280/okina-temple-to-the-grandfathers">Okina, Temple to the Grandfathers</a></td>
      <td style="text-align: left">33</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/5dn/8/circle-of-protection:-artifacts">Circle of Protection: Artifacts</a></td>
      <td style="text-align: left">31</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/klr/174/oviya-pashiri-sage-lifecrafter">Oviya Pashiri, Sage Lifecrafter</a></td>
      <td style="text-align: left">31</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/cmr/496/sunhome-fortress-of-the-legion">Sunhome, Fortress of the Legion</a></td>
      <td style="text-align: left">31</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/me3/212/the-tabernacle-at-pendrell-vale">The Tabernacle at Pendrell Vale</a></td>
      <td style="text-align: left">31</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/emn/130b/hanweir-the-writhing-township">Hanweir, the Writhing Township</a></td>
      <td style="text-align: left">30</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/tsp/163/ib-halfheart-goblin-tactician">Ib Halfheart, Goblin Tactician</a></td>
      <td style="text-align: left">30</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/thb/221/kroxa-titan-of-deaths-hunger">Kroxa, Titan of Death’s Hunger</a></td>
      <td style="text-align: left">30</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/chk/279/minamo-school-at-waters-edge">Minamo, School at Water’s Edge</a></td>
      <td style="text-align: left">30</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/cmr/42/rebbec-architect-of-ascension">Rebbec, Architect of Ascension</a></td>
      <td style="text-align: left">30</td>
    </tr>
    <tr>
      <td style="text-align: left"><a href="https://scryfall.com/card/war/275/tezzeret-master-of-the-bridge">Tezzeret, Master of the Bridge</a></td>
      <td style="text-align: left">30</td>
    </tr>
  </tbody>
</table>

<h2 id="average-converted-mana-cost-of-every-mtg-set">Average converted mana cost of every MTG set</h2>

<p>Only considering “main” sets; core releases, major expansions, major supplament sets, etc. - not promotional products, small re-releases like “From the Vault”, etc. Does consider lands.</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">Card</th>
      <th style="text-align: left">Average CMC</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left">Fifth Dawn</td>
      <td style="text-align: left">3.933</td>
    </tr>
    <tr>
      <td style="text-align: left">Scourge</td>
      <td style="text-align: left">3.9091</td>
    </tr>
    <tr>
      <td style="text-align: left">Alara Reborn</td>
      <td style="text-align: left">3.876</td>
    </tr>
    <tr>
      <td style="text-align: left">Legions</td>
      <td style="text-align: left">3.848</td>
    </tr>
    <tr>
      <td style="text-align: left">Dragon’s Maze</td>
      <td style="text-align: left">3.648</td>
    </tr>
    <tr>
      <td style="text-align: left">Prophecy</td>
      <td style="text-align: left">3.594</td>
    </tr>
    <tr>
      <td style="text-align: left">Darksteel</td>
      <td style="text-align: left">3.5576</td>
    </tr>
    <tr>
      <td style="text-align: left">New Phyrexia</td>
      <td style="text-align: left">3.517</td>
    </tr>
    <tr>
      <td style="text-align: left">Battlebond</td>
      <td style="text-align: left">3.492</td>
    </tr>
    <tr>
      <td style="text-align: left">Mirrodin Besieged</td>
      <td style="text-align: left">3.48</td>
    </tr>
  </tbody>
</table>

<h2 id="average-power-and-toughness-of-every-creature">Average power and toughness of every creature</h2>

<p>Ignoring cards with a variable power or toughness.</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">Avg Power</th>
      <th style="text-align: left">Avg Toughness</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left">2.5708</td>
      <td style="text-align: left">2.7551</td>
    </tr>
  </tbody>
</table>

<h2 id="most-common-power--toughness-pairings">Most common power &amp; toughness pairings</h2>

<table>
  <thead>
    <tr>
      <th style="text-align: left">Power</th>
      <th style="text-align: left">Toughness</th>
      <th style="text-align: left">Count</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left">2</td>
      <td style="text-align: left">2</td>
      <td style="text-align: left">1929</td>
    </tr>
    <tr>
      <td style="text-align: left">1</td>
      <td style="text-align: left">1</td>
      <td style="text-align: left">1618</td>
    </tr>
    <tr>
      <td style="text-align: left">3</td>
      <td style="text-align: left">3</td>
      <td style="text-align: left">1095</td>
    </tr>
    <tr>
      <td style="text-align: left">2</td>
      <td style="text-align: left">1</td>
      <td style="text-align: left">701</td>
    </tr>
    <tr>
      <td style="text-align: left">4</td>
      <td style="text-align: left">4</td>
      <td style="text-align: left">648</td>
    </tr>
    <tr>
      <td style="text-align: left">2</td>
      <td style="text-align: left">3</td>
      <td style="text-align: left">542</td>
    </tr>
    <tr>
      <td style="text-align: left">3</td>
      <td style="text-align: left">2</td>
      <td style="text-align: left">427</td>
    </tr>
    <tr>
      <td style="text-align: left">1</td>
      <td style="text-align: left">2</td>
      <td style="text-align: left">384</td>
    </tr>
    <tr>
      <td style="text-align: left">5</td>
      <td style="text-align: left">5</td>
      <td style="text-align: left">370</td>
    </tr>
    <tr>
      <td style="text-align: left">1</td>
      <td style="text-align: left">3</td>
      <td style="text-align: left">308</td>
    </tr>
  </tbody>
</table>

<h2 id="least-common-power--toughness-pairings">Least common power &amp; toughness pairings</h2>

<p>These all seemed worthwhile to include</p>

<table>
  <thead>
    <tr>
      <th style="text-align: left">Power</th>
      <th style="text-align: left">Toughness</th>
      <th style="text-align: left">Count</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td style="text-align: left">7</td>
      <td style="text-align: left">8</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">6</td>
      <td style="text-align: left">9</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">1</td>
      <td style="text-align: left">0</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">10</td>
      <td style="text-align: left">6</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">-1</td>
      <td style="text-align: left">-1</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">4</td>
      <td style="text-align: left">0</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">9</td>
      <td style="text-align: left">5</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">9</td>
      <td style="text-align: left">10</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">5</td>
      <td style="text-align: left">9</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">16</td>
      <td style="text-align: left">16</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">1</td>
      <td style="text-align: left">8</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">10</td>
      <td style="text-align: left">4</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">9</td>
      <td style="text-align: left">14</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">2</td>
      <td style="text-align: left">10</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">8</td>
      <td style="text-align: left">9</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">8</td>
      <td style="text-align: left">0</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">10</td>
      <td style="text-align: left">9</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">7</td>
      <td style="text-align: left">1</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">9</td>
      <td style="text-align: left">3</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">7</td>
      <td style="text-align: left">10</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">10</td>
      <td style="text-align: left">7</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">0</td>
      <td style="text-align: left">17</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">9</td>
      <td style="text-align: left">8</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">9</td>
      <td style="text-align: left">7</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">-1</td>
      <td style="text-align: left">3</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">10</td>
      <td style="text-align: left">2</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">11</td>
      <td style="text-align: left">9</td>
      <td style="text-align: left">1</td>
    </tr>
    <tr>
      <td style="text-align: left">3</td>
      <td style="text-align: left">8</td>
      <td style="text-align: left">1</td>
    </tr>
  </tbody>
</table>]]></content><author><name>Nate Hofmann</name></author><summary type="html"><![CDATA[As apart of my ever ongoing project mtg-analysis, I created a small SQL database of every MTG card ever printed by drawing from the wonderful Scryfall Api - tracking card information, reprints, and other basic information. Combining this with the power of some simple SQL queries allows for some basic (but interesting!) questions to be answered.]]></summary></entry></feed>