<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="http://www.aavina.com/feed.xml" rel="self" type="application/atom+xml" /><link href="http://www.aavina.com/" rel="alternate" type="text/html" /><updated>2026-04-05T13:24:12-05:00</updated><id>http://www.aavina.com/feed.xml</id><title type="html">Anthony Avina</title><subtitle>Books, technology, video games, boardgames, movies, and more!</subtitle><entry><title type="html">Haiku 0</title><link href="http://www.aavina.com/2023/05/04/haiku0.html" rel="alternate" type="text/html" title="Haiku 0" /><published>2023-05-04T09:49:00-05:00</published><updated>2023-05-04T09:49:00-05:00</updated><id>http://www.aavina.com/2023/05/04/haiku0</id><content type="html" xml:base="http://www.aavina.com/2023/05/04/haiku0.html"><![CDATA[<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>When one is joyful
Uplifting the dog, ensue
The despondency
</code></pre></div></div>
<p><img src="/assets/haiku0/haiku0.jpg" alt="Anthony holding Cora" /></p>]]></content><author><name></name></author><summary type="html"><![CDATA[When one is joyful Uplifting the dog, ensue The despondency]]></summary></entry><entry><title type="html">PubG Battle Retro</title><link href="http://www.aavina.com/2023/04/26/pubg-play.html" rel="alternate" type="text/html" title="PubG Battle Retro" /><published>2023-04-26T23:24:00-05:00</published><updated>2023-04-26T23:24:00-05:00</updated><id>http://www.aavina.com/2023/04/26/pubg-play</id><content type="html" xml:base="http://www.aavina.com/2023/04/26/pubg-play.html"><![CDATA[<h2 id="written-account">Written Account</h2>
<ol>
  <li>Ant sniped a base camp, took down B1 who shot a flare prior</li>
  <li>Ant sniped B2</li>
  <li>Mo &amp; Will assaulted camp, took down B3 + B4</li>
  <li>Team A took tank to mountain</li>
  <li>Mo hopped out of tank, provided sniper fire</li>
  <li>Will + Ant ran over C1 with tank</li>
  <li>Will took down C2 with SMG</li>
  <li>Mo took down C3 with sniper fire</li>
  <li>D1 downed by someone?</li>
  <li>Will or Mo took down D2?</li>
  <li>Will and Mo go down</li>
  <li>Ant picks up coup</li>
  <li>Ant rams D3 with coup</li>
  <li>Ant jumps to 2nd seat in coup, SMGs C4</li>
  <li>Ant barrel rolls coup, jumps out, recovers and applies adrenaline</li>
  <li>Ant cooks and nades D4</li>
  <li>Chicken Dinner</li>
</ol>

<h2 id="event-chart">Event Chart</h2>
<p>Shows when player was taken down based on above Written Account. Based on four 4-player teams for 16 total.</p>

<table>
  <thead>
    <tr>
      <th> </th>
      <th>A</th>
      <th>B</th>
      <th>C</th>
      <th>D</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>_</td>
      <td>1</td>
      <td>6</td>
      <td>9</td>
    </tr>
    <tr>
      <td>2</td>
      <td>11</td>
      <td>2</td>
      <td>7</td>
      <td>10</td>
    </tr>
    <tr>
      <td>3</td>
      <td>11</td>
      <td>3</td>
      <td>8</td>
      <td>13</td>
    </tr>
    <tr>
      <td>4</td>
      <td>x</td>
      <td>3</td>
      <td>14</td>
      <td>16</td>
    </tr>
  </tbody>
</table>

<h2 id="frag-chart">Frag Chart</h2>
<p>Shows who took down who. Based on four 4-player teams for 16 total.</p>

<table>
  <thead>
    <tr>
      <th> </th>
      <th>A</th>
      <th>B</th>
      <th>C</th>
      <th>D</th>
    </tr>
  </thead>
  <tbody>
    <tr>
      <td>1</td>
      <td>Ant</td>
      <td>A1</td>
      <td>A1+A2</td>
      <td>A2</td>
    </tr>
    <tr>
      <td>2</td>
      <td>Will</td>
      <td>A1</td>
      <td>A2</td>
      <td>A2 or A3?</td>
    </tr>
    <tr>
      <td>3</td>
      <td>Mo</td>
      <td>A2</td>
      <td>A3</td>
      <td>A1</td>
    </tr>
    <tr>
      <td>4</td>
      <td>x</td>
      <td>A3</td>
      <td>A1</td>
      <td>A1</td>
    </tr>
  </tbody>
</table>]]></content><author><name></name></author><summary type="html"><![CDATA[Written Account Ant sniped a base camp, took down B1 who shot a flare prior Ant sniped B2 Mo &amp; Will assaulted camp, took down B3 + B4 Team A took tank to mountain Mo hopped out of tank, provided sniper fire Will + Ant ran over C1 with tank Will took down C2 with SMG Mo took down C3 with sniper fire D1 downed by someone? Will or Mo took down D2? Will and Mo go down Ant picks up coup Ant rams D3 with coup Ant jumps to 2nd seat in coup, SMGs C4 Ant barrel rolls coup, jumps out, recovers and applies adrenaline Ant cooks and nades D4 Chicken Dinner]]></summary></entry><entry><title type="html">Replacing a Macbook Pro 2013 Battery</title><link href="http://www.aavina.com/2020/12/26/replacing-a.html" rel="alternate" type="text/html" title="Replacing a Macbook Pro 2013 Battery" /><published>2020-12-26T00:00:00-06:00</published><updated>2020-12-26T00:00:00-06:00</updated><id>http://www.aavina.com/2020/12/26/replacing-a</id><content type="html" xml:base="http://www.aavina.com/2020/12/26/replacing-a.html"><![CDATA[<p><img src="/assets/mbp_replace_battery/mbp_oldbattery.jpg" alt="Macbook Pro 2013 internals, left speaker removed" /></p>

