<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Privacy on Nelson Figueroa</title><link>https://nelson.cloud/categories/privacy/</link><description>Recent content in Privacy on Nelson Figueroa</description><image><title>Nelson Figueroa</title><url>https://nelson.cloud/apple-touch-icon.png</url><link>https://nelson.cloud/categories/privacy/</link></image><language>en</language><lastBuildDate>Thu, 26 Mar 2026 19:18:46 -0700</lastBuildDate><atom:link href="https://nelson.cloud/categories/privacy/index.xml" rel="self" type="application/rss+xml"/><item><title>It’s 2025, Why Aren’t You Using an Ad Blocker?</title><link>https://nelson.cloud/its-2025-why-arent-you-using-an-ad-blocker/?ref=rss</link><pubDate>Sat, 10 May 2025 00:00:00 +0000</pubDate><guid>https://nelson.cloud/its-2025-why-arent-you-using-an-ad-blocker/?ref=rss</guid><description>Far too many people still don&amp;rsquo;t use ad blockers.</description><content:encoded><![CDATA[<p>I find myself asking this any time I discover that someone uses a web browser with no ad blocking solution. More specifically, it blows my mind when tech-savvy people who work in software development (and related roles) don&rsquo;t use ad blockers. I don&rsquo;t understand why.</p>
<p>The &ldquo;main&rdquo; web is a terrible experience when browsing without ad blockers.</p>
<p>If you&rsquo;re one of those people who don&rsquo;t have an ad blocker, here are some links to improve your web browsing experience.</p>
<h2 id="browser-extensions-to-block-ads">Browser Extensions to Block Ads</h2>
<p>The best and arguably only ad blocker you&rsquo;ll need for your browser is 

<a href="https://github.com/gorhill/uBlock" target="_blank" rel="noopener">uBlock Origin</a>. It has worked consistently for me on Firefox and Chrome for many, many years.</p>
<p>Here are some convenient links to get uBlock Origin:</p>
<ul>
<li>

<a href="https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/" target="_blank" rel="noopener">Get the uBlock Origin Firefox extension</a></li>
<li>

<a href="https://chromewebstore.google.com/detail/ublock-origin/cjpalhdlnbpafiamejdnhcphjbkeiagm" target="_blank" rel="noopener">Get the uBlock Origin Chrome extension</a></li>
<li>

<a href="https://microsoftedge.microsoft.com/addons/detail/ublock-origin/odfafepnkmbhccpbejgmiehpchacaeak" target="_blank" rel="noopener">Get the uBlock Origin Microsoft Edge extension</a> (if you use Edge for some reason)</li>
</ul>
<h2 id="for-safari-users">For Safari Users</h2>
<p>

<a href="https://www.apple.com/safari/" target="_blank" rel="noopener">Safari</a> has limited support for extensions. While there is some tracking protection out of the box, it doesn&rsquo;t compare to running a full blown version of uBlock Origin. If you REALLY want to keep using Safari then check out 

<a href="https://adguard.com/en/adguard-mac/overview.html" target="_blank" rel="noopener">AdGuard for Mac</a>. It blocks ads system-wide on macOS and not just in Safari.</p>
<p>If you like the Safari aesthetic but don&rsquo;t want to install AdGuard, check out 

<a href="https://orionbrowser.com/" target="_blank" rel="noopener">Orion Browser</a>. It comes with ad blocking out of the box. It&rsquo;s based on 

<a href="https://webkit.org/" target="_blank" rel="noopener">WebKit</a> just like Safari. There&rsquo;s even an iOS app available.</p>
<ul>
<li>

<a href="https://orionbrowser.com/" target="_blank" rel="noopener">Get Orion for macOS</a></li>
<li>

<a href="https://apps.apple.com/us/app/orion-browser-by-kagi/id1484498200" target="_blank" rel="noopener">Get Orion for iOS</a></li>
</ul>
<h2 id="brave-browser">Brave Browser</h2>
<p>

<a href="https://brave.com/" target="_blank" rel="noopener">Brave Browser</a> is also a great browser if you want an ad-free web experience. It&rsquo;s available on all major platforms (Windows, Android, Linux, macOS, iOS) and it comes with ad blocking built in. I hesitate a bit to recommend Brave because it comes with some optional 

<a href="https://brave.com/brave-rewards/" target="_blank" rel="noopener">crypto bullshit</a> called 

<a href="https://basicattentiontoken.org/" target="_blank" rel="noopener">Basic Attention Token</a>, but you don&rsquo;t have to opt into that.</p>
<ul>
<li>

