Jekyll2024-02-27T16:08:12-06:00https://frederico.me/feed.xmlFrederico random notesI am using this space to save my notes about tech stuff, mostly it is my notebook about software. From time to time I tried to upkeep a blog in the end I fallback to small text files with notes or just commands and now I think that it is more useful than blog posts or videos.Readings from October, 20232023-11-01T00:00:00-05:002023-11-01T00:00:00-05:00https://frederico.me/reading/2023/11/01/october_reads<p>My October 2023 reading notes, september was a good for reading but I have being quite busy on october, I did read things but not really “read”, taking notes and studying. The point of these posts are for studiying and sometimes you don’t have time.</p>
<h2 id="tech">Tech</h2>
<p>Being software developer is not easy, specially because there are many, many stuff going on at same time, both on industry development and technlogy, as well processes, marketing, work, economy. Sometimes I wish I was a cave man, and with a good humor <a href="https://grugbrain.dev">this text</a> is a good self(?) reflection on the subject.</p>
<h2 id="market">Market</h2>
<p>Airbnb and similar short term rentals companies are facing troubles, post covid, classic rental markets, <a href="https://www.youtube.com/watch?v=vT6qh72wCZk">this video</a> summarizes quite well the current status quo. What started and what it became. Spoiler, it is bad. The lesson to me here is about how the dynamic the world itself could turn change for the worse even if is giving profit and could end up in the end with a collapse.</p>My October 2023 reading notes, september was a good for reading but I have being quite busy on october, I did read things but not really “read”, taking notes and studying. The point of these posts are for studiying and sometimes you don’t have time.Readings from September, 20232023-09-05T00:00:00-05:002023-09-05T00:00:00-05:00https://frederico.me/reading/2023/09/05/readings<p>My september 2023 notes on the content I read and found interesting. They are grouped by topics, mostly related with technology but also with other subjects. The links are on the comments, that provide context and some toughts on the matter.</p>
<h2 id="technology">Technology</h2>
<h3 id="compilers">Compilers</h3>
<p>A nice post from a persin that write small compilers, the <a href="https://vgel.me/posts/c500/">article</a> comments the chanlanges the author had to write a small compiler on 500 lines of python.
The author uses as target WebAssembly. I never touched it yet and seems interesting for future study. The author chose to do a single-pass but it may be shorter and easier to get a result but I would start with two-pass. The main reason I would write a compiler is to generate/manipulate a given AST.</p>
<h3 id="software-management">Software Management</h3>
<p>Checking the <a href="https://www.mckinsey.com/industries/technology-media-and-telecommunications/our-insights/yes-you-can-measure-software-developer-productivity">recent study</a> from a big consultancy company about developer productivity. As almost all developers around, I have strong opinions on it but I have being more pragmatic as I got older. I download the pdf from the site and read it. Before I read the article, a lot of blog posts and texts poped to me, I reserved to
read them only I read the study. Also you need to register to download the PDF.</p>
<p>The study in my opinion just state the obvious that may be not clear for everybody. There is nothing new, just a well written document with comments for C-levels read.</p>
<p><a href="https://newsletter.pragmaticengineer.com/p/measuring-developer-productivity">This</a> critique is more about releasing their manifesto than about the article itself. There is an anedotic argument about something like that happened on the company of one of the authors.</p>
<p>The other articles also goes on the same direction. To make a better software development environment and to measure the productivity you need to be organized first in my opinion.</p>
<p>From the original article, they comment about existing methods to measure the performance</p>
<p><a href="https://cloud.google.com/blog/products/devops-sre/using-the-four-keys-to-measure-your-devops-performance">DORA Metrics</a>
<a href="https://queue.acm.org/detail.cfm?id=3454124">SPACE Metrics</a></p>
<h3 id="software-development">Software Development</h3>
<p>I like consensus algorithms so I read about them from time to time, now it is time
for the <a href="https://raft.github.io">Raft Consensus Algorithm</a> On the page there is a <a href="http://thesecretlivesofdata.com/raft/">nice demo</a> that also serves a demo how the old network protocol NetBUIE or something like that works.</p>
<p>The <a href="https://raft.github.io/raft.pdf">paper</a> itself looks interesting and will get their own post later</p>
<h2 id="dutch">Dutch</h2>
<p>This <a href="https://www.heardutchhere.net/index.html">site is awesome</a>, old school site to old school people learn dutch.</p>
<h2 id="youtube">Youtube</h2>
<p><a href="https://www.youtube.com/watch?v=DARUvKPSUhE">Do Droughts make floods worse?</a> As always the answer is depend. Nice video about something I noticed myself but with a deep engineering perspective. Nice quote from video: “All models are wrong but some of them are useful”</p>My september 2023 notes on the content I read and found interesting. They are grouped by topics, mostly related with technology but also with other subjects. The links are on the comments, that provide context and some toughts on the matter.SSH Random notes2023-01-01T00:00:00-06:002023-01-01T00:00:00-06:00https://frederico.me/2023/01/01/ssh-random-notes<p>Some of the ssh tricks that I learned while automating tasks or just configuring remote services.</p>
<p>Everytime I need to configure ssh keys I end up on google, sometimes I find stuff that is interesting and useful, one one them is this article on how to identify who is trying to login into your service by their public keys.
<a href="https://words.filippo.io/dispatches/whoami-updated/">about ssh public keys</a></p>Some of the ssh tricks that I learned while automating tasks or just configuring remote services.Random reuse and recycling of house items2022-09-12T00:00:00-05:002022-09-12T00:00:00-05:00https://frederico.me/2022/09/12/reuse<p>A mix of avarice and search for efficiency and incoformism on why we throw away so much stuff. Being a minimalist means that I want to also use as minimal as possible the resources I had. So I found a way to simple reuse the salt grinders from the supermarket.</p>
<h2 id="disposable-salt-grinder">Disposable Salt Grinder</h2>
<p>It always annoyed me that the glass salt grinder sold on the supermarkets could not be refilled. So one day I bought one and the grinder broke and I wanted to at least get the salt from inside. So this is where I found this video:</p>
<iframe width="560" height="315" src="https://www.youtube.com/embed/yL0e4ftu740" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen=""></iframe>A mix of avarice and search for efficiency and incoformism on why we throw away so much stuff. Being a minimalist means that I want to also use as minimal as possible the resources I had. So I found a way to simple reuse the salt grinders from the supermarket.Moving my github pages from custom CMS to Jekyll2022-06-08T00:00:00-05:002022-06-08T00:00:00-05:00https://frederico.me/2022/06/08/jekyll<p>Content management is hard, either you use a old style CMS or use a web service ( medium, wordpress, blogger ) or you do it yourself. I tried for sometime almost all the options, and ended up with wordpress as generic tool and my own in-house version that process markdown files.</p>
<p>I started to write again and using github pages seems simple and is close to what I think that is a good way to write content. But still some tooling required to manage links and etc. So this time I am giving a chance to Jekyll. I never tried it before for a myriad of reasons but now I am commited to try it for real.</p>
<h1 id="hands-on">Hands on</h1>
<p>I am following this <a href="https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/about-github-pages-and-jekyll">github</a> tutorial to use Jekyll. Also it seems to work with github actions so I can edit on github web page, or on github mobile app or go jurassic and edit on my own desktop.</p>
<p>I will try to do not install anything local but let’s see how it goes.</p>
<h2 id="bootstrap">Bootstrap</h2>
<p>Created the _config.yml. Edited the source to be ‘.’. Ignored the front matter, themes and plugins for now.</p>
<p>Now .. it suggest to build locally. It seems that I have ruby installed locally and it is on 2.6.x. Good enough.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>gem install jekyll
ERROR: While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.6.0 directory.
# meh
</code></pre></div></div>
<p>So, did not worked with system ruby, my lazyness did not pay off this time. So let’s do it the “dev” way. Following the guide on <a href="https://jekyllrb.com/docs/installation/macos/">jekyll site</a>.</p>
<p>I try to keep as minimal as possible the software installed on the host and I tought to use a docker but.. ok, let’s do it the old way.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>brew install chruby ruby-install
#(...)
ruby-install ruby
#(... it took a while, it compiled ruby.. feels like 1998 again)
# Added this to my zsh
echo "source $(brew --prefix)/opt/chruby/share/chruby/chruby.sh" >> ~/.zshrc
echo "source $(brew --prefix)/opt/chruby/share/chruby/auto.sh" >> ~/.zshrc
echo "chruby ruby-3.1.x" >> ~/.zshrc
# TIL that ruby is on 3.1.x version
gem install jekyll
</code></pre></div></div>
<p>Somehow I got the <em>impression</em> that installing stuff using pip on python is wy faster than using gem. Just a impression.</p>
<p>Well it seems that worked. So need to bootstrap the site.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>jekyll new --skip-bundle .
# fails
</code></pre></div></div>
<p>It didn’t run on the directory that has the files, so I created on directory empty and run it, looks good. After I move it to the root.</p>
<p>Now I am following this <a href="https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/creating-a-github-pages-site-with-jekyll">guide</a>, mostly went well.</p>
<p>Needed to update the versions accordly with this <a href="https://pages.github.com/versions/">link</a>, also to run locally was necessary to add <em>webrick</em> to the project Gemfile. So run it locally and of course it is empty.</p>
<p>So I wanted to run it from the root, I moved the contents of the jekyll directory that I created to root and run the server, and it server my old index.html as main page. Moved the file to another name and voi-la, somehow it got all my markdown notes as “pages”. Now I need to figure out how to move them to posts.</p>
<p>So for now I ignore the rest of the setting up page and went to <a href="https://docs.github.com/en/pages/setting-up-a-github-pages-site-with-jekyll/adding-content-to-your-github-pages-site-using-jekyll">adding content</a> to your github pages. Let’s move the old markdown notes to posts. If that works well I will apreciate it a lot.</p>
<p>The markdown used by jekyll seems to be anotated, any markdown on the root is a page. The posts live on _posts directory, so now I will just move the posts there and put some metadata on them ( if required ). So I moved the files and it did not worked as I expected, of course, because I did not read the documentation. the file has to have a specific filename: <code class="language-plaintext highlighter-rouge">YY_MM_DD-title.markup.</code> . Let’s rename them. Worked GREAT!</p>
<p>Since I wrote the texts as a notes, I am still unsure what those are really a blog post or a page, for now I posted everything on my site at 2022-01-01. Now I moved this own note/post to _posts directory and can continue the saga. Part of the intent of this new old blog/site of mine is to be more descriptive and give more context on how or why I am using or trying something. Let’s do some last adjusts and publish it. Also was not that painfull to run it locally. After some facelift let’s go back to github tutorial and publish it on my site.</p>
<p>One of my habits is always have a prod-dev-staging environemnts and here they manifest as a branch, so the site was on main and I tested on staging and merged on the master. Also I have a older github action that I removed since it was a kind of poor’s man jekyll. So I merged it on master, the site itself was not published and I need to configure a <a href="https://docs.github.com/en/pages/getting-started-with-github-pages/configuring-a-publishing-source-for-your-github-pages-site#choosing-a-publishing-source">publishing source</a> for it again.</p>
<p>Now my site seems blank. So I set the root to on staging branch and let’s see how it goes. Well it worked. The biggest classic of computation, restart your computer but now on a cloud version. On the same note, it seems that github pages have a considerable latency between the commit and build and deploy on their servers, so quick changes and commit won’t work as expected. That is one of the reasons to run it locally, and it is not a problem now. I still able to just use the github app on mobile or the web ui to write/edit something.</p>
<p>I am sticking with it, maybe changing the layout a bit, so far so good.</p>Content management is hard, either you use a old style CMS or use a web service ( medium, wordpress, blogger ) or you do it yourself. I tried for sometime almost all the options, and ended up with wordpress as generic tool and my own in-house version that process markdown files.Great Expectations ( work in progress )2022-06-04T00:00:00-05:002022-06-04T00:00:00-05:00https://frederico.me/2022/06/04/Great%20Expectations<p>Got this link: <a href="greatexpectations.io">Great Expectations</a> from reading online, seems very interesting for higher level data asserts,
started following the <a href="https://docs.greatexpectations.io/docs/">Welcome Guide</a></p>
<p>Their model is quite what we usually do with data processing,
reading from lake or data source we need to validade the data before doing another action. Like is visualized here:</p>
<p><img src="https://docs.greatexpectations.io/assets/images/GE_OSS_process-448174e3b55ae4dfd7fbb7a8c1a452e3.png" alt="Data Archictecture" /></p>
<p>What really got me into is the higher level declarations that are possible to asset about the data, like:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code> <span class="c"># From the example on the docs</span>
expect_column_values_to_be_between<span class="o">(</span>
<span class="nv">column</span><span class="o">=</span><span class="s2">"passenger_count"</span>,
<span class="nv">min_value</span><span class="o">=</span>1,
<span class="nv">max_value</span><span class="o">=</span>6
<span class="o">)</span>
</code></pre></div></div>
<h2 id="hands-on--commented-tutorial-">Hands on ( commented tutorial )</h2>
<p>I followed the <a href="https://docs.greatexpectations.io/docs/tutorials/getting_started/tutorial_overview">tutorial</a></p>
<p>Found interesting that they let previous versions of the tutorial on the repo for reading.
I ended up using a venv instead running direct on system python.</p>
<p>The first step is create a Data Context, it felts like boostraping a web framework.
Normally I prefer tools that are less coupled but let’s see how this goes.
Also the cli tool is great, it displayed useful information right from start on nice layout.</p>
<p>great_expectations init</p>
<p>A classic from all data tools, let’s create a DataSource. For the tutorial the DataSource is a csv file.</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code> great_expectations datasource new
<span class="c"># it show a wizard</span>
Using v3 <span class="o">(</span>Batch Request<span class="o">)</span> API
What data would you like Great Expectations to connect to?
1. Files on a filesystem <span class="o">(</span><span class="k">for </span>processing with Pandas or Spark<span class="o">)</span>
2. Relational database <span class="o">(</span>SQL<span class="o">)</span>
</code></pre></div></div>
<p>I pickup the tutorial choices, local files with panda, and ended up with a jupyter server running. Cool.
Opened the url that come from the command output and got this screen:</p>
<p><a href="#">missing image</a></p>
<p>I am not used to Jupyter so took me some time to figure out that the next step is on datasource_new.ipynb file.
I changed the datasource name and continued. The tutorial explained
some of the internals now before continue but I can tell that the feeling is like setting up a rails or django
or similar framework. The yaml file that it creates is quite self-explanatory.</p>
<p>So now we are going to create the expectations, my expectations are high now (…).
There are some new, at least to me, vocabulary, so basically it seems that for a fiven set of data,
you create a Expectation Suite that is a set of expectations to run against it.</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code> great_expectations suite new
<span class="c"># another wizard:</span>
How would you like to create your Expectation Suite?
1. Manually, without interacting with a sample batch of data <span class="o">(</span>default<span class="o">)</span>
2. Interactively, with a sample batch of data
3. Automatically, using a profiler
:
<span class="c"># And so on...</span>
</code></pre></div></div>
<p>So, it didn’t work as I expected, I opened a new terminal, and typed the command but it failed with:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code> No datasources found <span class="k">in </span>the context. To add a datasource, run <span class="sb">`</span>great_expectations datasource new<span class="sb">`</span>
</code></pre></div></div>
<p>So I investigated it and it seems that the notebook was on the uncommited folder, for some reason.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code> find . |grep ipynb |grep -v venv
./ge_dbt_airflow_tutorial/great_expectations_projects/final/great_expectations/notebooks/spark/validation_playground.ipynb
(...)
./great_expectations/uncommitted/datasource_new.ipynb
./great_expectations/uncommitted/.ipynb_checkpoints
./great_expectations/uncommitted/.ipynb_checkpoints/datasource_new-checkpoint.ipynb
</code></pre></div></div>
<p>So I started over. Now when I created a datasource I observed this error:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>
To access the notebook, open this file <span class="k">in </span>a browser:
file:///home/developer/.local/share/jupyter/runtime/nbserver-2831-open.html
Or copy and <span class="nb">paste </span>one of these URLs:
http://localhost:8888/?token<span class="o">=</span>XXX
or http://127.0.0.1:8888/?token<span class="o">=</span>XXX
Start : This <span class="nb">command </span>cannot be run due to the error: The system cannot find the file specified.
At line:1 char:1
+ Start <span class="s2">"file:///tmp/tmppvipyy8n.html"</span>
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : InvalidOperation: <span class="o">(</span>:<span class="o">)</span> <span class="o">[</span>Start-Process], InvalidOperationException
+ FullyQualifiedErrorId : InvalidOperationException,Microsoft.PowerShell.Commands.StartProcessCommand
</code></pre></div></div>
<p>Oh boy, on the message from the tool it says: <em>If files are on local disk
enter a path relative to your current working directory or an absolute path.</em> but I bindly followed the tutorial.
So I do it again but now use <em>./data</em> as directory and it worked.</p>
<p>The output from the last tutorial step, adding a new suite was a question about the two data files present on data:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>A batch of data is required to edit the suite - let's help you to specify it.
Which data asset (accessible by data connector "default_inferred_data_connector_name") would you like to use?
1. yellow_tripdata_sample_2019-01.csv
2. yellow_tripdata_sample_2019-02.csv
Type [n] to see the next page or [p] for the previous. When you're ready to select an asset, enter the index.
:
</code></pre></div></div>
<p>I ran all the steps successfuly and got a new Jupyter notebook to open. Clicked on the getting_started_expectation_suite_taxi.demo
and got a notebook :). I am great fan of notebooks but I am used to do only with Mathematica and pure math functions so I still
a bit lost using it with python.</p>
<p>So following the tutorial, now I creating the expectation. Edit code on a well written Jupyter notebook is awesome.</p>
<p>Running all the cells got me a lot of errors(…). Iprogress not found. Checked on stackoverflow and installed a bunch of
modules:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>pip install ipywidgets widgetsnbextension pandas-profiling
</code></pre></div></div>
<p>These seemed to be just for the progress bars look nice, but still an error at the end, that it could not find the given file.
It may be that because I am running on windows with WSL and python on a venv inside ( that likely was not meant on the tutorial )
the reason I am getting so many errors.</p>
<p>I did another search and yes, it seems that you need some special setup for jupyter on WSL. This is where I am stopping now. Will continue later.</p>Got this link: Great Expectations from reading online, seems very interesting for higher level data asserts, started following the Welcome GuideModern Windows Workstation for Developers2022-04-03T00:00:00-05:002022-04-03T00:00:00-05:00https://frederico.me/2022/04/03/Modern%20Windows%20Development<p>Windows is one of the historic and most used and installed O.S in the world.
I had a high and lows relationship with it but still I always used it either at home or at work. On the past years my home computer is an Mac and I have being using linux mainly on vms/containers or remote. Now I am back working on daily basis on a windows machine and compared to my previous experience ( Windows 8 ),
windows 11 is a totally different experience. Mainly on my opinion now due to the Windows Linux Subsystem.</p>
<p>I am writing here how I set my machine and what kind of troubles I runned into. This text is mainly a working in progress
both on content as well as I am adjusting it to my daily needs.</p>
<h2 id="configuring-and-using-a-windows-workstation-for-cloud-development">Configuring and using a Windows Workstation for Cloud Development</h2>
<p>I mainly do software development for cloud, so usually I will run only subsets of the application locally, mainly on containers.
The first thing I did was configure a way to use docker that is my main runtime now.</p>
<p>The docker oficial desktop application is not something I like, but I use it on mac os because still easier ( but buggy ) than the other options.
But the on the work computer the license of docker desktop is quite restrictive so I need somehow install docker vanilla and deal with it. So why not
to run it on the WSL? I tried and in the end worked quite well. I followed the <a href="https://docs.microsoft.com/en-us/windows/wsl/install">official documentation</a>
and installed ubuntu and worked quite well.</p>
<h3 id="installing-docker">Installing Docker</h3>
<p>Just install it as you would do normally on ubuntu:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo apt-get update
sudo apt-get install docker.io
sudo dockerd &
sudo chmod 666 /var/run/docker.sock
</code></pre></div></div>
<p>You may want to automate the last two commands, since every restart they need to run again, I don’t mind run the commands after every restart.</p>
<h4 id="recurrent-problems-on-wsl">Recurrent Problems on WSL</h4>
<p>Sometimes the computer sleeps and when it wakes up, you may need to restart the whole WSL. Well it is windows after all.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>wsl --shutdown
</code></pre></div></div>
<p>Another thing is that you may get is random permissions or logon not allowed failures when trying to restart it. So you need to restart the
vm-computing subsystem from windows:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># On PowerShell
# FIX the "Logon failure: the user has not been granted the requested logon type at this computer."
# after a restart on wsl
Get-Service vmcompute | Restart-Service
</code></pre></div></div>Windows is one of the historic and most used and installed O.S in the world. I had a high and lows relationship with it but still I always used it either at home or at work. On the past years my home computer is an Mac and I have being using linux mainly on vms/containers or remote. Now I am back working on daily basis on a windows machine and compared to my previous experience ( Windows 8 ), windows 11 is a totally different experience. Mainly on my opinion now due to the Windows Linux Subsystem.Docker2022-01-01T00:00:00-06:002022-01-01T00:00:00-06:00https://frederico.me/2022/01/01/docker<p>A nice docker Cheat Sheet</p>
<h2 id="docker-cheat-sheet">Docker Cheat Sheet</h2>
<h3 id="list-all-containers">List all containers</h3>
<p><code class="language-plaintext highlighter-rouge">docker container ls -a</code></p>
<h3 id="stop-all-containers">Stop all containers</h3>
<p><code class="language-plaintext highlighter-rouge">docker container stop $(docker container ls -aq)</code></p>
<h3 id="remove-all-stopped-containers">Remove all stopped containers</h3>
<p><code class="language-plaintext highlighter-rouge">docker container prune</code></p>
<h3 id="container-start-up-status">Container start-up status</h3>
<p><code class="language-plaintext highlighter-rouge">docker ps</code>
<code class="language-plaintext highlighter-rouge">docker inspect <container_name>|jq .[].HostConfig.RestartPolicy</code></p>
<h3 id="update-container-policy">Update container policy</h3>
<p><code class="language-plaintext highlighter-rouge">docker update --restart unless-stopped <container_name></code></p>
<h3 id="restart-docker-service-on-mac-os">Restart docker service on mac os</h3>
<p><code class="language-plaintext highlighter-rouge">osascript -e 'quit app "Docker"'</code>
<code class="language-plaintext highlighter-rouge">open -a Docker</code></p>A nice docker Cheat SheetGitHub Actions2022-01-01T00:00:00-06:002022-01-01T00:00:00-06:00https://frederico.me/2022/01/01/github_actions<p>Using github actions to deploy pages on github pages.</p>
<h1 id="github-actions">GitHub Actions</h1>
<h2 id="links">Links</h2>
<p><a href="https://docs.github.com/en/actions">Documentation</a></p>
<h3 id="casesusages">Cases/Usages</h3>
<h4 id="github-pages-cms">Github Pages CMS</h4>
<p>Generate the CMS data files for a static site. Just to keep the basic structure. When the repo that has the data is pushed just regenerate them.</p>
<p>Followed the <a href="https://docs.github.com/en/actions/quickstart">quickstart</a> and created a workflow for my personal website so it generates a basic list of links to display on the main page.</p>
<h5 id="stopping-automatic-page-generation">Stopping automatic page generation</h5>
<p>From: <a href="https://docs.github.com/en/pages/getting-started-with-github-pages/unpublishing-a-github-pages-site">Doc</a></p>
<p>Under your repository name, click Settings. In the “Code and automation” section of the sidebar, click Pages. Under “GitHub Pages”, use the Source drop-down menu and select None.</p>
<p><em>Since it is a github.io, it build from a branch</em>, so I changed the default work branch from the main to staging, so the github action will push the code to the main.</p>
<p>Testing on pushing tags</p>Using github actions to deploy pages on github pages.Tmux Random Notes2022-01-01T00:00:00-06:002022-01-01T00:00:00-06:00https://frederico.me/2022/01/01/Tmux<p>My actual favorite terminal multiplexer.</p>
<h2 id="tmux-cheat-sheet">Tmux Cheat Sheet:</h2>
<p>This is my favorite one, because the sessions commands are on the top :)</p>
<p><a href="https://tmuxcheatsheet.com/">tmux cheatsheet</a></p>My actual favorite terminal multiplexer.