<p>For a few months to a year I’ve noticed my Macbook Pro 2013 (13 inch), I’ll be using “MBP” from now on for convenience, not sitting right when in use. It turns out the lithium ion battery was enlarging over time due to use or some fault. I stopped using it for awhile because of it and instead handled some of my other computers instead.</p>

<p>This Winter I finally bit the bullet and decided to order a <a href="https://www.ifixit.com/Guide/MacBook+Pro+13-Inch+Retina+Display+Late+2013+Battery+Replacement/27316" target="_blank">new battery kit plus back screws from iFixit</a>. I used their products before for this other MBP 2010 (13 inch) that I had whose battery just wasn’t holding charge anymore. The huge difference between the batteries of both computers made me push off this task until now.</p>

<p>On the MBP 2010, you simply had to unscrew the backplate and you would have access to the hard drive, battery, and RAM chips, making it very easy to DIY your repairs. No adhesives involved or soldering.</p>

<p><img src="/assets/mbp_replace_battery/ifixit_mbp2010.jpg" alt="Macbook Pro 2013 internals, left speaker removed" /></p>

<p>In contrast the MBP 2013 has the battery glued on and the repairer has to unhook or remove a few components to even get to it. In iFixit’s rating, the MBP 2010 batter repair score is a “Easy” while the MBP 2013 is a “Hard” and I totally agree. That being said, I’ve thankfully repaired a few things in my day already it didn’t turn out to be too bad.</p>

<p><img src="/assets/mbp_replace_battery/mbp_screws.jpg" alt="Macbook Pro 2013 internals, left speaker removed" /></p>

<p>I also had this magnetized white board from iFixit (I know, I think I’m obsessed) to hold the screws and also write notes on. You can see how it didn’t end up being too many layers of screws to get through.</p>

<p><img src="/assets/mbp_replace_battery/mbp_batteryremoved.jpg" alt="Macbook Pro 2013 internals, left speaker removed" /></p>

<p>The hardest part was using the adhesive remover on the battery in order to melt out the glue. For each cell, I had to use a few drops and wait 2-3 minutes for it to take effect. I also had to prop the laptop up a at times in an incline so that the remover slides under the battery. I managed to do it without damaging anything like the track pad or keyboard. I also put in a bit more work to get rid of the leftover glue strips.</p>

<p><img src="/assets/mbp_replace_battery/mbp_complete.jpg" alt="Macbook Pro 2013 internals, left speaker removed" /></p>

<p>I wore an n95 mask throughout the process in case the battery exploded while in the spare bedroom with a window open and fan ready. I actually read more on how to handle lithium ion batteries and it’s best to have a bucket of sand or at least water nearby, and be outside. Since it was around 10 degrees out, I opted to be inside. In hindsight I should have probably sent it to a certified shop and let them handle it to be safe.</p>

<p>I’m happy I finished it with no incidents and I dropped off the old battery at a nearby Best Buy since they can handle e-waste. Apple really needs to curb their efforts in making their products anti-repairer. If I buy another Apple computer in the future I’d opt in for a Mac Mini since it has no battery. But for now, I can at least rely on this repaired laptop for any iOS/macOS related development.</p>

<p>Happy Holidays and be safe.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">Counting to 1023 by hand</title><link href="http://www.aavina.com/2020/10/11/counting-to.html" rel="alternate" type="text/html" title="Counting to 1023 by hand" /><published>2020-10-11T01:00:00-05:00</published><updated>2020-10-11T01:00:00-05:00</updated><id>http://www.aavina.com/2020/10/11/counting-to</id><content type="html" xml:base="http://www.aavina.com/2020/10/11/counting-to.html"><![CDATA[<p>It’s been awhile since my last post so I thought I’d go over something fun. We’re going to go over how to count to 1023 by hand using the binary system!</p>

<h3 id="decimal-or-base-10-system">Decimal, or Base 10 System</h3>

<p>First, let’s go over the common number system we use in our day-to-day lives: the base-10 system.</p>

<p>Let’s study the number 1023 considering we’ll be counting to it later. The base this number is based on is 10 and we can break it down further to make this more apparent. Let’s replace all the digits in the number like so: abcd and break down what this number actually means.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>1023
----
abcd

a: 10^3 = 1000 * 1
b: 10^2 = 100  * 0
c: 10^1 = 10   * 2
d: 10^0 = 1    * 3
--------------------
a + b + c + d = 1023
</code></pre></div></div>

<p>The 10 that you see in the lefthand side after the colon is our current base. We figure out what that place stands for by the positioning it has and use that numbered place as a exponent, then we multiply by the number that is there. Note that for a given digit, a number from 0-9 can be used and that’s it. We then add all the products up and get the number it stands for. This might seem unproductive but the teardown should serve as a reminder of how the common decimal system works and will help as a scaffold to learning binary and any other base number system!</p>

<h3 id="binary-or-base-2-system">Binary, or Base-2, System</h3>

<p>Now, let’s look at a binary representation of 1023:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>0b1111111111
</code></pre></div></div>

<p>The “0b” stands as a preamble to tell the reader the number they’re about to read is a binary number (Side note: “0d” is what you can use to show a base-10 number). It’s optional for the most part but helps to be explicit to the reader otherwise they may read the 1’s as a base-10 number. Another way to represent the binary number is to break it into groups of 4 digits and pad the left with 0’s, this makes it easier for a human reader to calculate it. I’ve added letters at the bottom to help calculate as well.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>0011 1111 1111
---- ---- ----
abcd efgh ijkl