<a href="https://brave.com/download/" target="_blank" rel="noopener">Get Brave Browser</a></li>
</ul>
<h2 id="start-browsing-the-web-with-ad-blockers">Start Browsing the Web with Ad Blockers</h2>
<p>There are many options for blocking ads regardless of the device you&rsquo;re using. Start browsing the web with an ad blocker and you&rsquo;ll never go back to browsing the normal ad-infested web.</p>
]]></content:encoded></item><item><title>Leaving Proton Mail</title><link>https://nelson.cloud/leaving-proton-mail/?ref=rss</link><pubDate>Tue, 26 Nov 2024 00:00:00 +0000</pubDate><guid>https://nelson.cloud/leaving-proton-mail/?ref=rss</guid><description>Reasons why I won&amp;rsquo;t renew my Proton subscription.</description><content:encoded><![CDATA[<p>I&rsquo;ve been a 

<a href="https://proton.me/" target="_blank" rel="noopener">Proton</a> subscriber for around 2 years now. I won&rsquo;t be renewing my subscription for several reasons.</p>
<p>Overall, I just don&rsquo;t think Proton is focused as a company and their core offerings are lacking even after years of customers providing feedback. I mainly subscribed for 

<a href="https://proton.me/mail" target="_blank" rel="noopener">Proton Mail</a> to be able to use a custom domain. I&rsquo;m also trying really hard to 

<a href="https://en.wikipedia.org/wiki/DeGoogle" target="_blank" rel="noopener">de-Google</a> my life. Proton seemed like the obvious choice to introduce more privacy in my life.</p>
<p>Over the years Proton Mail has not improved very much. It&rsquo;s still very slow and has UI bugs.</p>
<p>A common UI bug I run into is that emails don&rsquo;t render properly in dark mode. The text in my emails will be white along with the background, making the emails unreadable. 

<a href="https://www.reddit.com/r/ProtonMail/comments/1gwxt2t/another_email_in_dark_mode_that_cant_be_read_ios/" target="_blank" rel="noopener">Here is a Reddit post</a> where a user runs into this very issue.</p>
<p>In regards to speed, I don&rsquo;t expect Proton Mail to be blazing fast since there is end-to-end encryption, but I thought I would see a few speed improvements after a few years. That has not been the case.</p>
<p>Proton also released a 

<a href="https://proton.me/support/mail-desktop-app" target="_blank" rel="noopener">Proton Mail desktop app</a> that is as slow and buggy as the website. This is because it&rsquo;s an 

<a href="https://www.electronjs.org/" target="_blank" rel="noopener">Electron</a> app. When it was released I installed it, used it for around 10 minutes, then deleted it. It offers no benefit over the Proton site itself.</p>
<p>Instead of focusing on optimizations and bug fixes, Proton rolled out 

<a href="https://proton.me/blog/proton-scribe-writing-assistant" target="_blank" rel="noopener">Scribe</a>. It&rsquo;s basically an AI assistant for emails. This is the wrong area to focus on, in my opinion. Also, it feels like Proton is just following the current trend of tacking on 

<a href="https://en.wikipedia.org/wiki/Large_language_model" target="_blank" rel="noopener">LLMs</a> into every product.</p>
<p>Aside from mail, 

<a href="https://proton.me/calendar" target="_blank" rel="noopener">Proton Calendar</a>, 

<a href="https://proton.me/drive" target="_blank" rel="noopener">Proton Drive</a>, and 

<a href="https://protonvpn.com/" target="_blank" rel="noopener">Proton VPN</a> were also services I was interested in. With the exception of Proton Drive, I found these services to also be lacking. Proton Calendar was barebones for a calendar and I don&rsquo;t trust it to use professionally. I still use Google Calendar for scheduling important meetings. Proton VPN gets the job done, but it is not as customizable as 

<a href="https://mullvad.net/en" target="_blank" rel="noopener">Mullvad VPN</a>. In my case, I like being able to choose the protocol and port to use when connecting to a VPN. Mullvad VPN lets me do that. Proton VPN does not.</p>
<p>Finally, Proton released 

<a href="https://proton.me/blog/proton-wallet-launch" target="_blank" rel="noopener">Proton Wallet</a>. This came out of the blue. I do not understand why they would work on this service when their other offerings need more work. There was a lot of 

<a href="https://www.reddit.com/r/ProtonMail/comments/1eayqs4/proton_wallet_early_access/" target="_blank" rel="noopener">community backlash on Reddit</a> when they announced it. Here&rsquo;s 

<a href="https://www.reddit.com/r/ProtonMail/comments/1ebfjp4/proton_wallet_is_unexpected/" target="_blank" rel="noopener">some more feedback</a> that overall represents my sentiments.</p>
<p>This post is meant as honest feedback. Proton has a 

