{
    "version": "https://jsonfeed.org/version/1.1",
    "title": "https://www.czepeda.com \u2014 Posts",
    "home_page_url": "https://czepeda.com",
    "feed_url": "https://czepeda.com/posts",    
    "description": "All Posts RSS feed.",
    "authors": { 
        "name": "Carlos Alberto Zepeda",
        "url": "https://czepeda.com"
    },
    "language": "en-US",
        "items": [
            
                    
                {
"id": "https://www.czepeda.com/posts/czepeda-com-in-2024",
"url": "https://www.czepeda.com/posts/czepeda-com-in-2024",
"title": "czepeda.com in 2024",
"content_html": "<p>First post on my brand new website, I made it myself!<\/p>\n<p>I made the website using my long and very unused license of Statamic. Statamic is a packaged CMS making use of Laravel PHP framework. Laravel handles the backend and Statamic takes care of the frontend. My favorite thing about Statamic is the Antlers templating engine. The syntax is very easy to understand and to work with when passing formatting to modify the HTML.<\/p>\n<p>Regarding hosting, I'm using Dreamhost. It's pretty affordable and pretty cool in regards with what you can do on the server. I'm able to control PHP versions, install dependencies like Composer to make it easier to work with the Laravel framework. I was pretty close to hosting it on Digital Ocean but the path of least resistence always wins. Signing up in Dreamhost and the pricing made the decision quick.<\/p>\n<p>The front of the front-end technology stack, just plain old HTML and CSS. JavaScript not needed yet. At minimum I'm planning to make use of the posts JSON feeds using the JavaScript fetch API. I'd like to push all posts to my Mastodon feed. Statamic does come with tailwindcss ready to go in the starter kit they provide but I like to write my own CSS. I try my best to keep things very minimal. When you use front-end frameworks, you get more than you'll ever need to use.<\/p>\n<p>My main use for this website is to document and share stuff that I find interesting. I usually share this website with my close friends and family. But I'm also making use of it to share &quot;work&quot; or previous work stuff because right now I need to get a job. Took a break from work and it's time to get back to it!<\/p>\n",
"date_published": "Tue, 30 Jan 2024 00:27:22 +0000",
"tags": "blog"
},
                    
                {
"id": "https://www.czepeda.com/posts/my-favorite-design-podcast-the-follow-up",
"url": "https://www.czepeda.com/posts/my-favorite-design-podcast-the-follow-up",
"title": "My favorite Design podcast, The Follow-Up",
"content_html": "<p>The Follow-Up is my favorite design podcast. Every single episode is gold! The hosts, Armin and Bryony, husband and wife know their brand identities! The questions they ask are right at the bullseye every single time. It's as if they were doing journalism but pointing directly to branding projects. They're fantastic! So far <a href=\"https:\/\/www.underconsideration.com\/brandnew\/archives\/thefollowup\">Bolt episode<\/a> has been my favorite of all favorite episodes. Which is hard to choose because I can and have replayed espisodes because I always finish being inspired. ALSO, this podcase use to be available only to members until this month they decided to set it free. Good for them, hopefully this results in more work for them and better branding out in the world!<\/p>\n",
"date_published": "Wed, 31 Jan 2024 11:57:40 +0000",
"tags": "Links"
},
                    
                {
"id": "https://www.czepeda.com/posts/messenger-utrgv-edu-redesign",
"url": "https://www.czepeda.com/posts/messenger-utrgv-edu-redesign",
"title": "messenger.utrgv.edu redesign",
"content_html": "<p>Early 2023 I redesigned the universities events web application and university email called Messenger. This is the daily campus distributed email. Faculty, students and staff recieve this email every morning. The goal is to inform everyone of the university related events going on around campus.<\/p>\n<p>I worked with marketing department who provided the initial drafts of the desktop and email designs of Messenger. My job was to implement those designs into our web application. The web application used Angular to build out the website and email template. I wrote the CSS and HTML into the Angular template. This template would build out to the web application. The other Angular template build was for the email that gets sent to all university faculty, students and staff inboxes. I also write the HTML and CSS for that template.<\/p>\n<p>Other work I provided was helping troubleshoot some logic in Angular to detect the state of the user type in order to output the correct data depending if the user was a faculty member, student or staff.<\/p>\n<p>Related announcements regarding the new UTRGV Messenger.<\/p>\n<ul>\n<li><a href=\"https:\/\/messenger.utrgv.edu\/#\/bulletin\/56334\">Introducing: Messenger 2.0!<\/a><\/li>\n<li><a href=\"https:\/\/messenger.utrgv.edu\/#\/bulletin\/56332\">COMING SOON: A Whole NEW Messenger Experience!<\/a><\/li>\n<\/ul>\n",
"date_published": "Wed, 31 Jan 2024 11:58:00 +0000",
"tags": "Projects"
},
                    
                {
"id": "https://www.czepeda.com/posts/utrgv-parking-spaces-available-widget",
"url": "https://www.czepeda.com/posts/utrgv-parking-spaces-available-widget",
"title": "UTRGV Parking Spaces Available Widget",
"content_html": "<p>This was a fun project that brought a lot of relief to students looking for parking spots in the different parking lots around the UTRGV campus. I worked with the Parking department to find a solution using the hardware data they had installed in the parking lots.<\/p>\n<p>My coworker Chris converted that data into a JSON endpoint that I could then use with the <a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Fetch_API\/Using_Fetch\">fetch API<\/a>. The fetch API is the modern replacement of XMLHttpRequest. No framework was needed for this. I wrote plain JavaScript. Fetch API is pretty simple to work with. The CSS and HTML was also plain and simple. No need to get fancy. Of course it was responsive. The department wanted to place the widgets all over their website and on the universities iOS and Android applications.<\/p>\n<p>First I made the request to store the JSON data into <code>getLots()<\/code>. Also note that the fetch API is promise-based. This gives us the flexibility to present the completion of the operation or failure and how to handle each.<\/p>\n<pre><code>async function getLots() {\n    let url = '...\/api\/parking';\n    try {\n        let response = await fetch(url);\n        return await response.json();\n    } catch (error) {\n        console.log(error);\n    }\n}\n<\/code><\/pre>\n<p>Then its formating the JSON data into HTML. I made use of template literals to make it easier to write the HTML as I normally would and insert the expressions in their respective places.<\/p>\n<pre><code>async function renderLots() {\n  let parkingLots = await getLots();\n  let html = '';\n\n\tparkingLots.forEach(parkingLot =&gt; {\n    \n    const lots = `\n    \t\t&lt;div class=&quot;parking_lot ${parkingLot.location_name}&quot;&gt;\n            \t&lt;div&gt;${parkingLot.location_name} - Zone #&lt;\/div&gt;\n                &lt;div&gt;${parkingLot.location_addres}&lt;\/div&gt;\n                &lt;div&gt;${parkingLot.total_spaces}&lt;\/div&gt;\n                ... \/\/ grab the rest of the items.\n          \t&lt;\/div&gt;\n            `;\n            html += lots;\n    const container = document.querySelector('.parkingWidget');\n    container.innnerHTML = html;\n    }\n  )}\n    renderLots();       \n<\/code><\/pre>\n<p>Finally the HTML selector to insert the parking spaces into.<\/p>\n<pre><code>&lt;div class=&quot;parkingWidget&quot;&gt;...&lt;\/div&gt;\n<\/code><\/pre>\n",
"date_published": "Sat, 03 Feb 2024 00:36:07 +0000",
"tags": "Projects, javascript"
},
                    
                {
"id": "https://www.czepeda.com/posts/the-code-breaker-jennifer-doudna-gene-editing-and-the-future-of-the-human-race",
"url": "https://www.czepeda.com/posts/the-code-breaker-jennifer-doudna-gene-editing-and-the-future-of-the-human-race",
"title": "The Code Breaker: Jennifer Doudna, Gene Editing, and the Future of the Human Race",
"content_html": "<p>Very insightful view into the world of biochemistry, collaboration, competition and the awful continuation of patents.<\/p>\n<p>This book presented me the perspective of Jennifer Doudna and her history on how she got to where she ended getting awarded the Nobel Prize. Along the way were introduced to her influences and inspirations that led her to the journey to discovering CRISPR.<\/p>\n<p>The biggest thing I got out of the book was her partnerships with her colleagues and the competition she faced along the way. I knew the existence of competition in this field of scientific inventions, but this book definitely put me at the front row viewing on how it all transpires.<\/p>\n<p>One last thing is a lot of teasing I suppose of what's to come out of this invention (CRISPR) and some of the ideas being worked on now, like flu detection and curing of diseases. Of course the controversial and moral decision of what's to be of human gene editing. There was no clear answer as to what is to be done. The story of <a href=\"https:\/\/www.cnn.com\/2023\/07\/03\/china\/he-jiankui-gene-editing-proposal-china-intl-hnk-scn\/index.html\">He Jiankui<\/a> and all the scandal that came with it.<\/p>\n<p>In conclusion this book kept me very interested all the way through. But it definitely leaves you wanting to know more about CRISPR and what is being worked on now. I'd recommend this book definitely to students. It really presents an entire journey of a scientist, from beginning of studies to winning the Nobel Prize. That's a pretty nice observation to be able to look into.<\/p>\n",
"date_published": "Sun, 04 Feb 2024 00:06:58 +0000",
"tags": "Books"
},
                    
                {
"id": "https://www.czepeda.com/posts/json-to-yaml-to-markdown-file-shell-script",
"url": "https://www.czepeda.com/posts/json-to-yaml-to-markdown-file-shell-script",
"title": "JSON to YAML to Markdown file Shell Script",
"content_html": "<p>I currently have a <a href=\"https:\/\/pinboard.in\/u:cazepeda\">pinboard.in<\/a> account which will expire soon. I've had that account since the formation of pinboard back in 2008. It's been a great service but now that I've got my website going again. I thought I'd start importing all those bookmarks into my website.<\/p>\n<p>Pinboard.in provides exporting the bookmarks in JSON, XML and HTML. If I want to import it into Statamic I'd need to convert that JSON data into YAML data and then make that document into Markdown. Luckily, JSON and YAML save their data in a key\/value pair structure, e.g. <code>key: value<\/code>. For me this was a plus because my first thought was create a shell script to convert each JSON object into a separate YAML\/Markdown file. Each Pinboard.in bookmark is saved into it a JSON object like so.<\/p>\n<pre><code>[\n    {\n        &quot;href&quot;: &quot;https:\\\/\\\/teamrv-mvp.sos.texas.gov\\\/MVP\\\/back2HomePage.do&quot;,\n        &quot;description&quot;: &quot;My Voter Portal&quot;,\n        &quot;extended&quot;: &quot;&quot;,\n        &quot;meta&quot;: &quot;f37ee28f61e35f5db09c653a4d3c82ac&quot;,\n        &quot;hash&quot;: &quot;99aba043d80c1b0765802fd7e6284a86&quot;,\n        &quot;time&quot;: &quot;2024-01-31T16:18:56Z&quot;,\n        &quot;shared&quot;: &quot;yes&quot;,\n        &quot;toread&quot;: &quot;no&quot;,\n        &quot;tags&quot;: &quot;texas voting&quot;\n    },\n    {\n        &quot;href&quot;: &quot;https:\\\/\\\/publicdomainreview.org\\\/collection\\\/flammarion-engraving\\\/&quot;,\n        &quot;description&quot;: &quot;Wheels Within Wheels: The \\u201cFlammarion Engraving\\u201d (ca. 1888) \\u2013 The Public Domain Review&quot;,\n        &quot;extended&quot;: &quot;&quot;,\n        &quot;meta&quot;: &quot;4b9ed2dd7330962794ca45fe901fba72&quot;,\n        &quot;hash&quot;: &quot;b864adf2c9eb1f92ba1ad8aa43b23d8e&quot;,\n        &quot;time&quot;: &quot;2024-01-30T06:22:42Z&quot;,\n        &quot;shared&quot;: &quot;yes&quot;,\n        &quot;toread&quot;: &quot;no&quot;,\n        &quot;tags&quot;: &quot;art history&quot;\n    },\n    {\n        &quot;href&quot;: &quot;https:\\\/\\\/www.contemporist.com\\\/an-exterior-of-vertical-wood-siding-helps-this-house-blend-into-the-surrounding-forest\\\/&quot;,\n        &quot;description&quot;: &quot;An Exterior Of Vertical Wood Siding Helps This House Blend Into The Surrounding Forest&quot;,\n        &quot;extended&quot;: &quot;&quot;,\n        &quot;meta&quot;: &quot;188364b64f99012a1ab86a4901bb2452&quot;,\n        &quot;hash&quot;: &quot;b3e724498141b8426c05ae0933b98520&quot;,\n        &quot;time&quot;: &quot;2024-01-26T15:21:10Z&quot;,\n        &quot;shared&quot;: &quot;yes&quot;,\n        &quot;toread&quot;: &quot;no&quot;,\n        &quot;tags&quot;: &quot;home&quot;\n    }\n]\n<\/code><\/pre>\n<p>First thing I tackled was extracting each object from JSON and convert it to a Markdown file. I'm using <a href=\"https:\/\/jqlang.github.io\/jq\/\">jq command-line JSON processor<\/a> to format the data as needed. This part of the script checks first if jq is installed, find the <code>.json<\/code> file to work with, create a directory to create the markdown files into, use the <code>.time<\/code> and <code>.description<\/code> key property to use for naming the markdown file. I also had to format the JSON key\/value pair into a YAML structure. This was easy enough with exception to the <code>tags<\/code> property to list the <code>value<\/code>'s in a listed structure. I tackled this in the second part of the shell script. Originally I created all these parts of the shell script in separate scripts in order to keep testing simple and easy to manage.<\/p>\n<pre><code>#!\/bin\/bash\n\n# CREATE MARKDOWN FILES FROM JSON\n\n# Check if jq is installed\nif ! command -v jq &amp;&gt; \/dev\/null; then\n    echo &quot;Please install jq before running this script.&quot;\n    exit 1\nfi\n\n# Input JSON file\ninput_json=&quot;\/path\/to\/file\/test.json&quot;\n\n# Output directory for Markdown files\noutput_dir=&quot;output_markdown&quot;\n\n# Create output directory if it doesn't exist\nmkdir -p &quot;$output_dir&quot;\n\n# Extract each object from JSON and convert to Markdown\njq -c '.[]' &quot;$input_json&quot; | while read -r obj; do\n    # Generate a unique filename based on some property of the JSON object\n    # filename=&quot;$output_dir\/$(echo &quot;$obj&quot; | jq -r '&quot;\\(.time).\\(.description)&quot;').md&quot;\n    filename=&quot;$output_dir\/$(echo &quot;$obj&quot; | jq -r '&quot;\\(.time|tostring|fromdate|strftime(&quot;%Y-%m-%d&quot;)).\\(.description | ascii_downcase | gsub(&quot;\\&quot;&quot;; &quot;\\&quot;&quot;))&quot; | gsub(&quot; &quot;; &quot;-&quot;) | gsub(&quot;\\\\(&quot;; &quot;&quot;) | gsub(&quot;\\\\)&quot;; &quot;&quot;) | gsub(&quot;\\\\\\&quot;&quot;; &quot;&quot;) | gsub(&quot;\u201c&quot;; &quot;&quot;) | gsub(&quot;\u201d&quot;; &quot;&quot;) | gsub(&quot;:&quot;; &quot;&quot;)').md&quot;\n    \n    # Convert JSON object to Markdown and save it to the file\n    echo -e &quot;$obj&quot; | jq -r '[&quot;---&quot;] + (to_entries | map(&quot;\\(.key): \\(.value)&quot;)) + [&quot;---&quot;] | join(&quot;\\n&quot;)' &gt; &quot;$filename&quot;\n\n    echo &quot;Converted and saved to: $filename&quot;\ndone\n\n# END CREATE MARKDOWN FILES FROM JSON\n<\/code><\/pre>\n<p>This is the shell script that handled converting the <code>tags<\/code> property <code>value<\/code>'s to be listed. The reason I needed it to be listed was because in Statamic creates an index page listing all posts related to <code>history<\/code> or any tag that gets created out of the <code>tags<\/code> key property <code>value<\/code>.<\/p>\n<p>This part of the script will create a variable for the directory where all the markdown files got created. Create a variable for a space that will be used to detect the different tags values. Check if the directory exists. Then go through each markdown file and format it in a YAML structure. It will detect the <code>tags<\/code> key property and detect the <code>value<\/code>s and list them.<\/p>\n<pre><code># FORMAT MARKDOWN FILES\n\n# Directory containing Markdown files\ndirectory=&quot;\/path\/to\/directory\/output_markdown&quot;\n\n# Separator used in the tags field\ntags_separator=&quot; &quot;\n\n# Check if the directory exists\nif [ ! -d &quot;$directory&quot; ]; then\n    echo &quot;Directory not found: $directory&quot;\n    exit 1\nfi\n\n# Process each Markdown file in the directory\nfor file in &quot;$directory&quot;\/*.md; do\n    # Check if the file is a regular file\n    if [ -f &quot;$file&quot; ]; then\n        # Process the Markdown file and create a temporary file\n        temp_file=$(mktemp)\n        awk -v sep=&quot;$tags_separator&quot; -F': ' '            \n            $1 == &quot;tags&quot; {\n                # Convert the values into a list format\n                printf &quot;%s:\\n&quot;, $1\n                n = split($2, tags, sep)\n                for (i = 1; i &lt;= n; i++) {\n                    printf &quot; - %s\\n&quot;, tags[i]\n                }\n            }\n            $1 != &quot;tags&quot; {            \n                # For other lines, print as is\n                print\n            }\n        ' &quot;$file&quot; &gt; &quot;$temp_file&quot;\n\n        # Replace the original file with the updated content\n        mv &quot;$temp_file&quot; &quot;$file&quot;\n        echo &quot;Updated: $file&quot;\n    fi\ndone\n\n# END FORMAT MARKDOWN FILES\n<\/code><\/pre>\n<p>Final part of this shell script was optional. But I wanted to wrap specific <code>key<\/code> property <code>value<\/code>s in single quotes. First I define what values I want to target. Created a directory variable to locate the markdown files. Loop through the <code>key<\/code>'s and append the single quotes to the <code>value<\/code>'s that are specified in the <code>target_keys<\/code> variable.<\/p>\n<pre><code># ADD SINGLE TICKS TO SPECIFIED KEYS\n\n# Specify the keys for which values should be enclosed in single quotes\ntarget_keys=(&quot;href&quot; &quot;description&quot; &quot;time&quot;)\n\n# Directory containing Markdown-like files\ndirectory=&quot;\/path\/to\/directory\/output_markdown&quot;\n\n# Loop through each file in the directory\nfor file in &quot;$directory&quot;\/*.md; do\n    # Check if the file is a regular file\n    if [ -f &quot;$file&quot; ]; then\n        # Loop through target keys and add single quotes around values\n        for key in &quot;${target_keys[@]}&quot;; do\n            sed -E &quot;s\/^$key: (.*)$\/$key: '\\1'\/&quot; &quot;$file&quot; &gt; &quot;$file.temp&quot;\n            mv &quot;$file.temp&quot; &quot;$file&quot;\n        done\n\n        echo &quot;Single quotes added to specified keys in: $file&quot;\n    fi\ndone\n\necho &quot;Update complete.&quot;\n\n# END ADD SINGLE TICKS TO SPECIFIED KEYS\n<\/code><\/pre>\n<p>Last thing to do as you should with all shell scripts that you run, make it writeable! Do this by running the following code: <code>chmod +x json-to-yaml-to-markdown-file.sh<\/code>. You can check that is wrote the command as specified by running the following command to show the file permissions, you'll know its writeable by the <code>x<\/code> a the last part of the permissions: <code>ls -la<\/code>. e.g. <code>-rwxr-xr-x  1 computerName  staff 996 Feb 7 12:58 json-to-yaml-to-markdown-file.sh<\/code>.<\/p>\n<p>Once its writeable, run the script and watch the magic happen: <code>.\/json-to-yaml-to-markdown-file.sh<\/code>.<\/p>\n",
"date_published": "Fri, 09 Feb 2024 01:43:16 +0000",
"tags": "Projects, blog"
},
                    
                {
"id": "https://www.czepeda.com/posts/escaping-a-single-quote-using-jq-gsub-method-and-a-unicode-escape",
"url": "https://www.czepeda.com/posts/escaping-a-single-quote-using-jq-gsub-method-and-a-unicode-escape",
"title": "Escaping a single quote using jq gsub method and a unicode escape",
"content_html": "<p>I spent way to much time asking ChatGPT 3.5 and always reliable Google search how to escape a single quote using <code>jq<\/code>, <code>gsub()<\/code> method.<\/p>\n<p>Unicode Escape for the win: <code>\\u0027<\/code>!<\/p>\n<p>This is a short piece of my code to specifically show how the Unicode Escape works:<\/p>\n<p><code>gsub(&quot;\\u0027&quot;; &quot;&quot;)<\/code><\/p>\n<p>Well that's how I was able to solve this prickly issue!<\/p>\n",
"date_published": "Fri, 16 Feb 2024 01:01:17 +0000",
"tags": "jq, shell-script"
},
                    
                {
"id": "https://www.czepeda.com/posts/nngroup-podcast-episode-36-ai-ux-innovations-challenges-and-impact",
"url": "https://www.czepeda.com/posts/nngroup-podcast-episode-36-ai-ux-innovations-challenges-and-impact",
"title": "NNgroup Podcast Episode 36. AI &amp; UX: Innovations, Challenges, and Impact",
"content_html": "<p>The rarity to find actual substance and value about Artificial Intelligence (&quot;AI&quot;)! Today I added episode 36 from the <a href=\"https:\/\/www.youtube.com\/@NNgroup\">NNgroup YouTube channel<\/a> to my Watch Later playlist. Usually when I see ANYTHING with the word &quot;AI&quot; I tread carefully. Mostly because I run into articles talking about a magical computer doing super duper things for humans and scarying the crap out of them. Rather than what it actually is, computers learning based on databases with programs to guide it.<\/p>\n<p>Anyways, I don't want to rant about the hyperbole part of &quot;AI&quot;. I want to document this great episode on how the company <a href=\"https:\/\/www.perplexity.ai\">Perplexity.ai<\/a> is going about their business with &quot;AI&quot;. Throw that in with the wizards of UX, you get a great conversation and questions to learn from.<\/p>\n",
"date_published": "Sat, 17 Feb 2024 01:16:00 +0000",
"tags": "Links"
},
                    
                {
"id": "https://www.czepeda.com/posts/xb-maintenance-mass-air-flow-sensor-spark-plugs-and-engine-code-p0301-issues",
"url": "https://www.czepeda.com/posts/xb-maintenance-mass-air-flow-sensor-spark-plugs-and-engine-code-p0301-issues",
"title": "xB - Maintenance: Mass Air flow Sensor, Spark Plugs and Engine Code P0301 Issues",
"content_html": "<p>It all started with high idling revs. I recall seeing on YouTube as any modern respectable self-taught wannabe mechanic does informs themselves. I saw someone say that cleaning your Mass Air flow Sensor sometimes does the trick on fixing it.<\/p>\n<p>First thing I do is connect my <a href=\"https:\/\/a.co\/d\/e3xMWmv\">BLCKTEC Diagnostic Tool<\/a> (I bought it at $28.99 August 2023) and see what magical engine codes this produces. <a href=\"https:\/\/www.autozone.com\/diy\/diagnostic-trouble-codes\/p0301-cylinder-1-misfire\">P0301<\/a> is what I get. Along with a brief description: &quot;Cylinder 1 Misfire Detected DTC Severity 2 of 3: This fault may pose damage to components and should be repaired as soon as possible&quot;. Great! Cylinder 1 is where the first of four spark plugs is located.<\/p>\n<figure>\n<img src=\"\/assets\/blog\/xb\/p0301-engine-code.webp\" alt=\"BLCKTEC Diagnostic Tool\" \/>\n  <figcaption>BLCKTEC Diagnostic Tool<\/figcaption>\n<\/figure>\n<p>I start by checking the MAF sensor and it was a little bit dirty but not much to really be causing any issues. I had previously purchased <a href=\"https:\/\/www.oreillyauto.com\/detail\/c\/crc-industries\/crc-industries-mass-air-flow-sensor-cleaner\/crc0\/05110\/v\/a\/18869\/automotive-van-2006-scion-xb\">Mass Air Flow Sensor Cleaner<\/a> ($12.49) to do this task but waited until today! The high idling revs is still doing its thing. I clear the engine codes on the diagnostic tool. Rerun and same response.<\/p>\n<video controls controlslist=\"nodownload noremoteplayback noplaybackrate\" width=\"100%\" title=\"Scion xB 2006 Mass Air Flow Sensor\">\n  <source src=\"\/assets\/blog\/xb\/scion-xb-2006-maf-sensor.mp4\" type=\"video\/mp4\" \/>\n  <p>Scion xB 2006 Mass Air Flow Sensor.<\/p>\n  <meta itemprop=\"name\" content=\"Scion xB 2006 Mass Air Flow Sensor\">\n  <meta itemprop=\"description\" content=\"Showing off a minimal dirty scion xb 2006 mass air flow sensor.\">\n<\/video>\n<p>\u261d\ud83c\udffc The not so dirty MAF sensor...<\/p>\n<p>Next, replace the <a href=\"https:\/\/www.oreillyauto.com\/detail\/c\/g-power-platinum\/ignition---tune-up\/spark-plugs\/b14eb31b13d7\/ngk-g-power-platinum-plug-number-bkr5egp-spark-plug\/ngk2\/7090\/v\/a\/18869\/automotive-van-2006-scion-xb\">spark plugs<\/a> (4 @ 6.49 each, $27.95). I also bought some <a href=\"https:\/\/www.oreillyauto.com\/detail\/c\/versachem\/oil--chemicals---fluids\/grease---lube\/dielectric-grease\/47cb50ae2109\/versachem-dielectric-connector-grease\/ver0\/15311\/v\/a\/18869\/automotive-van-2006-scion-xb\">Dielectric Grease<\/a> ($1.99) and two little ketchup size packets of <a href=\"https:\/\/www.oreillyauto.com\/detail\/c\/american-grease-stick\/american-grease-stick-anti-seize\/ags0\/tmp\/v\/a\/18869\/automotive-van-2006-scion-xb\">Anti Seize<\/a> ($1.99 each, $3.98). Yes, I did indeed need to replace them either way. This did nothing to fix the high idling revs. When I went to buy the new spark plugs at O'Reilly's I was talking to the employee who was ringing me up for the spark plugs and he mentioned I should try switching the ignition coils that connects to the spark plugs. It was a great idea that I obviously didn't think about. So after replacing the spark plugs I once again clear the engine codes on the diagnostic tool and rerun it. Same response. But now I do what the O'Reilly employee advised, I change the ignition coil 2 to cylinder 1 and ignition coil 1 to cylinder 2. Clear engine codes on diagnostic tool and rerun it and guess what!? &quot;No DTCs&quot;, no diagnostic tool codes detected!<\/p>\n<figure class=\"columns\">\n  <img src=\"\/assets\/blog\/xb\/no-dtc-engine-codes.webp\" alt=\"\" width=\"200\" \/>\n  <img src=\"\/assets\/blog\/xb\/ngk-g-power-spark-plugs.webp\" alt=\"NGK G-Power Platinum Alloy Spark Plugs\" width=\"350\" \/>\n  <figcaption>No DTCs! and NGK G-Power Platinum Alloy Spark Plugs<\/figcaption>\n<\/figure>\n<figure class=\"columns\">\n\t<img src=\"\/assets\/blog\/xb\/anti-seize-lubricant.webp\" alt=\"Anti-seize Lubricant\" width=\"300\" \/>\n\t<img src=\"\/assets\/blog\/xb\/dielectric-connector-grease.webp\" alt=\"Anti-seize Lubricant\" width=\"200\" \/>\n  <figcaption>Anti-seize lubricant and Dielectric Connector Grease<\/figcaption>\n  <\/figure>\n<p>That fixed that but not the high idling revs unfortunately. So what to do next? Messaged my older brothers and Freddy (he's an actually good self-taught mechanic) mentioned clean the throttle body. I head back to O'Reilly's and buy a <a href=\"https:\/\/www.oreillyauto.com\/detail\/c\/crc-industries\/oil--chemicals---fluids\/maintenance-chemicals\/cleaners---solvents\/throttle-body---intake-cleaner\/f24c6a729a50\/crc-industries-12-ounce-throttle-body-and-air-intake-cleaner\/crc0\/05078\/\">throttle body &amp; intake cleaner<\/a>, $9.99 bucks. I'll be doing this tomorrow since the engine is pretty hot.<\/p>\n<p>In total excluding the diagnostic tool since that was bought previously, I've spent so far: $56.40 + sales tax, $4.28 = $60.68.<\/p>\n",
"date_published": "Wed, 21 Feb 2024 22:12:00 +0000",
"tags": "xb"
},
                    
                {
"id": "https://www.czepeda.com/posts/frijoles-de-la-olla-recipe",
"url": "https://www.czepeda.com/posts/frijoles-de-la-olla-recipe",
"title": "Frijoles de la Olla Recipe",
"content_html": "<p>Recipe how my mom taught me to make Frijoles de la Olla.<\/p>\n<p>Ingredients:<\/p>\n<ul>\n<li>1lb Pinto Beans.<\/li>\n<li><a href=\"https:\/\/www.amazon.com\/dp\/B003OAJGJO?ref_=cm_sw_r_cp_ud_dp_NAT9T7DCH8W67M3YAWCK\">Crock Pot<\/a>.<\/li>\n<li>10 cups of water.<\/li>\n<li>4 cloves of garlic.<\/li>\n<li>Quarter of an onion, chopped in big chunky pieces.<\/li>\n<li>Half of 1\/3 cup of salt.<\/li>\n<li>Three fingers pinch of Oregano. Crush it up.<\/li>\n<\/ul>\n<p>Instructions:<\/p>\n<ol>\n<li>Sort through the beans and pick out the dirty ugly beans.<\/li>\n<li>Rinse the beans in a drain pan.<\/li>\n<li>Add the beans into the crock pot.<\/li>\n<li>Add the 10 cups of water.<\/li>\n<li>Add the garlic cloves.<\/li>\n<li>Add the onion pieces.<\/li>\n<li>Add the salt.<\/li>\n<li>Add the crushed up Oregano.<\/li>\n<li>Stir it all up.<\/li>\n<li>Set the Crock Pot to Low if you're leaving it over night for 10hrs. It's what I do.<\/li>\n<\/ol>\n<p>When you check them, make sure they are at a tender feel when you squeeze them with your fingers. Not mushy at all! Kind of like cooking potatoes nice and tender poke with a fork.<\/p>\n<p>A pound of Pinto Beans is what I cook for my mom and me and usually lasts about an entire week. It's so delicious with breakfast when they come out of the crock pot!<\/p>\n",
"date_published": "Sat, 24 Feb 2024 22:49:00 +0000",
"tags": "recipes"
},
                    
                {
"id": "https://www.czepeda.com/posts/xb-maintenance-air-filter-replacement",
"url": "https://www.czepeda.com/posts/xb-maintenance-air-filter-replacement",
"title": "XB - Maintenance: Air Filter Replacement",
"content_html": "<p>Replacing the air filter. It's a cheap one for the time being while I find a OEM air filter. I bought it at O'Reilly's Auto Parts, <a href=\"https:\/\/www.oreillyauto.com\/detail\/c\/wix\/filters\/air-filter\/71819851b3e7\/wix-panel-air-filter\/wix0\/46646\/v\/a\/18869\/automotive-van-2006-scion-xb\"><br \/>\nWIX Panel Air Filter - 46646<\/a>.<\/p>\n",
"date_published": "Wed, 28 Feb 2024 20:43:00 +0000",
"tags": "xb"
},
                    
                {
"id": "https://www.czepeda.com/posts/starting-a-new-job-at-uth-human-resources-innovation-analytics-and-technology-hriat-team",
"url": "https://www.czepeda.com/posts/starting-a-new-job-at-uth-human-resources-innovation-analytics-and-technology-hriat-team",
"title": "Starting a new job at UTH Human Resources - Innovation, Analytics, and Technology (HRIAT) Team",
"content_html": "<p>Today, March 4th of 2024 I start my brand new job at a very familiar environment. I use to work at <a href=\"https:\/\/resume.czepeda.com\/#uth\">UTHealth back in 05\/2008 - 12\/2011<\/a>. I worked at the time for the web communications web team that managed the universities main websites, uth.edu.<\/p>\n<p>Starting today I will work for <a href=\"https:\/\/www.uth.edu\/hr\/\">UTHealth's HR department<\/a>, specifically the Innovation, Analytics, and Technology Team. This is an extremly rare opportunity for me because for a majority of my web development work history I've worked on university wide websites. What that means is that my work affected globally all the university website properties. These are the highly and most trafficked websites for the universities. This was a huge responsiblity to take on and run like a well oiled machine. I did pretty good if I must say so.<\/p>\n<p>But starting today as I was saying, all my focus can now be harnessed to a single department. The department is a very huge part of the university and has plenty of departments within it. To me this is rare that I can just focus on one department. I always had to think in a wider sense because of the reach that the websites had. I recall seeing the analytics on a monthly basis and millions of visits was a normal statistic to see. Changes or updates to templates or to servers had to be done with care. All that being said, this experience can now be focused to absolute precision which I am very much looking forward to doing!<\/p>\n",
"date_published": "Mon, 04 Mar 2024 00:31:09 +0000",
"tags": "blog, work"
},
                    
                {
"id": "https://www.czepeda.com/posts/cx-5-front-oil-seal-replacement-alternator-belt-serpentine-belt",
"url": "https://www.czepeda.com/posts/cx-5-front-oil-seal-replacement-alternator-belt-serpentine-belt",
"title": "CX-5 - Front Oil Seal Replacement, Alternator Belt, Serpentine Belt",
"content_html": "<p>Not as hard as I thought it'd be to do all of this maintenance on my 2016 Mazda CX-5.<\/p>\n<p>Luckily I had my brother to guide me. I did all the work he just supervised. Bought him a cheddar spud (big potato full of cheddar and brisket) from a local bbq place as payment! Its delicious and very worthy for payment!<\/p>\n<figure style=\"margin: 0 auto; text-align: center;\">\n<img src=\"\/assets\/blog\/cx-5\/2016-mazda-cx-5-belt-diagram.jpg\" style=\"margin: 0 auto;\" alt=\"2016 Mazda CX-5 belt diagram.\">\n  <figcaption>2016 Mazda CX-5 belt diagram.<\/figcaption>\n<\/figure>\n<p>First thing was remove the belts. To me they're called serpentine belt (long belt) and alternator belt (short belt). For the drive belt I just cut it off since I bought OEM belts from the Mazda dealership nearby.<\/p>\n<p>Second, remove the crankshaft pulley. My brother brought his air compressor to use his air gun to easily remove the crankshaft bolt. Very easy!<\/p>\n<p>Third, remove the seal, very very carefully.<\/p>\n<figure style=\"margin: 0 auto; text-align: center;\">\n<img src=\"\/assets\/blog\/cx-5\/2016-mazda-cx-5-front-oil-seal-replacement-diagram.jpg\" style=\"margin: 0 auto;\" alt=\"2016 Mazda CX-5 front oil seal replacement diagram.\">\n  <figcaption>2016 Mazda CX-5 front oil seal replacement diagram.<\/figcaption>\n<\/figure>\n<p>Fourth, push the new seal in carefully as well and rub some motor oil around the edge. I bought a seal kit to help push the seal in uniformily.<\/p>\n<p>Fifth, put the crankshaft pulley back on.<\/p>\n<p>Sixth, put on the alternator belt and use the crankshaft pulley to help turn it onto place like a bicycle chain.<\/p>\n<p>Seventh, put on the serpertine belt and make use of the very useful belt tensioner. Use a 17mm wrench to turn the tensioner and then wrap the serpertine belt onto the pulleys.<\/p>\n<p>Eighth, tighten the crankshaft pulley back, 74-88 ft lbf. This was probably the tricky part of the whole thing because I did not have a pulley holder in order to keep the pulley in place so I can tighten the bolt. We inserted a little wrench and worked BUT broke off and took a while to fish out the broken piece out of behind the crankshaft pulley!<\/p>\n<p>That was that! Pretty proud and happy to do this with my brother and able to save $1044.96! I was quoted ONLY for the seal replacement $1200 from the Mazda dealership, pretty crazy!<\/p>\n<ul>\n<li>Seal = $16.77<\/li>\n<li>Serpentine belt = $22.25<\/li>\n<li>Alternator belt = $46.37<\/li>\n<li>Crankshaft and Camshaft Seal Tool Kit = $69.65<\/li>\n<li>Total = $155.04<\/li>\n<\/ul>\n",
"date_published": "Sun, 25 Aug 2024 20:50:00 +0000",
"tags": "cx-5, cx-maintenance"
},
                    
                {
"id": "https://www.czepeda.com/posts/xb-maintenance-ufc-and-canelo-fight-weekend",
"url": "https://www.czepeda.com/posts/xb-maintenance-ufc-and-canelo-fight-weekend",
"title": "xB Maintenance, UFC and Canelo Fight Weekend",
"content_html": "<p>Time is flying!<\/p>\n<p>One of my brothers came to visit my mom, my dog and me. There were some UFC and Canelo fights this weekend and we watched it here at home. UFC fights had some good fights in the main card. The main two title fights were not entertaining when you think of a fighting sport, but technically the fighters who won, won at a very expert level that they made their opponents look childish. The Canelo fight was entertaining and he managed to knock down his opponent on the third round but the fight lasted all 12 rounds. Most of those rounds were Canelo's without argument.<\/p>\n<p>On Saturday I finally got time to work on the xB and switched the front struts from right to left and left to right. I'd been hearing a noise when I rolled over bumps or dips and figured it might've been a defective strut, but no it is somethin else! Either way I needed to install new struts and they are now good to go. After some advice from my brother, we think it probably is the inner tie-rod that is making that noise. Initially I thought it was that one strut making the noise but nope, its something else. I'm debating whether to check it out some more and lift up the car and test out the tie-rods and see if anything is wiggling around with just manually shaking it. Or go to the dealership and have them do diagnostics on it since I'm already due for my 5000 mile maintenance. I really want to do my checks first. If the rain chills for a bit I'll go ahead and see if I can get some time this week. Got a big project to launch at work and I've been working past what I should be working. But things got to get done. Otherwise, I'll work on it until next weekend. Also, I need to cut the lawn.<\/p>\n<p>This weekend went by so fast. I went to get groceries early afternoon and I kept thinking to myself, &quot;it's Saturday right?&quot; hoping that I can somehow change the day if I said that in my head enough times haha. It didn't work. Anyways, I'd like to blog more soley for documenting and looking back on this.<\/p>\n",
"date_published": "Sun, 15 Sep 2024 00:27:00 +0000",
"tags": "xb"
},
                    
                {
"id": "https://www.czepeda.com/posts/xb-maintenance-and-replacing-control-arms-and-stabilizer-links",
"url": "https://www.czepeda.com/posts/xb-maintenance-and-replacing-control-arms-and-stabilizer-links",
"title": "xB maintenance and replacing control arms and stabilizer links",
"content_html": "<p>Got a chance today to get maintenance done and finally figure out what is going on with a noise I kept hearing when driving over bumps or dips on roads. It all started after replacing the front struts.<\/p>\n<p>Diagnosis, need to replace the control arms and stabilizer links. I kept thinking it was the tie-rods but I really couldn't tell. But I never thought it couldn've been the control arms and stabilizer links. I've only replaced those two parts once before back in 2014ish... Currently I'm at 245,814 miles! Hoping to make it to 300,000 someday!<\/p>\n",
"date_published": "Fri, 27 Sep 2024 22:54:00 +0000",
"tags": "xb, maintenance"
},
                    
                {
"id": "https://www.czepeda.com/posts/so-much-severance-everywhere",
"url": "https://www.czepeda.com/posts/so-much-severance-everywhere",
"title": "So much Severance everywhere!",
"content_html": "<p>I think I'm finally going to make use of my Apple+ subscription and watch Severance show.<\/p>\n<p>It doesn't stop, everywhere I look online people are just saying they're obsessed with it. I remember when it first came out and I had Apple+ subscription but the only thing I wanted to watch was Ted Lasso. I recommend that show!<\/p>\n<p>Anyways, I actually resubscribed to Disney+ so I can watch Daredevil Born Again new season. I love my comic book based shows!<\/p>\n",
"date_published": "Tue, 08 Apr 2025 00:47:00 +0000",
"tags": "tv-shows"
},
                    
                {
"id": "https://www.czepeda.com/posts/productive-saturday-and-i-didnt-finish-all-i-wanted-to-do",
"url": "https://www.czepeda.com/posts/productive-saturday-and-i-didnt-finish-all-i-wanted-to-do",
"title": "Productive Saturday and I didn&#039;t finish all I wanted to do",
"content_html": "<p>Very productive Saturday! From cutting branches and updating my local and production web development environments.<\/p>\n<p>Started the morning eating breakfast with mom and the dog. We watched a couple of soccer matches. From the English Premier League we watched Nottingham Forest v Everton and then Arsenal v Brentford. Then caught just a little bit of the Barcelona v Leganes from La Liga spanish league.<\/p>\n<p>Next was getting all the gear out of storage shed for the tools I was going to use. I only used the <a href=\"https:\/\/www.homedepot.com\/pep\/RYOBI-40V-10-in-Cordless-Battery-Pole-Saw-with-2-0-Ah-Battery-and-Charger-RY40560\/311397279\">cordless pole saw<\/a> I bought from Home Depot. Its pretty good and easy to use. It can become heavy after heavy use. The battery charges up quick and last good enough time for me. I have more trees than I care to have but mom likes them so we have to keep them. After all the cutting I dragged them all to the entrance of the driveway for the waste management truck to come by and pick them up. It's a lot harder to re-cut them in order to be able to drag them and pile them up nicely on the side of the road than the actual cutting them from the trees.<\/p>\n<p>After finishing with the branches, I helped my mom replant some of her giant plants into bigger pots. Of course they have to be bigger! I don't get my mom's logic most of the times. I sometimes think she purposely does that to just make it harder for me to do all these landscaping jobs. I do them and she's happy. That's what matters in the end.<\/p>\n<p>With the plants done with, now I needed to re-level some of the <a href=\"https:\/\/www.homedepot.com\/p\/Pavestone-Holland-7-75-in-x-4-in-x-1-75-in-Old-Town-Blend-Concrete-Paver-22099\/100619496\">pavers<\/a> that lead to the house main entrance steps. It's an easy job since all I needed was the <a href=\"https:\/\/www.homedepot.com\/p\/Husky-51-in-Steel-Handle-8-in-x-8-in-Tamper-77335-949\/315067860\">tamper tool<\/a> which I have. But I was already tired out and had to take a couple of breaks to finish it.<\/p>\n<p>About this time I was finishing putting all the tools back in the shed and getting ready to take a shower. My mom had mentioned to me on Friday that she wanted to get some pizza from a new food truck that was new in the city <a href=\"https:\/\/www.instagram.com\/piccolaitaliapizza\/\">Piccola Italia Pizza<\/a>. I had tried it out about two weeks ago and was pretty good. The quality is actually worth it even though it can be a bit pricy. The pizzas are personal size which works for me. But that's why I also think its pricy. The price is about $12 each. Anyways, I think its worth it though. I don't buy it every day even though I would if I could. Then I'd die of diabetes or a heart attack. It's a lot of dough!<\/p>\n<p>FINALLY, I bought the PPV for the UFC 314. Pretty good fights! Worth the money. All the while I was updating my web develoment enviornments. That was a long time coming. I had last worked on my website back in Novemberish 2023. I was unemployed at that time! So as a web developer by profession, well I have to have a website right? Well at least I do and I enjoy having a website.<\/p>\n<p>That was my Saturday and it's actually Sunday at 2:07am at this very moment. Ufff! Goodnight!<\/p>\n",
"date_published": "Sat, 12 Apr 2025 01:00:00 +0000",
"tags": "blog"
}
        
        
    ]
}