a: 2^11 = 2048 * 0 = 0
b: 2^10 = 1024 * 0 = 0
c: 2^9  = 512  * 1 = 512
d: 2^8  = 256  * 1 = 256
e: 2^7  = 128  * 1 = 128
f: 2^6  = 64   * 1 = 64
g: 2^5  = 32   * 1 = 32
h: 2^4  = 16   * 1 = 16
i: 2^3  = 8    * 1 = 8
j: 2^2  = 4    * 1 = 4
k: 2^1  = 2    * 1 = 2
l: 2^0  = 1    * 1 = 1
------------------
a + b + ... + k + l = 1023
</code></pre></div></div>

<p>We simply replaced the “10” base with “2” instead. You can see that a certain digit can only be either a 1 or a 0 now instead of 0-9. The digit can also be used as a switch that decides whether we add the given weight or not (0 = don’t add, 1 = add)</p>

<p>We then sum up all the weights and get our number: 1023 By the way, a shortcut to calculating this: Since we have all the 1’s in a row we can look at the first 0 before the left-most 1, determine it’s weight (b is 1024 in this case) and simply subtract 1 from it to get the overall value. Likewise, adding 1 to the binary 1023 will make all the current 1 digits switch to 0 and then switch b’s place to a 1 to represent 1024.</p>

<h3 id="counting-binary-by-hand">Counting binary by hand</h3>

<p>Now, let’s apply what we learned to counting by hand. In base-10, we tend to use each finger (or digit if you will) on our hand to have a weight of 1 only, which is inefficent since we can only count from 0-10. We tend to keep track of where we’re at in our head and recycle use of our fingers to continue adding by 1. I’m sure there are other more efficient finger counting processes but I won’t go over them.</p>

<p>Hold your hands palms up towards you. Let’s map each finger to a digit in binary:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>0011 1111 1111
---- ---- ----
abcd efgh ijkl

a: 2^11 = 2048 (no finger here)
b: 2^10 = 1024 (no finger here)
c: 2^9  = 512  (left hand thumb) 
d: 2^8  = 256  (left hand index) 
e: 2^7  = 128  (left hand middle) 
f: 2^6  = 64   (left hand ring) 
g: 2^5  = 32   (left hand pinky)
h: 2^4  = 16   (right hand pinky) 
i: 2^3  = 8    (right hand ring) 
j: 2^2  = 4    (right hand middle) 
k: 2^1  = 2    (right hand index) 
l: 2^0  = 1    (right hand thumb) 
</code></pre></div></div>

<p>Now I’ll show you how progression of counting with your fingers work. You simply count up from the right to left. When you see a 1, you hold that finger up to represent that it’s “on”. A finger that’s down is “off” and is a 0. I’ll show the base-10 value as well via 0d delimiter to assist.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>00 0000 0000 = 0d0
-- ---- ----
cd efgh ijkl

00 0000 0001 = 0d1
-- ---- ----
cd efgh ijkl

00 0000 0010 = 0d2
-- ---- ----
cd efgh ijkl

00 0000 0011 = 0d3
-- ---- ----
cd efgh ijkl

00 0000 0100 = 0d4
-- ---- ----
cd efgh ijkl

.
.
.
(let's jump to 0d16 which is your left hand pinky)

00 0001 0000 = 0d16
-- ---- ----
cd efgh ijkl

00 0001 0001 = 0d17
-- ---- ----
cd efgh ijkl

00 0001 0010 = 0d18
-- ---- ----
cd efgh ijkl

.
.
.
(finally jump to 0d1020 which is everything but right thumb and index)

11 1111 1100 = 0d1020
-- ---- ----
cd efgh ijkl

11 1111 1101 = 0d1021
-- ---- ----
cd efgh ijkl

11 1111 1110 = 0d1022
-- ---- ----
cd efgh ijkl

11 1111 1111 = 0d1023
-- ---- ----
cd efgh ijkl


c: 2^9  = 512  (left hand thumb) 
d: 2^8  = 256  (left hand index) 
e: 2^7  = 128  (left hand middle) 
f: 2^6  = 64   (left hand ring) 
g: 2^5  = 32   (left hand pinky)
h: 2^4  = 16   (right hand pinky) 
i: 2^3  = 8    (right hand ring) 
j: 2^2  = 4    (right hand middle) 
k: 2^1  = 2    (right hand index) 
l: 2^0  = 1    (right hand thumb) 
</code></pre></div></div>

<p>What’s nice about this system of counting is you don’t have to cache any number in your head. As long as you don’t move your fingers they can serve as a snapshot to where you’re at in your counting.</p>

<h3 id="the-most-you-can-count-to-in-binary">The most you can count to in binary</h3>

<p>To figure out the max value you can count to with a given number of binary digits, use this simple formula:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>(a^n)-1
</code></pre></div></div>

<p>Where a is 2 for the binary system and n is the number of binary digits you can work with. So, since a typical human has 10 fingers the formula yields: (2^10)-1 = (1024)-1 = 1023</p>

<p>For decimal, a is 10 and n is however many digits you’re working with.</p>

<h3 id="other-bases">Other Bases</h3>

<p>You can create a base system with any number. Another popular one for programmers is hexadecimal, delimited with “0x”. The base for it is 16 It’s useful for programmers because one hexadecimal digit can hold four binary digit’s worth of value. It does this by counting not just from 0-9 but adds abcdef as values as well where a represents 10, and f is 15. Here are some example hexadecimal values where we show the hex representation, binary, then decimal.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>0xbc
0b1011 1100
0d188 = (128 + 0 + 32 + 16) + (8 + 4 + 0 + 0)
-----------
0x9f
0b1001 1111
0d159 = (128 + 0 + 0 + 16) + (8 + 4 + 2 + 1)
</code></pre></div></div>

<p>For the decimal representation, I broke down each binary digit’s value to show how I came up with the calculation. Also, you can see how each digit in hexadecimal maps to a cluster of 4 binary digits (for 0xbc, b = 0b1011 and c = 0b1100)</p>

<p>Another fun tid bit: In binary, if the first digit (right most) is a 1 then it’s odd! Otherwise a 0 denotes an even number. How convenient :D</p>

<p>Congrats, now you can count like a computer. Happy counting!</p>]]></content><author><name></name></author><summary type="html"><![CDATA[It’s been awhile since my last post so I thought I’d go over something fun. We’re going to go over how to count to 1023 by hand using the binary system!]]></summary></entry><entry><title type="html">Password Managers</title><link href="http://www.aavina.com/2020/08/15/password-managers.html" rel="alternate" type="text/html" title="Password Managers" /><published>2020-08-15T01:00:00-05:00</published><updated>2020-08-15T01:00:00-05:00</updated><id>http://www.aavina.com/2020/08/15/password-managers</id><content type="html" xml:base="http://www.aavina.com/2020/08/15/password-managers.html"><![CDATA[<p>You wake up to a constant chiming from your phone. It annoys enough to wake you on an early morning of a day off.</p>