<a href="https://proton.me/about" target="_blank" rel="noopener">respectable mission</a> that resonates with me. I wish Proton well and I hope I can return some day. I sincerely mean that.</p>
<h2 id="further-reading">Further Reading</h2>
<ul>
<li>

<a href="https://dbushell.com/2026/01/22/proton-spam/" target="_blank" rel="noopener">Proton Spam and the AI Consent Problem</a></li>
</ul>
<blockquote><p><strong>2025-01-28 Update:</strong></p><p>I was recently made aware about 

<a href="https://proton.me/blog/author/andy-yen" target="_blank" rel="noopener">Proton CEO Andy Yen</a>&rsquo;s comments regarding the 

<a href="https://en.wikipedia.org/wiki/2024_United_States_presidential_election" target="_blank" rel="noopener">incoming USA administration</a>. Do with this information what you will.</p>
<ul>
<li>

<a href="https://theintercept.com/2025/01/28/proton-mail-andy-yen-trump-republicans/" target="_blank" rel="noopener">https://theintercept.com/2025/01/28/proton-mail-andy-yen-trump-republicans/</a></li>
<li>

<a href="https://web.archive.org/web/20250116145602/https://archive.ph/txuJ2" target="_blank" rel="noopener">https://web.archive.org/web/20250116145602/https://archive.ph/txuJ2</a></li>
<li>

<a href="https://www.reddit.com/r/ProtonMail/comments/1i1zjgn/so_that_happened/" target="_blank" rel="noopener">https://www.reddit.com/r/ProtonMail/comments/1i1zjgn/so_that_happened/</a></li>
<li>

<a href="https://www.reddit.com/r/privacy/comments/1i210jg/protonmail_supporting_the_party_that_killed/" target="_blank" rel="noopener">https://www.reddit.com/r/privacy/comments/1i210jg/protonmail_supporting_the_party_that_killed/</a></li>
</ul>
<img src="/leaving-proton/andy-yen-tweet.webp" alt="Andy Yen on Twitter aka X" width="720" height="1149" style="max-width: 100%; height: auto; aspect-ratio: 932 / 1488;" loading="lazy" decoding="async"></blockquote>

]]></content:encoded></item><item><title>Finding Private Information Through Resumes on Google Search</title><link>https://nelson.cloud/finding-private-information-through-resumes-on-google-search/?ref=rss</link><pubDate>Mon, 16 Sep 2024 00:00:00 +0000</pubDate><guid>https://nelson.cloud/finding-private-information-through-resumes-on-google-search/?ref=rss</guid><description>Reconsider uploading your resume on the open web.</description><content:encoded><![CDATA[<p>I noticed a lot of people are willing to upload their full unredacted resume to their personal sites.
I recently had an idea of using Google search filters to see how easy it would be to find these.
I wanted to see how easily a malicious person could harvest things like phone numbers, email addresses, and even physical addresses.
Turns out it&rsquo;s not that difficult.</p>
<blockquote><p><strong>Disclaimer:</strong></p>This is purely for educational purposes. I don&rsquo;t plan on collecting information and using it for malicious purposes.</blockquote>

<p>I started by searching domains that host static sites like <code>github.io</code> and <code>pages.dev</code>.</p>
<p>I found a lot of resumes with this Google search. 

<a href="https://www.google.com/search?q=resume.pdf&#43;filetype:pdf&#43;site:github.io" target="_blank" rel="noopener">Try this search yourself</a>.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">resume.pdf filetype:pdf site:github.io</span></span></code></pre></div><p>Searching for <code>resume</code> instead of <code>resume.pdf</code> also works, but the results are polluted by &ldquo;Resume Guide&rdquo; PDFs, etc.</p>
<br>
<p>Searching for the standard <code>github.com</code> domain also yields lots of results. 

<a href="https://www.google.com/search?q=resume.pdf&#43;filetype:pdf&#43;site:github.com" target="_blank" rel="noopener">Try this search yourself</a>.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">resume.pdf filetype:pdf site:github.com</span></span></code></pre></div><br>
<p>After GitHub I decided to try the <code>pages.dev</code> domain used by 

<a href="https://pages.cloudflare.com/" target="_blank" rel="noopener">Cloudflare Pages</a>. Here is a simple search query that gives good results. 

<a href="https://www.google.com/search?q=resume&#43;filetype:pdf&#43;site:pages.dev" target="_blank" rel="noopener">Try this search yourself</a>.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">resume filetype:pdf site:pages.dev</span></span></code></pre></div><br>
<p>The Netlify domain <code>netlify.app</code> is used for static pages and also hosts a lot of resumes that users upload. 

