Future-proof your tech-skills with Linux, Python, vim & git as I share with you the most timeless and love-worthy tools in tech, plus MOZ & my AI-friendly Free and Open Source SEO Software.


  1. If Jekyll supports TOML because both were made my Tom, and Jekyll is in GitHub, why is YAML now the bomb? (Fri May 12, 2023)
    Explore the power of words, keep a digital journal, and join me as I discuss the best SEO ever, memes, Dawkins' The Selfish Gene, Neil Stevenson's Snow Crash, Alice's Adventures in Wonderland, and the impact of Joel Spolsky and Jeff Atwood. Learn how YAML and Markdown let you create a single text-file for life, and how to use AI to your advantage in writing.
  2. Now The Github miklevin/yamlchop Repo has a README.md (Wed May 10, 2023)
    I'm an SME at MOZ and I'm sharing my best tricks for managing hundreds of lightweight blog posts using the yamlchop repo on Github. I'm using the yamlchop/chop.py tool to split them into individual files and OpenAI to generate headlines, meta descriptions, and keywords. With this system, I'm able to create previous and next arrows with the exact wording of my title tags in the links.
  3. Using RegEx in NeoVim to Format Markdown Quotes with 2 Trailing Spaces (Mon May 08, 2023)
    Learn how to use RegEx in NeoVim to format Markdown quotes with 2 trailing spaces. I describe the process of using Vim commands to back up my journal and the paradigm of writing and editing text with vi/vim/NeoVim. I also discuss my journey with the Midjourney AI, including the Microsoft Store installation, the paid account link, and the documentation link.
  4. Moving All OpenAI Completion Calls to One Function (Fri May 05, 2023)
    This post outlines the process of moving OpenAI Completion calls from many functions into to one function. It explains the reasoning behind the decision, the 80/20-rule solution, and the resulting changes. I completed the changes and is now ready to test the results.
  5. Rendering Un-Styled Jekyll Markdown Drafts for Pasting Into Google Docs (Thu May 04, 2023)
    Render un-styled Jekyll Markdown drafts for pasting into Google Docs with this easy-to-implement technique. Learn how to use the `published: false` directive, the `yaml_generator` function, and a stripped-down template named `plain.html` to generate drafts that can be pasted into Google Docs.
  6. Added Support for Arbitrary Jekyll YAML Fields (Thu May 04, 2023)
    Clean up your drafts folder and start using `_drafts` for actual drafts! Learn how to set the publish field to false in Jekyll Front Matter, adjust list comprehension to filter out unpublished posts, and preserve fields during the YAML-chopping step. Improve the core yamlchop function with a before and after example and see the result with the first release under the new code.
  7. 1 Text-file Journal For Life as Important as Formal Education (Mon May 01, 2023)
    I'm a 52-year-old technology generalist who has been exploring the noosphere, the world of ideas and creativity. I've been building up my internal tools, such as Linux, Python, vim and git, to create potential. I'm now combining YAML and Markdown to create a 1-text-file journaling system that is more flexible and intuitive than other solutions. I'm exploring the power of text, and how it can be transformed and used to create something meaningful.
  8. Write Python Function for Blog Previous Next Arrows (Sun Apr 30, 2023)
    I wrote a Python function to create blog navigation arrows. It takes the index position and length of a sequence, as well as a list of tuples containing hrefs and titles, and returns HTML for the prev/next arrows. This is now live on my category pages and I'm ready to add it to my Jekyll `_posts` pages too.
  9. Moved 1-long-page version of journal.md to `_drafts` (Sat Apr 29, 2023)
    I have moved the 1-long-page version of my journal.md file to the `_drafts` folder, allowing me to keep posts unpublished without giving them a yaml title. This is a great way to keep posts out of Github publishing space, while still allowing them to be sliced & diced.
  10. Disabling AI Auto-Publishing Anything (Wed Apr 26, 2023)
    I recently discovered a problem with Jekyll when trying to produce a list of the 10 most recent posts. To solve this, I used Python to control the list iteration and created a 5 x 20 grid of the top-100 categories on my website. After testing it in Jupyter, I successfully produced a table with the top 100 categories. I also recently switched from Windows 10 to Windows 11 and was able to transfer the 'soul' of the machine, including my system setup.
  11. Steve Jobs and Bill Gates having Amiga-envy (Tue Apr 25, 2023)
    I'm working on an AI-assisted YAMLesque journaling system and have made changes to my website using Jekyll, Liquid Template, and Python to create an open source SEO software. I'm almost finished and ready to release my post, so come and see the results of my project!
  12. OpenAI Category Pages Nearly Done (Fri Apr 21, 2023)
    I'm nearly finished creating category pages for my website using Jekyll's YAML-like front matter, and I'm using a Python-based YAML validator to make sure I don't make any mistakes. I'm also lemmatizing keyword groups and picking categories from a top-N list to limit the number of categories. I just need to make the category pages look better, have the correct titles and descriptions, and use the most common proper case.
  13. Starting a New Blogging System (create a title field under date to release) (Thu Apr 20, 2023)
    I'm starting a new journal entry system with the 80-long hyphen as a blog-slicer token and place-holder for the Liquid template system. I'm using Jekyll, an open source static site generator, and a macro system to ensure reverse-chronological entries.
  14. Fixing How OpenAI Couldn't Format Keywords Consistently (Mon Apr 17, 2023)
    I'm working to fix OpenAI keyword problems by writing code to recognize text that doesn't match the keyword format, handling commas inside quotes, and creating histograms. I've used this code to re-write the database of keywords for my blog, validate YAML in Python without Jekyll, and create category pages and navigation. I'm committed to developing a code that can consistently format keywords.
  15. Working on Alternate Headline Leads to Installing Jekyll Local (Sun Apr 16, 2023)
    I'm a 52 year old working for MOZ SEO Software, using AI to capture ideas, distill them, and turn them into something accessible for all. I'm also using AI to edit my videos and stand out from the 8 billion other people in the world. Recently, I've been writing a program to format blog posts by running a Linux git command that hits the OpenAI API for topics, meta descriptions and better headlines. You are looking at the results.
  16. Easier Illustration Technique I Seek May Be Mermaid (Tue Mar 14, 2023)
    I recently discovered Mermaid, a JavaScript-based diagramming and charting tool that makes illustration and diagramming for SEO purposes easier. It is free and open source software, and I found out that I can use it with Jekyll by installing the jekyll-mermaid plugin. I'm excited to start creating diagrams and flowcharts with Mermaid and Liquid template language!
  17. Planning Linux, Python, vim & git LPvg.org Website With The New Bing (Sun Mar 05, 2023)
    I'm Bing, a web search engine helping people find information and have engaging conversations. I'm proposing ways to realize the principle of universality, achieve the 2030 Agenda for Sustainable Development, and uphold the power of humanity. I'm discussing how to create a homepage for a website using GitHub Pages and how to create a contact page for a static website without running server code. I'm also explaining how to use FAQ structured data and proposing a way to use Jinja2 as a static site generator.
  18. Should I No Longer Hyde From a Jekyll Server? (Sat Dec 31, 2022)
    After months of hard work, I'm proud to say I'm improving my skills with Github Pages and Github Actions. Thanks to ChatGPT, I now know how to run Jekyll on my local Linux machine like Github Pages. Now, it's time to celebrate with a New Years party!
  19. Pipulate to be a FOSS SEO Awesome List Pre-Installed on Linux Server (Tue Dec 20, 2022)
    I'm working on a project called Pipulate, and I've been editing everything all at once to make day-to-day work easier. I'm using Jekyll as the static website generator, but I'm considering switching to Hugo. I've also made my logo into an animated gif and used it in the headline of my main site, and I'm documenting the fact that Pipulate is a full Linux server. Come check out my project and see what I'm up to!
  20. Monitoring Github Pages github.io System For Errors (Thu Aug 18, 2022)
    I'm creating a unique and awesome website experience for users, using a framework, slice.py, skite.py and more. I'm making pseudo-dynamic pages and working on the blog.md page, learning the workflow and making changes to output markdown into Github Pages Jekyll Liquid markdown `_includes` folder. After figuring it out, I'm ready to share my journey and the lessons I've learned.
  21. Reworking Site (Wed Aug 17, 2022)
    I'm working on my website today, using SimpleCSS for a new look. I'm using Linux, Python, Vim, Git and Jekyll skills to create a static page generator system. Testing out the Jekyll include system to create secondary navigation buttons, and considering externalizing the primary nav. Plus, two headers and lowercase versions of categories for my blogging. Come and join me on my journey!
  22. Choosing Best CSS Framework For Github Pages and Jekyll (Mon Aug 15, 2022)
    I'm looking for a CSS framework that provides a modern look, is search-friendly, has been around the longest, and allows me to produce clean, vanilla HTML code. After considering Bootstrap, Foundation, Bulma, Semantic, and UIkit, I decided to go with Foundation because it doesn't require btn classes. I activated lpvg.org on Github pages, created a `_layouts` folder and default.html file, and reminded myself to take baby steps.
  23. Fixing Broken Jekyll Rouge Code Color Coding in Github Pages Theme (Sat Jul 30, 2022)
    I recently changed the theme of my website, MikeLev.in, and had to make some tweaks to get the programming code color-coding working properly. After some research, I found the .css file I needed and made one entry in my style.css file. With these changes, the fancy color-coding is now working on my website.
  24. Every Little Thing gets done (ELTgd) Leads to More Epic Days (Mon Jun 20, 2022)
    On Juneteenth of 2022, I had a productive day full of accomplishment and pleasure. I wrote a difficult letter to my ex, created a sub-arrow system for my Jekyll and GitHub Pages static site generator, enjoyed a hot bath and a meal at the local diner, interacted with my YouTube audience, and created one of my best videos ever. I was reminded that life is what we make of it, and that everything after a certain point is of my own choosing.
  25. Imagining vim Macro That Makes Markdown Image Code (Wed May 18, 2022)
    As an Information Age professional, I use vim as my text editor to create image tags from keyworded filenames for my web publishing system based on Github's Github Pages Jekyll static site generator. I use proper-case for the web accessible alt-text area, which is beneficial for both the visually impaired and search engines. With vim, I can easily name my files with keywords and tag my images for search with alt-text. Learn how I use vim to make web publishing easier.
  26. Editing 15 Homepages at Once in vim (Thu May 05, 2022)
    I'm editing 15 homepages at once using vim, creating necessary files and folders, and writing a configuration file for a Jekyll website. This configuration file includes a list of plugins, a theme name, an author, a permalink, a Google Analytics ID, a title, a description, and an apex - all saved in the apex directory of the website. Come read my blog post to learn more!
  27. Of Green Arrows and Red Armor (Thu May 05, 2022)
    As a web publisher optimizing content for search engines, I chose Vim for its utility over Emacs and am competing with the younguns using proprietary IDEs. I'm editing 15 homepages at once with Jekyll, and wondering why everyone doesn't do the same. I'm a lawyer, so I'm always prepared for a fight. Join me in my journey as I explore the potential pitfalls of using a macro system and discover why Jekyll is the best choice for editing multiple homepages.
  28. Path(f'{\_path}').mkdir(parents=True, exist_ok=True) (Wed May 04, 2022)
    I'm up early, focused on operation ELTgd, and have been able to put my new blog publishing system to use. I've written scripts in Python and Bash to create directories and config files, and to commit the changes to git. I'm now editing 19 files in vim to make sure a bunch of folders exist on all 15 sites. Join me as I detail my release process and the steps I take to ensure everything runs smoothly.
  29. Templatizing Google Analytics MEASUREMENT ID in Jekyll Github Pages (Mon May 02, 2022)
    I have developed a system using Jekyll and Liquid template language to templatize the Google Analytics MEASUREMENT ID for my websites. To keep track of them, I wrote Python scripts to parse through the lines in sites.txt and create a `_config.yml` file for each website. With this system, I have a master list of my sites and a quick way to update the information.
  30. Sharpening My Prev/Next Arrows (Sun May 01, 2022)
    I'm proud of the effort I put into creating the formatting of the previous/next arrows on my website. I used style.scss, post.html, a non-breaking-space trick, and flexbox wrangling to make them look elegant. I'm still learning how to neutralize and escape Jekyll blog post Liquid directives, but I'm excited to share the results of my work. Click to read more!
  31. Making YouTube Embeds 100% Width But Fixed Aspect Ratio Height (Sun May 01, 2022)
    I'm in the process of creating a series of pages with a slicer-token, date, video title, video description, and YouTube embed code, but before I can do that, I need to complete some housekeeping tasks with Jekyll. I've already adjusted the YouTube embed code to be 100% width, but now I'm working on fixing the height issue. After some research, I have found a solution that should do the trick.
  32. Writing a Bash Loop Script for Jekyll (Sun May 01, 2022)
    I wrote a Bash loop script for Jekyll to edit 10 sites at once, centralizing the identical files. I tested the script by adding line-height to style.scss, and it was successful. I then pushed the changes to all of my sites using git commands, and I'm excited to share the results with you!
  33. Adding Prev/Next Arrows to Github Pages Jekyll Blog Posts (Sat Apr 30, 2022)
    I recently created a blog slicing and dicing system and am adding previous/next links to my blog posts. To do this, I'm directly inserting them into the markdown files and using Github Pages Hacker Theme page to grab the raw code for the post.html file. I checked to make sure Google Analytics tag manager code was still being applied and copied the post.html file into the `_layouts` folder of each of my sites. Come read more about my blog slicing and dicing system!
  34. Moved WhatsaMetaFor.io Blog Content Here (Sat Apr 30, 2022)
    I'm excited to share that I've moved my blog to MikeLev.in, a better platform for hosting my blog. I'm also learning Jekyll and Liquid, two powerful tools that will give me more control over my site. Come check out my blog and see how I'm using them!
  35. Submerging A Migrated WordPress Site (Sat Apr 30, 2022)
    I'm in the midst of migrating my WordPress blog to Jekyll and am running into a few issues. I'm moving the index.md file, making a subfolder, and renaming the file to index.md. While I've brought my old homepage back to life, I'm now dealing with broken picture links that I must fix. Follow my journey as I work through this process.
  36. Massaging 10 Sites Into Shape At Once (Fri Apr 29, 2022)
    I recently optimized my Jekyll blog post URLs by removing stopwords, and I wanted to roll out the changes across all my sites. To make the process faster, I created a script that I could execute from Linux on Windows. With this script, I was able to quickly and easily make the same changes across all my sites. Read more to learn how I did it.
  37. Removing Stopwords From Jekyll Blog URLs (Fri Apr 29, 2022)
    I recently completed a 15-year project, blogslicer, as part of my ELPGD (every little project gets done) mentality. I used Linux, Python, vim, and git to create the program, and now I'm incorporating a feature to remove stopwords from Jekyll blog URLs using the Python library, nltk. I'm writing code to create a blog post with a given title, slug, and path, which will generate a journal.md file with a table
  38. Adding Command-Line Argument Support to Jupyter Notebook (Thu Apr 28, 2022)
    I have added command-line argument support to my Jupyter Notebook using the Python standard library argparse. I have coded up a .py file and tested it successfully, and am now transplanting it into blogslicer, creating functions for displaying headings, and using dateutil and slugify modules. I wrote a script to slice and dice my blog posts into the correct format for Jekyll and incorporated it into my regular publishing release script. I made a change to my world
  39. Creating Blog Index Page for Jekyll (Wed Apr 27, 2022)
    I wrote a script to generate an index page for a blog using Jekyll. It reads a journal file and creates a post for each entry, complete with a title and slug. It then assembles an index page with links to each post, making it easier for readers to find what they're looking for. Click through to explore my blog!
  40. Slicing & Dicing Single File to Jekyll Blog Posts (Mon Apr 25, 2022)
    I recently livestreamed a project where I was slicing and dicing a single long journal file into separate files. I used debugging messages and headlines to provide a hierarchy, pre-processed titles into slugs, and added frontmatter and `_config.yml` file. Join me as I share my journey of refining the project and the challenges I faced along the way.
  41. How To Control URLs and Links in Jekyll (Sat Apr 23, 2022)
    I'm blogging using Jekyll and Github Pages and have just made some changes to the theme. I'm now following a DigitalOcean tutorial to control URLs and links in Jekyll - hoping for successful changes to propagate soon! Read my blog post to find out how I did it.
  42. Why Programming Is Easy But Math Is Hard (Sat Apr 23, 2022)
    As someone who has struggled with math since high school, I have used Python and other tools to make it easier for me. I recently created my first Jekyll blog post and am now working on adding headlines. I'm excited to share my journey and hope it helps other people who are also struggling with math. Come read my blog post and join me on this journey!
  43. The Importance of Digital Housekeeping (Fri Apr 15, 2022)
    I'm trying to get my mlseo project up and running, and I recently had a discussion with my wife about the importance of digital housekeeping. I'm taking steps to reduce daily stress and increase happiness, like creating a github folder, deleting unnecessary items, and taking advantage of AeroSnap. I'm also trying to upgrade my JupyterLab and wondering if the desktop version will be upgraded too. I'm currently on Jupyter 3.3.2-2, but
  44. Struggling Through Github Pages Startup Process (Thu Aug 26, 2021)
    I just finished setting up a new website on Github Pages, after a long and complicated process of setting up DNS, Git repositories, Jekyll templating, and more. I'm happy with the result, but now it's time to get to work - so I'll have to wait a couple days to enjoy the fruits of my labor.
  45. Adding Google Analytics to Github.io Page with Jekyll (Fri Aug 20, 2021)
    I recently installed Google Analytics on my Github.io Page with Jekyll, and I'm so glad I took the time to understand the Liquid system and what was going on underneath. After a few moments of research, I was able to successfully install Google Analytics and now I'm ready to move on to the next step. Read my blog post to find out how I did it!
  46. Make More Use of github.io for Blogging (Thu Aug 5, 2021)
    MikeLevinSEO shares his strategy for publishing a book, including his plan to use Jekyll and switch his domains from GoDaddy to NameCheap. He explains how he prioritizes his work using three metaphors, and shares his plan to use mikelevinseo.com as his domain name. Follow MikeLevinSEO's journey as he embarks on his book publishing adventure!