<p>Who can be reaching out to you so early? Is it one of your group texts? Is it work? You pick up the phone and start the morning routine.</p>

<p>You see a myriad of text and email notifications about various accounts. All related, whether you notice at the moment or not, to two common things. An email and a password. The dreaded day has come.</p>

<h3 id="the-lazy-issue">The Lazy Issue</h3>

<p>dangCoolPass44! dangCoolPass45! dangCoolPass50!</p>

<p>Are these familiar? Maybe similar to a password used at work where they require a biweekly or monthly update of passwords but laziness kicks in after the first 3 months and a workaround is found by incrementing a digit.</p>

<p>We tend to reuse passwords because we can only devote so much time and bandwidth to the chore of remembering them. We may just break down, rotate between four or five passwords at a time, and hope for the best. It’s natural to consolidate laborious tasks to make our lives easier.</p>

<p>What if I told you there’s a better way to manage your passwords that doesn’t require remembering them all? Stick with me, we’ll get through this.</p>

<h3 id="todays-security-environment">Today’s Security Environment</h3>

<p>Every service in today’s Internet connected world is (usually) based around two things: an email and a password. It’s a typical method because most Internet users have or can create the pair, it’s simple to implement an account recovery flow, password resets, etc. But it has at least one con: it places the burden of managing passwords on the user.</p>

<p>There are other ways for services to handle accounts but most require action and knowledge of the end user to pick up. There’s a constant tug-o-war between ease of use and security. So, for now, we’re stuck with passwords and I dream of the day when we no longer depend on them.</p>

<h3 id="password-setups">Password Setups</h3>

<p>Here’s an example of an average user’s password collection where P[n] is a password and A[n] is an account:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>      P1
  /    |   \  \
A1     A2  A3  A4
------------------
      P2
  /    |   \  \
A5     A6  A7  A8
</code></pre></div></div>

<p>This is a one-to-many relationship between a given password and associated accounts. When a password gets compromised (or “hacked”), you end up in a situation like so, where an “x” delimits a need to reset the password.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>      P1
  /    |   \  \
A1     A2  A3  A4
------------------
      P2
   /   |  \  \
  x    x   x  x
A5     A6  A7  A8
</code></pre></div></div>

<p>This person now has to reset passwords for accounts A5 through A8.</p>

<p>An ideal setup is as follows, where each password is only tied to one account, a one-to-one relationship:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>P1  P2  P3  P4  P5  P6  
|   |   |   |   |   | ...
|   |   |   |   x   |   
A1  A2  A3  A4  A5  A6  
</code></pre></div></div>

<p>As you can see, only when P5 was compromised, the owner just had to reset the A5 account. But, dang, that’s a ton of passwords to remember!</p>

<p>The easiest situation, but least secure, is to use one password for all accounts:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>              P1
  /     /  /   |   \   \  ...
A1     A2  A3  A4  A5  A6
</code></pre></div></div>
<p>The great thing is that you CAN have this setup while also having it be secure! It’ll look something like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>          PM
/    /   |  |   \   \
P1  P2  P3  P4  P5  P6  
|   |   |   |   |   |  ...
|   |   |   |   |   |   
A1  A2  A3  A4  A5  A6  
</code></pre></div></div>

<p>The PM here is a Password Manager and I’m about to preach it up.</p>

<h3 id="one-manager-to-rule-them-all">One Manager To Rule Them All</h3>

<p>A password manager is specialized software for handling one thing: Passwords. And it does it extremely well.</p>

<p>It can store passwords, generate new ones, remember the history of any changes for a given account, store notes, URLs, and more. This data is stored in a secure fashion so only you can access it. They tend to have clients that work on smart phones, desktops, and at the least web browsers .All you have to do is remember one password to access the password manager.</p>

<p>Now, it sounds like this is an “all eggs in one basket” situation and you’d have a worse situation if your password manager account got compromised. I have one answer to that though I won’t go into detail in this blog post: Two Factor Authentication (2FA). Enable it on whichever password manager you pick and use it! I also highly encourage you to enable it on any account you deem is important (email, banks, etc.) As for the one password you use, I recommend the <a href="https://xkcd.com/936/" target="_blank">multi-word approach</a> as it tends to be more secure and easier to remember. Just don’t forget to setup that 2FA!</p>

<p>Next, I’m only going to go over two accounts, both of which reside in different types of implementations. The two types are cloud based service and the other a local database.</p>