<a href="https://www.google.com/search?q=resume&#43;filetype:pdf&#43;site:netlify.app" target="_blank" rel="noopener">Try this search yourself</a>.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">resume filetype:pdf site:netlify.app</span></span></code></pre></div><br>
<p>There are top level domains (TLDs) commonly used for personal sites, such as <code>.me</code> and <code>.dev</code>. These domains are also great for finding resumes. Here&rsquo;s a Google search for the <code>.me</code> TLD. 

<a href="https://www.google.com/search?q=resume&#43;filetype:pdf&#43;site:*.me" target="_blank" rel="noopener">Try it yourself</a>.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">resume filetype:pdf site:*.me</span></span></code></pre></div><br>
<p>And here is a Google search for the <code>.dev</code> TLD which is commonly used by developers. 

<a href="https://www.google.com/search?q=resume&#43;filetype:pdf&#43;site:*.dev" target="_blank" rel="noopener">Try this out yourself</a>.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">resume filetype:pdf site:*.dev</span></span></code></pre></div><br>
<p>I didn&rsquo;t try this with other TLDs but I know that other TLDs like <code>.id</code>, <code>.blog</code>, and <code>.codes</code> are usually used for personal sites. Feel free to search by these TLDs and see what you can find!</p>
<p>We can take this further. What if we want to find people based on something more specific than a domain or TLD? I&rsquo;ll keep using the <code>.dev</code> TLD for simplicity but there are many possibilities.</p>
<p>Maybe we want to find someone in a specific city? 

<a href="https://www.google.com/search?q=boston&#43;resume&#43;filetype:pdf&#43;site:*.dev" target="_blank" rel="noopener">Try it yourself</a>.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">boston resume filetype:pdf site:*.dev</span></span></code></pre></div><br>
<p>Or someone that went to a particular college? 

<a href="https://www.google.com/search?q=University&#43;of&#43;California&#43;Los&#43;Angeles&#43;resume&#43;filetype:pdf&#43;site:*.dev" target="_blank" rel="noopener">Try it yourself</a>.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">University of California Los Angeles resume filetype:pdf site:*.dev</span></span></code></pre></div><br>
<p>Someone that works or worked at a certain company? 

<a href="https://www.google.com/search?q=%22Apple%2C&#43;Inc%22&#43;resume&#43;filetype%3Apdf&#43;site%3A*.dev" target="_blank" rel="noopener">Try it yourself</a>.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">&#34;Apple, Inc&#34; resume filetype:pdf site:*.dev</span></span></code></pre></div><br>
<p>Maybe we want the name, number, and address of someone who has worked at a defense company and may know sensitive information important to U.S. national security? Note that I didn&rsquo;t filter based on domain or TLD here. 

<a href="https://www.google.com/search?q=%22resume.pdf%22&#43;%22Raytheon%22&#43;filetype%3Apdf" target="_blank" rel="noopener">Try it yourself</a>.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-text" data-lang="text"><span class="line"><span class="cl">&#34;resume.pdf&#34; &#34;Raytheon&#34; filetype:pdf</span></span></code></pre></div><p><small><i>(I&rsquo;m just joking. Please don&rsquo;t come after me, feds.)</i></small></p>
<br>
<p>I also considered writing a script to run these searches for me, gather all PDF links, download the PDFs, and then parse through them for names, numbers, emails, and addresses.
But I stopped because I have no interest in collecting this information. I just wanted to see and show others how easy it is to find information on the open web. It&rsquo;s definitely possible to write a script to do this though.</p>
<h2 id="conclusion">Conclusion</h2>
<p>In conclusion, it&rsquo;s really easy to find private information on resumes posted online. Please reconsider if you are thinking of making your resume available online.</p>
<h2 id="further-reading">Further Reading</h2>
<p>I am not the first to have this idea. Here&rsquo;s a similar post that you should also check out:</p>
<ul>
<li>

<a href="https://www.trickster.dev/post/simple-ways-to-find-exposed-sensitive-information/" target="_blank" rel="noopener">https://www.trickster.dev/post/simple-ways-to-find-exposed-sensitive-information/</a></li>
</ul>
]]></content:encoded></item><item><title>Scrape Contributor Emails From Any Git Repository</title><link>https://nelson.cloud/scrape-contributor-emails-from-any-git-repository/?ref=rss</link><pubDate>Thu, 21 Jul 2022 00:00:00 +0000</pubDate><guid>https://nelson.cloud/scrape-contributor-emails-from-any-git-repository/?ref=rss</guid><description>Scraping contributor emails from git repositories using git shortlog.</description><content:encoded><![CDATA[<p>In a 

<a href="https://nelson.cloud/scraping-github-contributor-emails/">previous post</a> I wrote about how it&rsquo;s possible to scrape emails from GitHub repositories using their API.
I even wrote up a 