<h3 id="type-1-cloud-based">Type 1: Cloud Based</h3>

<p>A Cloud based service is the most common and has the highest ease of use. A company or some entity manages the service and often make money by having businesses pay them for support and/or sharing of passwords within them. A service often has a free tier that individuals can use with a restriction of not being able to share passwords with other users.</p>

<p>The “cloud” comes in with the server based storage and syncing of your passwords between all your devices. When you connect to the service through a client application it’ll fetch the cloud-based (let’s call it “remote”) copy of your passwords and determine whether your local or remote is the latest. The service usually has an automatic and/or manual way to deal with conflicts, but if you’re the only one accessing the password store you shouldn’t see this often.</p>

<p>Signing up tends to be as simple as any other service: you just need an email and a password. Remember, this pair of credentials is the key to all the others in the long run, so keep it secure but accessible. And enable 2FA!</p>

<p>These services commonly have a web-based client to connect to and reliable while you have an Internet connection. There are also native clients applications that live on smart phones and desktops. I highly recommend downloading these native clients on personal devices and logging in as they act as local copies even when your Internet connection goes down.</p>

<p>My current preference to this type is <a href="https://bitwarden.com/" target="_blank">Bitwarden</a> as it’s a great mash up of open source, ease to use, and a company devoted to transparency and trust. In actuality, Bitwarden is a mix of the two types we go over in this post (cloud + local database) since you can still access local copies of your passwords when off-line, but it’s easier to consume it as cloud based. I primarily use it for my work accounts since I prefer a more hands on approach to personal passwords, which we’ll go into next.</p>

<h3 id="type-2-local-database">Type 2: Local Database</h3>

<p>A local database type of password manager relies on a pair of things: An encrypted database file and an application that can read, write, decrypt, and encrypt it at will of the owner. There’s not usually an Internet or company dependency here besides fetching the applications to access the database file. It instead relies on volunteers of open source code contributors to maintain the applications and is created with decades-hardened of cryptography technology. There are solutions that are maintained by a company as well if that’s desired.</p>

<p>Once you have the application, you can create a database file and start loading/generating passwords into it. The database file is usually locked via a password but based on the application you can use biometrics, a USB dongle, whatever is supported! You can also enable 2FA on it and while I suggest it here as well, because you will be maintaining the file you can just make sure 2FA is on whatever syncing process you’ll be utilizing.</p>

<p>Side note: When downloading these native applications, it’s important to consider their integrity via methods like SHA-1 hashing which I won’t go into here. But feel free to hit me up about it or wait for a possible blog post.</p>

<p>This type, however, ultimately relies on the user to maintain their database file. Think of this as a manual transmission car compared to an automatic. Instead of having a service back up and store the passwords for you, you’ll have to take it upon yourself to do it.</p>

<p>Some easy ways to backup this file is to utilize a service you’re already using, such as Google Drive, Dropbox, or NextCloud. Just remember to have 2FA enabled on the service you use as that’s the point of access to your password database.</p>

<p>My personal choice for Local Database PMs is <a href="https://keepassxc.org/" target="_blank">KeepassXC</a> for desktop (Windows/MacOS/Linux) and <a href="https://play.google.com/store/apps/details?id=keepass2android.keepass2android&amp;hl=en_US" target="_blank">Keepass2Android</a> for my Android phone. There are iOS equivalents but I’m not familiar with any at the moment. You can search for “keepass” and do some research to find one. These are based on the original application called <a href="https://keepass.info/" target="_blank">KeePass Password Safe</a> which was only made for Windows.</p>

<h3 id="gradual-transition">Gradual Transition</h3>

<p>I’m going to end this post with suggestions on adapting to using a password manager. Some people like to get everything done at once but it’s important to realize that you may have countless of accounts and this could take awhile to get done with! Instead, I suggest a method of transitioning as you access your accounts. I also suggest starting with less important accounts so that you get used to the new process and if something goes wrong it’ll be less nerve wrecking to fix. Remember that most accounts have a way to recover them so don’t be afraid. Newly created accounts are also a good target.</p>

<p>The next time you access your bank account update your password to use a generated and stored one from your password manager (and enable 2FA if not already!) Amazon shopping? Update the password. Eventually, you’ll have encompassed most of the accounts that matter and sooner or later after that you’ll build it into your routine for everything.</p>

<p>Happy password managing!</p>]]></content><author><name></name></author><summary type="html"><![CDATA[You wake up to a constant chiming from your phone. It annoys enough to wake you on an early morning of a day off.]]></summary></entry><entry><title type="html">Thanks, Grant</title><link href="http://www.aavina.com/2020/07/19/thanks-grant.html" rel="alternate" type="text/html" title="Thanks, Grant" /><published>2020-07-19T01:00:00-05:00</published><updated>2020-07-19T01:00:00-05:00</updated><id>http://www.aavina.com/2020/07/19/thanks-grant</id><content type="html" xml:base="http://www.aavina.com/2020/07/19/thanks-grant.html"><![CDATA[<p>Grant Imahara passed away last Monday, July 19th 2020. I knew him best from the hit show Mythbusters in which I’d watch either at a friend’s house, since I didn’t have cable growing up, or at school on days where we had a sub for physics class.</p>

<p>I have a fond memory of Grant coming to U of I’s Engineering Open House back in 2009. I didn’t get to secure a ticket to see him but I do remember a crowd gathering around him outside sometime. I believe a friend at the time was a head organizer for the events and he was ecstatic to secure Grant as a participant.</p>

<p>As a tribute, I decided to finally break open a pHAT I bought for Raspberry Pis and upgrade the one I’ve been utilizing. A pHAT is a hardware component add-on and stands for (pi?) Hardware Attached on Top. It usually requires no soldering to attach to the Raspberry Pi and is thus easily removable/installable. This one, however, does require soldering to put together at first.</p>

<p>Here’s my setup:</p>

<ul>
  <li>Raspberry Pi 1 B+ in Pimoroni orange case</li>
  <li>Micro Dot pHAT - Green, includes 6 LED matrices 5x7 pixels + decimal points, and 40 pin header</li>
  <li>Soldering station (not seen)</li>
  <li>Pliers</li>
</ul>

<p><img src="/assets/thanks_grant/pre_pi.jpg" alt="login screen" /></p>

<p>After I (poorly) soldered on the LED matrices, I taped on the 40-pin connector to start soldering that on. Thanks Pimoroni for the tip!</p>

<p><img src="/assets/thanks_grant/pi_tape.jpg" alt="login screen" /></p>

<p>Once finished, I attached it to the Pi and eagerly assembled the case back on.</p>

<p><img src="/assets/thanks_grant/pi_secure.jpg" alt="login screen" /></p>

<p>I booted up the pi, followed the tutorial for how to program the pHAT, and got LEDs to turn on! Oops, one of the rows of pixels wasn’t on, though. See the 6th matrix of LEDs, 3rd row from the bottom.</p>

<p><img src="/assets/thanks_grant/pi_broken.jpg" alt="login screen" /></p>

<p>I probably should have tested it first before assembling the case back on!</p>

<p>I hit up Pimoroni’s Discord channel and posted my issue. Someone got back to me and gave feedback on my soldering job on the afflicted matrix, saying the joins probably weren’t complete. Again, I haven’t soldered in awhile so my skills were rusty.</p>

<p>I opened up the case again, took off the pHAT, fired up my soldering iron once again, and redid the joins on the matrix that had the issue.</p>

<p><img src="/assets/thanks_grant/pi_fix.jpg" alt="login screen" /></p>

<p>I tested it to make sure the once-broken pixels turned on, and they did! I assembled everything back togather and now have a sweet attachment to the Pi that’s on my desk.</p>

<p>Thank you for the inspiration and hard work, Grant. We’ll all miss you.</p>

<p><img src="/assets/thanks_grant/thanks.gif" alt="login screen" /></p>]]></content><author><name></name></author><summary type="html"><![CDATA[Grant Imahara passed away last Monday, July 19th 2020. I knew him best from the hit show Mythbusters in which I’d watch either at a friend’s house, since I didn’t have cable growing up, or at school on days where we had a sub for physics class.]]></summary></entry><entry><title type="html">The Catalyst of The Last Picture Show</title><link href="http://www.aavina.com/2020/07/06/the-catalyst-of-the-last.html" rel="alternate" type="text/html" title="The Catalyst of The Last Picture Show" /><published>2020-07-06T01:00:00-05:00</published><updated>2020-07-06T01:00:00-05:00</updated><id>http://www.aavina.com/2020/07/06/the-catalyst-of-the-last</id><content type="html" xml:base="http://www.aavina.com/2020/07/06/the-catalyst-of-the-last.html"><![CDATA[<p>Having just finished Larry McMurtry’s Thalia Trilogy I wanted to reflect back on what got me started on it in the first place some months ago as it’s a unique story to me.</p>

<p>There are various intersections in my hobbies of reading literature and watching films and this was certainly one of them. What made this occurrence different was how I was coming out of a fever dream of watching the <a href="https://www.criterion.com/films/28661-dekalog" target="_blank">Criterion compilation</a> of Dekalog films lent to me by a good friend and was craving more. Around this time I had received a newsletter email from Criterion about new films they were showing through their Channel service. One film caught my eye: The Last Picture Show.</p>

<p>The image that caught my attention was of a young Jeff Bridges, an actor I’ve only known from his modern renaissance of movies like The Big Lebowski and Tron: Legacy.</p>

<p><img src="/assets/last_picture_show/jeff_bridges_last_picture_show.png" alt="Young Jeff Bridges and Timothy Bottoms in The Last Picture Show" target="_blank" /></p>

<p>I read more about the film only to learn it was based on the third novel of author Larry McMurtry’s Thalia Trilogy. The trio of books center around a small town called Thalia which <a href="https://en.wikipedia.org/wiki/Thalia,_Texas" target="_blank">happens to be a real town</a> though McMurtry’s writing is more inspired by his personal experience in Archer City, Texas.</p>

<p>The first two books, Horseman, Pass By and Leaving Cheyenne, heavily involve cowboy main characters whose jobs center around farms in the region of Thalia, making me realize these may have been the first books I’ve read with that backdrop, and were intriguing considering my suburban upbringing. The third book, in which this blog post partly has a namesake of, turns out to be more familiar including senior high schoolers dealing with adult issues while their small town is figuratively falling apart around them.</p>

<p>While I’ve finished the novel I have yet to watch the movie for The Last Picture Show, and Criterion’s showing seemed to have been temporary. I’ll have to track it down one of these days to finally see it.</p>

<p>I highly recommend <a href="https://bookshop.org/books/thalia-a-texas-trilogy/9781631493751" target="_blank">the trilogy</a> to anyone and am grateful to McMurtry for these fantastic novels. I’ll be queuing more of his work for future reading!</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Having just finished Larry McMurtry’s Thalia Trilogy I wanted to reflect back on what got me started on it in the first place some months ago as it’s a unique story to me.]]></summary></entry><entry><title type="html">Simple Habanero Salsa Recipe</title><link href="http://www.aavina.com/2020/06/27/simple-habanero-salsa-recipe.html" rel="alternate" type="text/html" title="Simple Habanero Salsa Recipe" /><published>2020-06-27T01:00:00-05:00</published><updated>2020-06-27T01:00:00-05:00</updated><id>http://www.aavina.com/2020/06/27/simple-habanero-salsa-recipe</id><content type="html" xml:base="http://www.aavina.com/2020/06/27/simple-habanero-salsa-recipe.html"><![CDATA[<p><img src="/assets/simple_habanero/habanero_tacos.jpg" alt="Tacos with onion and habanero salsa" /></p>