<a href="https://github.com/nelsonfigueroa/github-email-scraper" target="_blank" rel="noopener">Ruby script</a> to do this.
I now realize that is a very complicated way to go about it after discovering the <code>git shortlog</code> command.</p>
<p>With <code>git shortlog</code> you can list all contributor emails for any git repository, not just GitHub repos.</p>
<blockquote><p><strong>Disclaimer:</strong></p>I am writing about this to make others aware of this form of scraping and it is purely for educational purposes. I do not plan on doing anything with emails from git repos and you shouldn’t either.</blockquote>

<blockquote><p><strong>tl;dr:</strong></p><p>You can run this command within any git repo to extract all contributor emails:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-shell" data-lang="shell"><span class="line"><span class="cl">git shortlog -sea <span class="p">|</span> grep -E -o <span class="s2">&#34;\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b&#34;</span> <span class="p">|</span> awk <span class="s1">&#39;{print tolower($0)}&#39;</span> <span class="p">|</span> sort <span class="p">|</span> uniq <span class="p">|</span> grep -wv <span class="s1">&#39;users.noreply.github.com&#39;</span></span></span></code></pre></blockquote>

<h2 id="command-break-down">Command Break Down</h2>
<p>The <code>git shortlog -sea</code> part of the command is short for <code>git shortlog --summary --email --all</code>. This command outputs the number of commits each user has made, along with their name and email, across all branches.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-console" data-lang="console"><span class="line"><span class="cl"><span class="gp">$</span> git shortlog -sea
</span></span><span class="line"><span class="cl"><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="go">    54  First Last &lt;FirstLast@example.com&gt;
</span></span></span><span class="line"><span class="cl"><span class="go">   385  Another User &lt;Anotheruser@example.com&gt;
</span></span></span><span class="line"><span class="cl"><span class="go">     2  user1 &lt;user1@example.com&gt;
</span></span></span><span class="line"><span class="cl"><span class="go">    31  first last &lt;firstlast@example.com&gt;
</span></span></span><span class="line"><span class="cl"><span class="go">    10  Someone Else &lt;1234567+someoneelse@users.noreply.github.com&gt;
</span></span></span></code></pre></div><p>The next command, <code>grep -E -o &quot;\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b&quot;</code>, extracts emails from each line using a regular expression.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-console" data-lang="console"><span class="line"><span class="cl"><span class="gp">$</span> git shortlog -sea <span class="p">|</span> grep -E -o <span class="s2">&#34;\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b&#34;</span>
</span></span><span class="line"><span class="cl"><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="go">FirstLast@example.com
</span></span></span><span class="line"><span class="cl"><span class="go">Anotheruser@example.com
</span></span></span><span class="line"><span class="cl"><span class="go">user1@example.com
</span></span></span><span class="line"><span class="cl"><span class="go">firstlast@example.com
</span></span></span><span class="line"><span class="cl"><span class="go">1234567+someoneelse@users.noreply.github.com
</span></span></span></code></pre></div><p>The output from the previous command is piped into <code>awk '{print tolower($0)}'</code>, which lowercases all the emails. Sometimes emails are typed in with capital letters. Lowercasing all characters will help with sorting and finding unique emails later.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-console" data-lang="console"><span class="line"><span class="cl"><span class="gp">$</span> git shortlog -sea <span class="p">|</span> grep -E -o <span class="s2">&#34;\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b&#34;</span> <span class="p">|</span> awk <span class="s1">&#39;{print tolower($0)}&#39;</span>
</span></span><span class="line"><span class="cl"><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="go">firstlast@example.com
</span></span></span><span class="line"><span class="cl"><span class="go">anotheruser@example.com
</span></span></span><span class="line"><span class="cl"><span class="go">user1@example.com
</span></span></span><span class="line"><span class="cl"><span class="go">firstlast@example.com
</span></span></span><span class="line"><span class="cl"><span class="go">1234567+someoneelse@users.noreply.github.com
</span></span></span></code></pre></div><p>After that, the output is piped into <code>sort</code> and <code>uniq</code>. These commands are straightforward. The emails are sorted alphabetically, then duplicates are excluded from the output.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-console" data-lang="console"><span class="line"><span class="cl"><span class="gp">$</span> git shortlog -sea <span class="p">|</span> grep -E -o <span class="s2">&#34;\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b&#34;</span> <span class="p">|</span> awk <span class="s1">&#39;{print tolower($0)}&#39;</span> <span class="p">|</span> sort <span class="p">|</span> uniq
</span></span><span class="line"><span class="cl"><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="go">1234567+someoneelse@users.noreply.github.com
</span></span></span><span class="line"><span class="cl"><span class="go">anotheruser@example.com
</span></span></span><span class="line"><span class="cl"><span class="go">firstlast@example.com
</span></span></span><span class="line"><span class="cl"><span class="go">user1@example.com
</span></span></span></code></pre></div><p>That should suffice for a lot of git repos, but I also added <code>grep -wv 'users.noreply.github.com'</code> to the end of the command to exclude noreply emails associated with GitHub.</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-console" data-lang="console"><span class="line"><span class="cl"><span class="gp">$</span> git shortlog -sea <span class="p">|</span> grep -E -o <span class="s2">&#34;\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}\b&#34;</span> <span class="p">|</span> awk <span class="s1">&#39;{print tolower($0)}&#39;</span> <span class="p">|</span> sort <span class="p">|</span> uniq <span class="p">|</span> grep -wv <span class="s1">&#39;users.noreply.github.com&#39;</span>
</span></span><span class="line"><span class="cl"><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="go">anotheruser@example.com
</span></span></span><span class="line"><span class="cl"><span class="go">firstlast@example.com
</span></span></span><span class="line"><span class="cl"><span class="go">user1@example.com
</span></span></span></code></pre></div><h2 id="extracting-emails-with-git-log">Extracting Emails With <code>git log</code></h2>
<p>It&rsquo;s possible to do something similar with the <code>git log --pretty=&quot;%ce&quot;</code> command. However, I noticed that this command does not show as many emails as <code>git shortlog</code>. I didn&rsquo;t look too much into it, but I believe it only pulls emails from one branch rather than all branches like with <code>git shortlog --all</code>.</p>
<h2 id="references">References</h2>
<p>I learned about <code>git shortlog</code> from this Stack Overflow question:</p>
<ul>
<li>