<h3 id="ingredients">Ingredients</h3>
<p>For (N) tomatoes you have, you’ll want about (N - 1) habanero peppers.</p>

<ul>
  <li>4 Habanero Peppers</li>
  <li>5 Small Tomatoes</li>
  <li>~1 or less Tablespoon of Salt</li>
</ul>

<h3 id="useful-equipment">Useful Equipment</h3>
<ul>
  <li>Pot with Lid</li>
  <li>Blender</li>
</ul>

<h3 id="steps">Steps</h3>

<ol>
  <li>Add water to the pot, enough to not overflow when you put the peppers and tomatoes inside, then heat to boil</li>
  <li>De-stem the tomatoes. You can leave them on the peppers for now</li>
  <li>Once the water is boiling throw in the tomatoes and peppers</li>
  <li>Boil for 5 minutes</li>
  <li>Remove the tomatoes and peppers from the water or just drain the pot with them in</li>
  <li>De-stem the peppers</li>
  <li>Throw tomatoes and habaneros into a blender</li>
  <li>Sprinkle in the salt. You can start less than a tablespoon and always add more later to taste.</li>
  <li>~~~~ Blend ~~~~</li>
  <li>Leave to cool</li>
  <li>Can store in fridge when ready</li>
  <li>Enjoy</li>
</ol>

<h3 id="photos-and-more">Photos and More</h3>
<p><img src="/assets/simple_habanero/habanero_pot.png" alt="Pot filled with water, habanero peppers, and tomatoes" /></p>

<p>After eating some great homemade habanero salsa in Father’s Day weekend I made a goal of the incoming week to learn how to make this. My mom indulged me on the complicated recipe and I fell in love with it after putting it on wraps, eating it with tortilla chips, etc.</p>

<p>This should be a great base to work off of if you want to add some variation due to it’s simplicity.
Habanero salsa in blender with wrap. And dog on bottom left.</p>

<p><img src="/assets/simple_habanero/habanero_wrap.jpg" alt="wrap" /></p>

<p>Enjoy!</p>]]></content><author><name></name></author><summary type="html"><![CDATA[]]></summary></entry><entry><title type="html">Encryption with Keys.pub</title><link href="http://www.aavina.com/2020/06/07/encryption-with-keys-pub.html" rel="alternate" type="text/html" title="Encryption with Keys.pub" /><published>2020-06-07T01:00:00-05:00</published><updated>2020-06-07T01:00:00-05:00</updated><id>http://www.aavina.com/2020/06/07/encryption-with-keys-pub</id><content type="html" xml:base="http://www.aavina.com/2020/06/07/encryption-with-keys-pub.html"><![CDATA[<h2 id="disclaimer-keyspub-has-not-been-audited-as-of-june-7th-2020-for-its-cryptographic-robustness-so-use-it-at-your-own-risk-i-recommend-testing-it-with-unimportant-documentsmessages"><strong>Disclaimer:</strong> Keys.pub has not been audited as of June 7th 2020 for it’s cryptographic robustness so use it at your own risk. I recommend testing it with unimportant documents/messages.</h2>
<p>Cryptography is all around us in the Internet. The process of fetching this blog page uses the HTTPS protocol which incorporates <a href="https://en.wikipedia.org/wiki/Transport_Layer_Security#Security" target="_blank">Transport Layer Security</a> (TLS, formerly SSL), whose algorithm includes key exchanges between your browser and the server this blog is hosted on.</p>

<p>We’ll be going over <a href="https://keys.pub/#install" target="_blank">Keys.pub</a>, software that is striving to make the creation and usability of cryptographic keys as user friendly as possible. It borrows many ideas and technologies from <a href="https://keybase.io/" target="_blank">Keybase.io</a>, which is a small company that was recently bought by the video conferencing software company, Zoom, in order to improve its cryptography implementations.</p>

<p>Due to the uncertain future of Keybase.io, I ran across the Keys.pub project and believe it’ll one day be a worthy successor to Keybase.io</p>

<h3 id="scenario">Scenario</h3>
<p>Let’s say Barret wants to send a message, [m], to Tifa.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>(B)arret [m] 
|
|
|
(T)ifa
</code></pre></div></div>

<p>The problem is that Barret wants to send it without anyone else reading it since it’s a secret. Barret and Tifa both decide to try out the application Keys.pub They install the software on their computers. The first thing it asks Barret is to create a password. This password is to unlock the Keys.pub application and access his <strong>keychain</strong>.</p>

<p><img src="/assets/encryption_with_keys_pub/barret_0.png" alt="login screen" /></p>

<p>The keychain is what will hold Barret’s public/private key(s), which he’ll generate next, as well as other functionality within the Keys.pub app. He’ll have to type this in for every new session.</p>

<h3 id="key-generation">Key Generation</h3>

<p><img src="/assets/encryption_with_keys_pub/barret_1.png" alt="Key generation choice screen" />
After creating the password (or by clicking “New” in keys sub-menu), the app will prompt to generate a key. Since Barret would like to sign and encrypt messages/payloads, he sticks with the default choice and clicks “Generate”.</p>

<p><img src="/assets/encryption_with_keys_pub/barret_2.png" alt="Key created" /></p>

<p>Barret gets a confirmation screen with his public key displaying on it. It’s also added in the “keys” sub-menu and is bold to show he has the private key.</p>