<a href="https://stackoverflow.com/questions/9597410/list-all-developers-on-a-project-in-git" target="_blank" rel="noopener">https://stackoverflow.com/questions/9597410/list-all-developers-on-a-project-in-git</a></li>
</ul>
<p>I got the email regex from here:</p>
<ul>
<li>

<a href="https://www.shellhacks.com/regex-find-email-addresses-file-grep/" target="_blank" rel="noopener">https://www.shellhacks.com/regex-find-email-addresses-file-grep/</a></li>
</ul>
]]></content:encoded></item><item><title>Scraping GitHub Contributor Emails</title><link>https://nelson.cloud/scraping-github-contributor-emails/?ref=rss</link><pubDate>Sat, 30 Oct 2021 00:00:00 +0000</pubDate><guid>https://nelson.cloud/scraping-github-contributor-emails/?ref=rss</guid><description>Scraping GitHub contributor emails, and how you can protect yourself.</description><content:encoded><![CDATA[<blockquote><p><strong>Note:</strong></p>2022-07-21 update: I discovered a better way to do this and I wrote about it in a separate blog post. Check it out here: 

<a href="https://nelson.cloud/scrape-contributor-emails-from-any-git-repository/" target="_blank" rel="noopener">Scrape Contributor Emails From Any Git Repository</a></blockquote>

<h2 id="git-emails">Git Emails</h2>
<p>When setting up Git on the command line, you are asked for your email.
When pushing commits to GitHub, the email you are using for Git gets pushed along with your code as part of the metadata.
While your GitHub email does not publicly show when viewing a repository&rsquo;s commits, it does come up when viewing commits using the GitHub API.</p>
<p>This presents a privacy risk and the potential for someone to find the email associated with your GitHub account.
I wanted to see how easily someone could do this so I created a scraper to do this for me. It turns out it&rsquo;s not hard to scrape commits for emails that are otherwise hidden from public view.</p>
<blockquote><p><strong>Disclaimer:</strong></p>I don&rsquo;t plan on doing anything malicious with this script or the emails collected. I did this out of curiosity and for demonstrational purposes.</blockquote>

<p>The scraper I created is below. Instructions can be found on the README:</p>
<ul>
<li>