<p><img src="/assets/encryption_with_keys_pub/barret_3.png" alt="Options to link public key" /></p>

<p>The app gives him the choice to publish/link the key. This is one of the main features of Keys.pub, which allows others to search for your key via Keys.pub or through one of the supported sites. Associating your public key to these sites/services serves as proof that you’re in control of them. For example, you can see mine here for my website.</p>

<p>For now, Barret chooses to skip this by pressing “later”.</p>

<p><img src="/assets/encryption_with_keys_pub/barret_4.png" alt="Barret's public key" /></p>

<p>He clicks on his new public key within the “keys” sub-menu and notes down the public key, kex1amzy67az40ymunr8aguguz5209ujmhaqc4dacmezw8lf4tkcmz3srhnprf, to give to Tifa later.</p>

<h3 id="key-exchange">Key Exchange</h3>

<p>Both Tifa and Barret are good to exchange keys.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>(B) [m]
b_priv_k (****)
b_pub_k (kex1a...)
|
|
|
(T)
t_priv_k (****)
t_pub_k (kex13...)
</code></pre></div></div>
<p>They exchange their public keys remotely or in-person to ensure integrity of the keys. Their private keys should never be shared with anyone.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>(B) [m]
b_priv_k (****)
b_pub_k (kex1a...)
t_pub_k (kex13...)
|
|
|
(T)
t_priv_k (****)
t_pub_k (kex13...)
b_pub_k (kex1a...)
</code></pre></div></div>
<p>Both Barret and Tifa add the public keys manually to their Keys.pub client applications. Note that they could have also fetched it from other avenues if they published them, such as <a href="https://aavina.com/keyspub.txt" target="_blank">my website example</a>.</p>

<p><img src="/assets/encryption_with_keys_pub/barret_5.png" alt="Barret adding Tifa's public key" /></p>

<h3 id="message-encryption-and-decryption">Message Encryption and Decryption</h3>
<p>Going back to Barret and Tifa’s situation: Barret goes to the Tools-&gt;Encrypt option, selects Tifa’s public key address as the “To” field, selects his key in the “Signed by” so that she knows it’s him (otherwise it’s anonymous), plugs in the message [m] as the payload, and the app automatically encrypts it as he types. If a file was chosen, the encrypted file would output in the same directory as the original.</p>

<p><img src="/assets/encryption_with_keys_pub/barret_6.png" alt="Barret encrypting his message to Tifa" /></p>

<p>Barret sends this encrypted message [em] over to Tifa through any remote channel considering it’s encrypted and should be safe from tampering.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>(B) [m] -&gt; [em]
b_priv_k (****)
b_pub_k (kex1a...)
t_pub_k (kex13...)
|
|
|
(T) [em]
t_priv_k (****)
t_pub_k (kex13...)
b_pub_k (kex1a...)
</code></pre></div></div>

<p><img src="/assets/encryption_with_keys_pub/tifa_1.png" alt="Tifa decrypting Barret's message" /></p>

<p>Tifa then types in the message from her Keys.pub application within the “Decrypt” sub-menu option, and she sees the plaintext message along with verification that her friend Barret sent it.</p>

<h3 id="why-use-this-at-all">Why use this at all?</h3>
<p>After all this, it may seem like a hassle to send simple encrypted messages between friends. Why not just use applications that state they do this in the first place?</p>

<p>The answer has to do with trust. How much do you trust the applications you use? Has it been audited by a third party company to validate it’s claims? Is the code open and available for it? Can you be assured 100% that the installed app you have on your phone or computer hasn’t been tampered with?</p>

<p>Using applications like Keys.pub can help get rid of the middle-man dependency on the cryptography, or at the least add an additional layer of encryption to your sent messages/files. This may not be worth the effort to go through, but imagine being in the shoes of a whistle blower or sending payloads that include sensitive data like bank routing or social security numbers.</p>

<p>Just think of it as a tool and know you have the option of using it if needed. Or just treat it like a toy technology to get a basic understanding of how a modern day marvel (key-exchange cryptography) works!</p>

<h3 id="other-features">Other features</h3>
<p>Keys.pub seems like it’s improving as time goes on, and it has some neat tricks up its sleeve, such as a <a href="https://keys.pub/docs/specs/wormhole.html" target="_blank">wormhole tunnel</a> to move files between computers. If you have questions about any of them feel free to shoot me a message and I’d be happy to walk through it with you.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Disclaimer: Keys.pub has not been audited as of June 7th 2020 for it’s cryptographic robustness so use it at your own risk. I recommend testing it with unimportant documents/messages. Cryptography is all around us in the Internet. The process of fetching this blog page uses the HTTPS protocol which incorporates Transport Layer Security (TLS, formerly SSL), whose algorithm includes key exchanges between your browser and the server this blog is hosted on.]]></summary></entry><entry><title type="html">Black Lives Matter</title><link href="http://www.aavina.com/2020/06/01/black-lives-matter.html" rel="alternate" type="text/html" title="Black Lives Matter" /><published>2020-06-01T01:00:00-05:00</published><updated>2020-06-01T01:00:00-05:00</updated><id>http://www.aavina.com/2020/06/01/black-lives-matter</id><content type="html" xml:base="http://www.aavina.com/2020/06/01/black-lives-matter.html"><![CDATA[<p>Please consider donating to the following or searching for local/national organizations:</p>

<ul>
  <li><a href="https://www.formyblock.org/" target="_blank">My Block My Hood My City</a></li>
</ul>

<p>Stay safe out there.</p>]]></content><author><name></name></author><summary type="html"><![CDATA[Please consider donating to the following or searching for local/national organizations:]]></summary></entry></feed>