<a href="https://github.com/nelsonfigueroa/github-email-scraper" target="_blank" rel="noopener">https://github.com/nelsonfigueroa/github-email-scraper</a></li>
</ul>
<h2 id="scraping-for-emails">Scraping for Emails</h2>
<p>By running the script, I can scrape for emails found in each commit for a given repository:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-console" data-lang="console"><span class="line"><span class="cl"><span class="gp">$</span> ruby main.rb -u torvalds -r linux
</span></span><span class="line"><span class="cl"><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="go">	+-------------------+
</span></span></span><span class="line"><span class="cl"><span class="go">	|   GitHub          |
</span></span></span><span class="line"><span class="cl"><span class="go">	|       Email       |
</span></span></span><span class="line"><span class="cl"><span class="go">	|         Scraper   |
</span></span></span><span class="line"><span class="cl"><span class="go">	+-------------------+
</span></span></span><span class="line"><span class="cl"><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="err">
</span></span></span><span class="line"><span class="cl"><span class="go">Scraping https://github.com/torvalds/linux/
</span></span></span><span class="line"><span class="cl"><span class="go">Rate limit exceeded.
</span></span></span><span class="line"><span class="cl"><span class="go">Pages scraped: 1-46 out of 10449
</span></span></span><span class="line"><span class="cl"><span class="go">53 emails written to torvalds-linux.txt
</span></span></span></code></pre></div><p>Just like that, I&rsquo;ve scraped several emails. It&rsquo;s not much, and I could get a lot more if I bothered to authenticate to prevent rate limiting.
A patient scraper could simply run this periodically to get as many emails as possible.</p>
<p>So what can we do about this?</p>
<h2 id="hiding-your-email-in-github-commits">Hiding your Email in GitHub Commits</h2>
<p>You can choose to hide your email when performing Git operations on the GitHub site as well as the command line. There are two checkboxes you&rsquo;ll need to tick. Instructions are below:</p>
<ul>
<li>

<a href="https://docs.github.com/en/account-and-profile/how-tos/email-preferences/blocking-command-line-pushes-that-expose-your-personal-email-address" target="_blank" rel="noopener">Blocking command line pushes that expose your personal email address</a></li>
</ul>
<p>Next, you&rsquo;ll need to change your email Git uses on your machine to the <code>@users.noreply.github.com</code> email that GitHub provided in the previous step. Run the following:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-console" data-lang="console"><span class="line"><span class="cl"><span class="gp">$</span> git config --global user.email <span class="s2">&#34;00000000+yourusername@users.noreply.github.com&#34;</span>
</span></span></code></pre></div><p>Then verify that the email has been set:</p>
<div class="highlight"><pre tabindex="0" class="chroma"><code class="language-console" data-lang="console"><span class="line"><span class="cl"><span class="gp">$</span> git config --global user.email
</span></span><span class="line"><span class="cl"><span class="go">00000000+yourusername@users.noreply.github.com
</span></span></span></code></pre></div><p>Now your actual email will be hidden from Git commits that have been pushed from your machine as well as any Git operations on GitHub. Note that your email will still show up in older commits that were pushed before these changes.
However, this will still improve your privacy on GitHub going forward.</p>
]]></content:encoded></item><item><title>My Favorite Privacy Apps and Services</title><link>https://nelson.cloud/my-favorite-privacy-apps-and-services/?ref=rss</link><pubDate>Thu, 31 Dec 2020 00:00:00 +0000</pubDate><guid>https://nelson.cloud/my-favorite-privacy-apps-and-services/?ref=rss</guid><description>My favorite privacy-respecting tools, apps, and services.</description><content:encoded><![CDATA[<p>This is a collection of my most used privacy tools and services. I have not been paid or sponsored by any of them.</p>
<h2 id="firefox">Firefox</h2>
<p><strong>Official site:</strong> 

<a href="https://www.firefox.com/en-US/" target="_blank" rel="noopener">https://www.mozilla.org/</a></p>
<p>Firefox has always been a great alternative to Chrome for privacy purposes. Firefox is, in my opinion, the only real alternative to Chrome and Chromium-based browsers. Sure there&rsquo;s also Safari but the support for extensions is butchered. If I can&rsquo;t install 

<a href="https://addons.mozilla.org/en-US/firefox/addon/ublock-origin/" target="_blank" rel="noopener">uBlock Origin</a> on a browser, I don&rsquo;t use it.</p>
<h2 id="ublock-origin">uBlock Origin</h2>
<p><strong>Official site:</strong> 

<a href="https://ublockorigin.com/" target="_blank" rel="noopener">https://ublockorigin.com/</a></p>
<p>uBlock Origin is probably the best adblocker out there. I debated adding it to my list because I thought it was the norm to install an adblocker but I&rsquo;ve come across so many people that, for whatever reason, do not use any sort of adblocker.</p>
<p>If you use a browser (aside from Safari) and you don&rsquo;t have this extension installed&hellip;what are you doin&rsquo;??</p>
<h2 id="tor">Tor</h2>
<p><strong>Official site:</strong> 

<a href="https://www.torproject.org/" target="_blank" rel="noopener">https://www.torproject.org/</a></p>
<p>If you really care about privacy to the point where you want to be anonymous, use Tor. When using Tor, your connection goes through several Tor servers that encrypt connections multiple times along the way. This way, your connection is difficult to trace and decrypt. Tor is widely used by journalists, whistleblowers, and activists to remain safe from government surveillance and punishment.</p>
<h2 id="signal">Signal</h2>
<p><strong>Official site:</strong> 

<a href="https://signal.org/" target="_blank" rel="noopener">https://signal.org/</a></p>
<p>Signal is a cross-platform messaging app. If you&rsquo;ve ever used iMessage on Apple devices, then it&rsquo;ll feel familiar, except Signal is not exclusive to Apple hardware. Signal is free, open source, end-to-end encrypted, and peer-reviewed. It&rsquo;s used by privacy advocates around the world.</p>
<p>It has all the essential features that you&rsquo;d expect from a modern messaging application like sending photos/videos, calls, video chat, stickers.</p>
<h2 id="mullvad-vpn">Mullvad VPN</h2>
<p><strong>Official site:</strong> 

<a href="https://mullvad.net/en" target="_blank" rel="noopener">https://mullvad.net/</a></p>
<p>Mullvad VPN does not log any activity (and has been audited to prove it), and is pretty affordable. I know many people out there opt to use free VPNs, but there&rsquo;s a 99% chance they&rsquo;re selling your information to marketing companies. It&rsquo;s much better to pay for a VPN.</p>
<p>The source code for the Mullvad client applications 

<a href="https://github.com/mullvad/mullvadvpn-app" target="_blank" rel="noopener">is open-source</a>.</p>
<p>Mullvad even encourages you to remain as anonymous as possible when buying their service. You don&rsquo;t need an email to sign up and you can pay with Bitcoin.</p>
<p>Mullvad VPN is based in Sweden, which has generally good privacy laws.</p>
<h2 id="proton-vpn">Proton VPN</h2>
<p><strong>Official site:</strong> 

<a href="https://protonvpn.com/" target="_blank" rel="noopener">https://protonvpn.com/</a></p>
<p>I eventually switched to Proton VPN since I bought their subscription suite that includes email and cloud storage. My experience with Proton VPN has been very positive and it&rsquo;s just as good as Mullvad from what I can tell. Proton VPN (and the rest of their services) are based in Switzerland which has good privacy laws.</p>
<h2 id="proton-mail">Proton Mail</h2>
<p><strong>Official site:</strong> 

<a href="https://proton.me/mail" target="_blank" rel="noopener">https://proton.me/mail</a></p>
<p>Proton Mail is an email service based in Switzerland. Your emails are encrypted and aren&rsquo;t used for training AI or selling advertisements to you.</p>
<p>The UI/UX isn&rsquo;t as great as something like Gmail but I think it&rsquo;s worth the trade-off. They also support bringing in your own domain to use for emailing.</p>
<p>You can create a free account to try it out.</p>
<h2 id="little-snitch">Little Snitch</h2>
<p><strong>Official site:</strong> 

<a href="https://www.obdev.at/products/littlesnitch/index.html" target="_blank" rel="noopener">https://www.obdev.at/products/littlesnitch/index.html</a></p>
<p>Little Snitch is a macOS-only application firewall that runs on your Mac and monitors all incoming and outgoing connections. It allows you to allow or deny connections as needed and gives you plenty of information about what your applications are connecting to. There are also 

<a href="https://www.obdev.at/products/littlesnitch-mini/blocklists.html" target="_blank" rel="noopener">curated blocklists</a> you can add to Little Snitch to block things like ads on your entire machine.</p>
<p>This is a paid app (and there&rsquo;s a free trial), but I think it&rsquo;s worth it.</p>
<p>If you want a free alternative, check out 

<a href="https://objective-see.org/products/lulu.html" target="_blank" rel="noopener">LuLu</a>. It has fewer features, but it&rsquo;s worth a try if you want to see what your machine is connecting to. The same developer has other Mac-related applications that may be useful: 

<a href="https://objective-see.org" target="_blank" rel="noopener">objective-see.org</a>.</p>
<h2 id="further-research">Further Research</h2>
<p>These are my favorite tools and services, but there are many, many others out there. If you want to claim back more of your privacy, start by reading through 

<a href="https://www.privacyguides.org/en/tools/" target="_blank" rel="noopener">privacyguides.org</a>.</p>
<p>I&rsquo;ve also learned a lot about privacy in these subreddits:</p>
<p>

<a href="https://www.reddit.com/r/privacy/" target="_blank" rel="noopener">/r/privacy</a></p>
<p>

<a href="https://www.reddit.com/r/PrivacyGuides/" target="_blank" rel="noopener">/r/PrivacyGuides</a></p>
<p>

<a href="https://www.reddit.com/r/degoogle/" target="_blank" rel="noopener">/r/degoogle</a></p>
]]></content:encoded></item></channel></rss>