<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Joel Clermont</title><link>https://joelclermont.com/</link><description>Recent content on Joel Clermont</description><generator>Hugo -- gohugo.io</generator><language>en-US</language><copyright>© This post is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.</copyright><lastBuildDate>Sun, 06 Nov 2022 10:27:21 -0600</lastBuildDate><atom:link href="https://joelclermont.com/index.xml" rel="self" type="application/rss+xml"/><item><title>Learning Bref - Day 1</title><link>https://joelclermont.com/post/2022-11/learning-bref-day-1/</link><pubDate>Sun, 06 Nov 2022 10:27:21 -0600</pubDate><guid>https://joelclermont.com/post/2022-11/learning-bref-day-1/</guid><description>&lt;p&gt;I&amp;rsquo;ve been putting off learning how to deploy a PHP/Laravel app to a &amp;ldquo;serverless&amp;rdquo; environment for quite a while. A recent talk by &lt;a href=&#34;https://carlalexander.ca&#34; target=&#34;_blank&#34;&gt;Carl Alexander&lt;/a&gt; at Longhorn PHP finally gave me the push to try it out. This is the first in a series of posts documenting my experience as a longtime PHP developer checking out this topic in-depth for the first time.&lt;/p&gt;</description></item><item><title>Understanding Wildcard Notation in Laravel Validation</title><link>https://joelclermont.com/post/2022-06/understanding-multi-dimensional-arrays-in-laravel-validation/</link><pubDate>Tue, 14 Jun 2022 08:55:31 -0500</pubDate><guid>https://joelclermont.com/post/2022-06/understanding-multi-dimensional-arrays-in-laravel-validation/</guid><description>&lt;p&gt;Array validation in Laravel is very powerful, but sometimes it might not do exactly what we expect when we&amp;rsquo;re dealing with multidimensional arrays and wildcard notation. Let&amp;rsquo;s dig into a real-world example to see how it works internally and deepen our understanding of this feature along the way.&lt;/p&gt;</description></item><item><title>Should an AJAX Controller Be Put in the API Route Group?</title><link>https://joelclermont.com/post/2022-05/should-an-ajax-controller-be-put-in-the-api-route-group/</link><pubDate>Tue, 31 May 2022 16:09:07 -0500</pubDate><guid>https://joelclermont.com/post/2022-05/should-an-ajax-controller-be-put-in-the-api-route-group/</guid><description>&lt;p&gt;If your Laravel app is &amp;ldquo;full stack&amp;rdquo; and rendered with Blade views, but you have a few controller actions called only by Javascript, should those controllers go in the &lt;code&gt;api&lt;/code&gt; route group or should they stay in the &lt;code&gt;web&lt;/code&gt; route group?&lt;/p&gt;</description></item><item><title>The Benefits of Minimal Factories in Laravel</title><link>https://joelclermont.com/post/2022-05/the-benefits-of-minimal-factories-in-laravel/</link><pubDate>Mon, 23 May 2022 09:00:00 -0500</pubDate><guid>https://joelclermont.com/post/2022-05/the-benefits-of-minimal-factories-in-laravel/</guid><description>&lt;p&gt;Laravel factories are a huge time-saver when writing tests. In the past, I&amp;rsquo;d build a factory to include every model property in the default state, but lately I&amp;rsquo;ve switched to having minimal factories by default. I&amp;rsquo;ll explain my reasons for this change, and what benefits I&amp;rsquo;ve found.&lt;/p&gt;</description></item><item><title>Choosing a Status Code for an Expired Record</title><link>https://joelclermont.com/post/2022-05/choosing-a-status-code-for-an-expired-record/</link><pubDate>Tue, 17 May 2022 09:58:58 -0500</pubDate><guid>https://joelclermont.com/post/2022-05/choosing-a-status-code-for-an-expired-record/</guid><description>&lt;p&gt;In a previous post, I discussed some thoughts around &lt;a href=&#34;https://joelclermont.com/post/2020-09/choosing-the-right-http-status-code/&#34;&gt;choosing the right HTTP status code&lt;/a&gt;. In today&amp;rsquo;s post, I&amp;rsquo;ll tackle a different scenario, and my reasoning behind the particular status code I ended up using.&lt;/p&gt;</description></item><item><title>Using Logs to Debug a Laravel API</title><link>https://joelclermont.com/post/2022-05/using-logs-to-debug-a-laravel-api/</link><pubDate>Tue, 10 May 2022 15:55:45 -0500</pubDate><guid>https://joelclermont.com/post/2022-05/using-logs-to-debug-a-laravel-api/</guid><description>&lt;p&gt;On a recent project, we were building a Laravel API to be consumed by a mobile app being built by a separate team. When an end user reported an issue, one of the first questions was &amp;ldquo;Is this bug in the API or the mobile app?&amp;rdquo; In this post, I&amp;rsquo;ll share a logging strategy we used to help us quickly get to the root cause of the problem.&lt;/p&gt;</description></item><item><title>How to Not Trim Strings Dynamically</title><link>https://joelclermont.com/post/2022-05/how-to-not-trim-strings-dynamically/</link><pubDate>Thu, 05 May 2022 17:08:39 -0500</pubDate><guid>https://joelclermont.com/post/2022-05/how-to-not-trim-strings-dynamically/</guid><description>&lt;p&gt;Laravel automatically trims incoming strings in the HTTP request. This convenience can be easy to take for granted because it&amp;rsquo;s such a sensible default behavior, but how would you disable it for just one route? And why might you want to do that?&lt;/p&gt;</description></item><item><title>Multi-word Route Parameters in Laravel</title><link>https://joelclermont.com/post/2022-01/multi-word-route-parameters-in-laravel/</link><pubDate>Tue, 04 Jan 2022 17:37:06 -0600</pubDate><guid>https://joelclermont.com/post/2022-01/multi-word-route-parameters-in-laravel/</guid><description>&lt;p&gt;We all make stupid mistakes from time to time. I&amp;rsquo;m sharing this one to hopefully save someone else a little frustration.&lt;/p&gt;</description></item><item><title>Case Sensitive Volumes on macOS</title><link>https://joelclermont.com/post/2022-01/case-sensitive-volumes-on-macos/</link><pubDate>Tue, 04 Jan 2022 16:49:21 -0600</pubDate><guid>https://joelclermont.com/post/2022-01/case-sensitive-volumes-on-macos/</guid><description>&lt;p&gt;I used to think Docker would solve all my issues with local dev matching the production environment, but I was wrong.&lt;/p&gt;</description></item><item><title>Why I Switched My Podcast to Transistor</title><link>https://joelclermont.com/post/2021-11/why-i-switched-my-podcast-to-transistor/</link><pubDate>Tue, 23 Nov 2021 16:30:30 -0600</pubDate><guid>https://joelclermont.com/post/2021-11/why-i-switched-my-podcast-to-transistor/</guid><description>&lt;p&gt;Podcast hosting is one of those things that feels very difficult to change. I worked hard to build an audience and I didn&amp;rsquo;t want a behind-the-scenes technical change to break any subscriptions and alienate listeners. As a result, I kept putting off the move to Transistor. Well, I finally took the plunge, and I&amp;rsquo;m happy to report it was &lt;em&gt;much&lt;/em&gt; easier than I anticipated. Before we get into the details, I want to step back and explain my motivation to move in the first place.&lt;/p&gt;</description></item><item><title>Validating File Upload Arrays in Laravel</title><link>https://joelclermont.com/post/2021-05/validating-file-upload-arrays-in-laravel/</link><pubDate>Tue, 25 May 2021 11:03:20 -0500</pubDate><guid>https://joelclermont.com/post/2021-05/validating-file-upload-arrays-in-laravel/</guid><description>&lt;p&gt;Let&amp;rsquo;s say you have an HTML form with 3 file inputs named &lt;code&gt;certificate[]&lt;/code&gt;, and you want to make them all required. Should be pretty easy, right?&lt;/p&gt;</description></item><item><title>Digging Deeper Into Laravel Password Validation</title><link>https://joelclermont.com/post/2021-05/digging-deeper-into-laravel-password-validation/</link><pubDate>Fri, 21 May 2021 09:17:01 -0500</pubDate><guid>https://joelclermont.com/post/2021-05/digging-deeper-into-laravel-password-validation/</guid><description>&lt;p&gt;Recently, a powerful new validation rule was added to Laravel to enforce password strength and security. There have been several great articles on how to use it, but this article will dive deeper and shed some light on how it works internally.&lt;/p&gt;</description></item><item><title>Will My Laravel App Break on March 23?</title><link>https://joelclermont.com/post/2021-03/will-my-laravel-app-break-on-march-23/</link><pubDate>Wed, 03 Mar 2021 08:36:45 -0600</pubDate><guid>https://joelclermont.com/post/2021-03/will-my-laravel-app-break-on-march-23/</guid><description>&lt;p&gt;Maybe you&amp;rsquo;ve received a notice from Amazon that certificates are changing on your S3 bucket on March 23, 2021. Several people have asked me: Will my Laravel app break on March 23?&lt;/p&gt;</description></item><item><title>Routing Resolution Can Change When Caching Routes</title><link>https://joelclermont.com/post/2021-03/routing-resolution-can-change-when-caching-routes/</link><pubDate>Mon, 01 Mar 2021 16:10:54 -0600</pubDate><guid>https://joelclermont.com/post/2021-03/routing-resolution-can-change-when-caching-routes/</guid><description>&lt;p&gt;Recently I ran into a change in behavior in my app depending on whether routes were cached or not. Here&amp;rsquo;s what I found, and how I dealt with it.&lt;/p&gt;</description></item><item><title>Build Better Forms With Autocomplete</title><link>https://joelclermont.com/post/2021-02/build-better-forms-with-autocomplete/</link><pubDate>Fri, 26 Feb 2021 17:11:54 -0600</pubDate><guid>https://joelclermont.com/post/2021-02/build-better-forms-with-autocomplete/</guid><description>&lt;p&gt;Ever get annoyed when your password manager doesn&amp;rsquo;t know how to fill out a form on a website? Or maybe it tries to fill in something you don&amp;rsquo;t want it to? If you build sites, here are some tips to save your users from similar annoyances.&lt;/p&gt;</description></item><item><title>Backticks in Git Commit Messages</title><link>https://joelclermont.com/post/2021-02/backticks-in-git-commit-messages/</link><pubDate>Wed, 24 Feb 2021 09:27:28 -0600</pubDate><guid>https://joelclermont.com/post/2021-02/backticks-in-git-commit-messages/</guid><description>&lt;p&gt;Recently I wanted to have backticks in my &lt;code&gt;git&lt;/code&gt; commit message. It didn&amp;rsquo;t work as expected though.&lt;/p&gt;</description></item><item><title>Better Diff Highlighting in Git</title><link>https://joelclermont.com/post/2021-02/better-diff-highlighting-in-git/</link><pubDate>Mon, 22 Feb 2021 15:45:51 -0600</pubDate><guid>https://joelclermont.com/post/2021-02/better-diff-highlighting-in-git/</guid><description>&lt;p&gt;I prefer to use Git from the command line, but sometimes a GUI tool does a better job with specific tasks. One of those is diff highlighting, but today I found a way to make diffing with the Git CLI a lot nicer. Let&amp;rsquo;s look at an example.&lt;/p&gt;</description></item><item><title>How Apps Break Without Any Code Changes</title><link>https://joelclermont.com/post/2021-02/how-apps-break-without-any-code-changes/</link><pubDate>Thu, 11 Feb 2021 10:24:39 -0600</pubDate><guid>https://joelclermont.com/post/2021-02/how-apps-break-without-any-code-changes/</guid><description>&lt;p&gt;Many times you can trace a bug back to a particular code change that was made. Or maybe it was caused by a package upgrade. But have you ever had something break when no code changed at all? How does that happen?&lt;/p&gt;</description></item><item><title>AWS Error Retrieving Credentials</title><link>https://joelclermont.com/post/2021-02/aws-error-retrieving-credentials/</link><pubDate>Wed, 10 Feb 2021 15:39:51 -0600</pubDate><guid>https://joelclermont.com/post/2021-02/aws-error-retrieving-credentials/</guid><description>&lt;p&gt;Recently I upgraded &lt;code&gt;phpdotenv&lt;/code&gt; on an older project and my AWS connection stopped working. Why did one package upgrade break the other? And how did I fix it? Read on for details.&lt;/p&gt;</description></item><item><title>Solving the Mockery Error: Could not load mock, class already exists</title><link>https://joelclermont.com/post/2021-01/could-not-load-mock-class-already-exists/</link><pubDate>Tue, 09 Feb 2021 16:16:37 -0600</pubDate><guid>https://joelclermont.com/post/2021-01/could-not-load-mock-class-already-exists/</guid><description>&lt;p&gt;This is a really specific error you might never run into, but when you do, this blog post is here for you.&lt;/p&gt;</description></item><item><title>Why Are Eloquent Timestamps Nullable?</title><link>https://joelclermont.com/post/2020-11/why-are-eloquent-timestamps-nullable/</link><pubDate>Tue, 17 Nov 2020 12:40:12 -0600</pubDate><guid>https://joelclermont.com/post/2020-11/why-are-eloquent-timestamps-nullable/</guid><description>&lt;p&gt;Recently I was creating a new table and using the &lt;code&gt;timestamps&lt;/code&gt; helper in the migration. I noticed something that seemed wrong, so I dug a little deeper and learned something new about Laravel and MySQL.&lt;/p&gt;</description></item><item><title>Removing Disqus From the Site</title><link>https://joelclermont.com/post/2020-11/removing-disqus-from-the-site/</link><pubDate>Tue, 03 Nov 2020 07:05:23 -0600</pubDate><guid>https://joelclermont.com/post/2020-11/removing-disqus-from-the-site/</guid><description>&lt;p&gt;Many years ago, when I moved my blog from WordPress to &lt;a href=&#34;https://gohugo.io&#34; target=&#34;_blank&#34;&gt;Hugo&lt;/a&gt;, I was very pleased to find Disqus as a way to still have comments on a statically generated site. Today, however, I have completely removed Disqus from this site.&lt;/p&gt;</description></item><item><title>Covering Value Ranges in Your Tests</title><link>https://joelclermont.com/post/2020-10/covering-value-ranges-in-your-tests/</link><pubDate>Thu, 29 Oct 2020 11:16:49 -0500</pubDate><guid>https://joelclermont.com/post/2020-10/covering-value-ranges-in-your-tests/</guid><description>&lt;p&gt;For me, one of the main reasons I write tests is to have confidence that my code is working as expected and to catch myself if (or should I say when?) I break something in the future. I often think of testing the happy path and the failure path, but I&amp;rsquo;ll share some additional things I like to test in between that further boost my test confidence.&lt;/p&gt;</description></item><item><title>Access the Model Inside a Form Request</title><link>https://joelclermont.com/post/2020-10/access-model-inside-form-request-authorize/</link><pubDate>Wed, 21 Oct 2020 11:50:28 -0500</pubDate><guid>https://joelclermont.com/post/2020-10/access-model-inside-form-request-authorize/</guid><description>&lt;p&gt;Laravel&amp;rsquo;s form requests really help reduce the amount of code in your controllers, especially around validation. Another convenience method they offer is authorization. I recently came across a small tip which isn&amp;rsquo;t explicitly stated in the docs and thought I&amp;rsquo;d share it.&lt;/p&gt;</description></item><item><title>Toggling Groups of Related Fields in Update Request</title><link>https://joelclermont.com/post/2020-09/toggling-groups-of-related-fields-in-update-request/</link><pubDate>Mon, 21 Sep 2020 13:17:39 -0500</pubDate><guid>https://joelclermont.com/post/2020-09/toggling-groups-of-related-fields-in-update-request/</guid><description>&lt;p&gt;Let&amp;rsquo;s say you have a form with two groups of related, but mutually exclusive, fields. When you &lt;code&gt;POST&lt;/code&gt; and store a new record, no problem, only the right fields are sent in. But what do you do when that record is updated? How can you cleanly handle this?&lt;/p&gt;</description></item><item><title>Understanding Dot Notation in Laravel Validation</title><link>https://joelclermont.com/post/2020-09/understanding-dot-notation-in-laravel-validation/</link><pubDate>Sat, 19 Sep 2020 08:03:30 -0500</pubDate><guid>https://joelclermont.com/post/2020-09/understanding-dot-notation-in-laravel-validation/</guid><description>&lt;p&gt;Laravel validation supports &amp;ldquo;dot notation&amp;rdquo; to let you validate arrays in a request. But what if your field name contains a literal dot?&lt;/p&gt;</description></item><item><title>Why I Switched to Fathom Analytics</title><link>https://joelclermont.com/post/2020-09/why-i-switched-to-fathom-analytics/</link><pubDate>Fri, 18 Sep 2020 07:28:50 -0500</pubDate><guid>https://joelclermont.com/post/2020-09/why-i-switched-to-fathom-analytics/</guid><description>&lt;p&gt;Google Analytics is free and has every imaginable feature you might ever want. So why would I switch to paying for Fathom Analytics?&lt;/p&gt;</description></item><item><title>Why I Enjoy Working on Legacy Software Applications</title><link>https://joelclermont.com/post/2020-09/why-i-like-legacy-software/</link><pubDate>Thu, 17 Sep 2020 18:33:38 -0500</pubDate><guid>https://joelclermont.com/post/2020-09/why-i-like-legacy-software/</guid><description>Today I realized something about myself, I actually really enjoy working in legacy applications. This may seem odd. It&amp;rsquo;s common to hear complaints about &amp;ldquo;how bad this old code is&amp;rdquo;, so why would I enjoy working in a difficult environment?
First, it would be useful for me to define what makes an application a legacy application. I realize this may not be a universal definition for everyone, but here are the core elements I think of that make an application qualify as &amp;ldquo;legacy&amp;rdquo;:</description></item><item><title>Use Randomness Intentionally in Testing</title><link>https://joelclermont.com/post/2020-09/use-randomness-intentionally-in-testing/</link><pubDate>Wed, 16 Sep 2020 14:56:51 -0500</pubDate><guid>https://joelclermont.com/post/2020-09/use-randomness-intentionally-in-testing/</guid><description>&lt;p&gt;Randomness can serve a useful purpose in factories, seeders, and tests. There are times it can cause issues though. Here are some rules I think about when introducing randomness into a test.&lt;/p&gt;</description></item><item><title>When You Might Want to Rebase a Feature Branch</title><link>https://joelclermont.com/post/2020-09/when-you-might-want-to-rebase-a-feature-branch/</link><pubDate>Mon, 14 Sep 2020 19:09:36 -0500</pubDate><guid>https://joelclermont.com/post/2020-09/when-you-might-want-to-rebase-a-feature-branch/</guid><description>&lt;p&gt;Is &lt;code&gt;git rebase&lt;/code&gt; a command to be avoided at all cost? I say no. Here&amp;rsquo;s one use case where I reach for &lt;code&gt;rebase&lt;/code&gt; instead of &lt;code&gt;merge&lt;/code&gt;.&lt;/p&gt;</description></item><item><title>Repeat Last Argument at Command Line</title><link>https://joelclermont.com/post/2020-09/repeat-last-argument-at-command-line/</link><pubDate>Sun, 13 Sep 2020 12:04:02 -0500</pubDate><guid>https://joelclermont.com/post/2020-09/repeat-last-argument-at-command-line/</guid><description>&lt;p&gt;Here&amp;rsquo;s a handy tip when you want to rename a file with a long path/name and don&amp;rsquo;t want to retype it twice.&lt;/p&gt;</description></item><item><title>What Are Your Important Tasks Today?</title><link>https://joelclermont.com/post/2020-09/what-are-the-important-tasks-today/</link><pubDate>Sat, 12 Sep 2020 18:30:27 -0500</pubDate><guid>https://joelclermont.com/post/2020-09/what-are-the-important-tasks-today/</guid><description>&lt;p&gt;Many of us have a seemingly endless backlog of tasks we could be doing. How can you figure out what&amp;rsquo;s most important, and use that decision to bring focus to your day?&lt;/p&gt;</description></item><item><title>Benefits of Keeping a Work Journal</title><link>https://joelclermont.com/post/2020-09/benefits-of-keeping-a-work-journal/</link><pubDate>Fri, 11 Sep 2020 10:35:54 -0500</pubDate><guid>https://joelclermont.com/post/2020-09/benefits-of-keeping-a-work-journal/</guid><description>&lt;p&gt;Many developers feel overwhelmed with the amount of work they want to get done each day. Or they feel pulled in multiple directions and struggle to make progress on the important things. I can totally relate! One thing that helped me is keeping a work journal.&lt;/p&gt;</description></item><item><title>New Laravel Migration Shortcuts for Foreign Keys</title><link>https://joelclermont.com/post/2020-09/new-laravel-migration-shortcuts-for-foreign-keys/</link><pubDate>Thu, 10 Sep 2020 17:23:49 -0500</pubDate><guid>https://joelclermont.com/post/2020-09/new-laravel-migration-shortcuts-for-foreign-keys/</guid><description>&lt;p&gt;While everyone is loving the features in the new Laravel 8 release this week, I just discovered something cool I missed in Laravel 7.&lt;/p&gt;</description></item><item><title>Choosing the Right HTTP Status Code</title><link>https://joelclermont.com/post/2020-09/choosing-the-right-http-status-code/</link><pubDate>Wed, 09 Sep 2020 09:05:24 -0500</pubDate><guid>https://joelclermont.com/post/2020-09/choosing-the-right-http-status-code/</guid><description>&lt;p&gt;Do you ever get frustrated when you call an API and it sends back an inappropriate HTTP status code? I never want my APIs to be a source of frustation, so I&amp;rsquo;ll share a recent debate I had with myself as to which status code was the best.&lt;/p&gt;</description></item><item><title>Todo Tests Are Not Cheating</title><link>https://joelclermont.com/post/2020-09/todo-tests-are-not-cheating/</link><pubDate>Tue, 08 Sep 2020 11:17:49 -0500</pubDate><guid>https://joelclermont.com/post/2020-09/todo-tests-are-not-cheating/</guid><description>&lt;p&gt;Why would you ever mark a test as &lt;code&gt;todo&lt;/code&gt;? Isn&amp;rsquo;t that devaluing your tests? Not at all! I&amp;rsquo;ll share some ways I use &lt;code&gt;todo&lt;/code&gt; tests effectively.&lt;/p&gt;</description></item><item><title>Laravel 8 Factory Relationships</title><link>https://joelclermont.com/post/laravel-8-factory-relationships/</link><pubDate>Mon, 07 Sep 2020 09:54:03 -0500</pubDate><guid>https://joelclermont.com/post/laravel-8-factory-relationships/</guid><description>&lt;p&gt;A couple days ago, I walked through a &lt;a href=&#34;https://joelclermont.com/post/understanding-relationships-in-laravel-factories/&#34; target=&#34;_blank&#34;&gt;few potential gotchas with relationships&lt;/a&gt; in Laravel factories. Let&amp;rsquo;s see how it works in Laravel 8.&lt;/p&gt;</description></item><item><title>Why to Consider Fathom Analytics Before macOS Big Sur Is Released</title><link>https://joelclermont.com/post/fathom-analytics-macos-big-sur/</link><pubDate>Sun, 06 Sep 2020 12:02:41 -0500</pubDate><guid>https://joelclermont.com/post/fathom-analytics-macos-big-sur/</guid><description>&lt;p&gt;The forthcoming release of macOS 11 (Big Sur) provides one more compelling reason to move to Fathom Analytics.&lt;/p&gt;</description></item><item><title>Understanding Relationships in Laravel Factories</title><link>https://joelclermont.com/post/understanding-relationships-in-laravel-factories/</link><pubDate>Sat, 05 Sep 2020 19:58:20 -0500</pubDate><guid>https://joelclermont.com/post/understanding-relationships-in-laravel-factories/</guid><description>&lt;p&gt;What&amp;rsquo;s the best way to define a relationship in your Laravel factories? I&amp;rsquo;ll share some tips that will help you avoid some common pitfalls, as well as give you a deeper insight into how factories work.&lt;/p&gt;</description></item><item><title>Know Your Users</title><link>https://joelclermont.com/post/know-your-users/</link><pubDate>Fri, 04 Sep 2020 07:35:40 -0500</pubDate><guid>https://joelclermont.com/post/know-your-users/</guid><description>&lt;p&gt;Ask most developers a question and you&amp;rsquo;ll often hear the phrase &amp;ldquo;it depends&amp;rdquo;. While it can be annoying, there&amp;rsquo;s a truth to it. Let&amp;rsquo;s consider an example of how knowing who your typical user is can affect even basic decisions like how to validate a request.&lt;/p&gt;</description></item><item><title>One More Primary Key Example</title><link>https://joelclermont.com/post/one-more-primary-key-example/</link><pubDate>Thu, 03 Sep 2020 08:12:04 -0500</pubDate><guid>https://joelclermont.com/post/one-more-primary-key-example/</guid><description>&lt;p&gt;Let&amp;rsquo;s wrap up this series of tips, and show one final example when setting an explicit primary key value can improve the quality of your tests.&lt;/p&gt;</description></item><item><title>Another Use Case for Explicit Primary Key Values</title><link>https://joelclermont.com/post/another-use-case-for-explicit-primary-key-values/</link><pubDate>Wed, 02 Sep 2020 07:38:51 -0500</pubDate><guid>https://joelclermont.com/post/another-use-case-for-explicit-primary-key-values/</guid><description>&lt;p&gt;Yesterday I shared an example where setting explicit primary key values in your tests can make your tests more reliable. Let&amp;rsquo;s take a look at another example.&lt;/p&gt;</description></item><item><title>Testing Strategy: When to Use Explicit Primary Key Values</title><link>https://joelclermont.com/post/testing-strategy-explicit-primary-key-values/</link><pubDate>Tue, 01 Sep 2020 07:57:55 -0500</pubDate><guid>https://joelclermont.com/post/testing-strategy-explicit-primary-key-values/</guid><description>&lt;p&gt;Based on the projects I&amp;rsquo;ve seen over the years, it&amp;rsquo;s a bit unusual to set an explicit primary key value when arranging the database state for a feature test. I&amp;rsquo;d like to share a few times when this strategy can make your tests more reliable.&lt;/p&gt;</description></item><item><title>Announcing Our New Podcast</title><link>https://joelclermont.com/post/announcing-our-new-podcast/</link><pubDate>Mon, 24 Aug 2020 15:35:35 -0500</pubDate><guid>https://joelclermont.com/post/announcing-our-new-podcast/</guid><description>&lt;p&gt;Ever wish you could listen to Aaron and I talk about random programming topics? Well do I have some news for you.&lt;/p&gt;</description></item><item><title>Scout APM Review for Laravel</title><link>https://joelclermont.com/post/scout-apm-review-for-laravel/</link><pubDate>Tue, 04 Feb 2020 09:59:42 -0600</pubDate><guid>https://joelclermont.com/post/scout-apm-review-for-laravel/</guid><description>&lt;p&gt;Application Performance Monitoring (APM) is an important tool to be aware of when developing apps for production. I recently tried out &lt;a href=&#34;https://scoutapm.com&#34; target=&#34;_blank&#34;&gt;Scout APM&lt;/a&gt; and it&amp;rsquo;s new first-class support for Laravel and PHP. Whether you&amp;rsquo;re a seasoned APM pro or have never used this tool at all, you may be interested in my findings.&lt;/p&gt;</description></item><item><title>Things to Know When Updating a Single Composer Package</title><link>https://joelclermont.com/post/things-to-know-when-updating-a-single-composer-package/</link><pubDate>Thu, 09 Jan 2020 10:58:50 -0600</pubDate><guid>https://joelclermont.com/post/things-to-know-when-updating-a-single-composer-package/</guid><description>&lt;p&gt;There are times you may want to update a single Composer package without updating everything in your project all at once. I&amp;rsquo;ve put together a few tips to keep in mind when using this workflow.&lt;/p&gt;</description></item><item><title>AWS Tips for Forge Users</title><link>https://joelclermont.com/post/aws-tips-for-forge-users/</link><pubDate>Sun, 09 Jun 2019 19:40:59 -0500</pubDate><guid>https://joelclermont.com/post/aws-tips-for-forge-users/</guid><description>&lt;p&gt;Are you comfortable with Forge and a VPS like Digital Ocean, but considering a move to AWS? While a lot is the same, there are some nuances to making the move. I&amp;rsquo;ll walk you through some common questions and share some tips on how to make the most of the new hosting environment.&lt;/p&gt;</description></item><item><title>Major blog update!</title><link>https://joelclermont.com/post/major-blog-update/</link><pubDate>Mon, 25 Dec 2017 12:26:16 -0600</pubDate><guid>https://joelclermont.com/post/major-blog-update/</guid><description>&lt;p&gt;Apologies in advance, dear RSS reader. I&amp;rsquo;ve migrated platforms and as a result, you may see a bunch of old posts in your feed. In exchange for this minor inconvenience, I have good news to report on the future of this blog.&lt;/p&gt;</description></item><item><title>Contact</title><link>https://joelclermont.com/contact-success/</link><pubDate>Mon, 25 Dec 2017 11:24:02 -0600</pubDate><guid>https://joelclermont.com/contact-success/</guid><description>Thank you for your message. I&#39;ll be in touch soon!</description></item><item><title>Contact</title><link>https://joelclermont.com/contact/</link><pubDate>Mon, 25 Dec 2017 11:24:02 -0600</pubDate><guid>https://joelclermont.com/contact/</guid><description> Message Email Send</description></item><item><title>Speaking</title><link>https://joelclermont.com/speaking/</link><pubDate>Mon, 25 Dec 2017 11:06:30 -0600</pubDate><guid>https://joelclermont.com/speaking/</guid><description>Upcoming Events I don&amp;rsquo;t have anything scheduled right now. Would you like me to speak at an event? Send me a note.
Previous Events July 2023 - Laracon US How to Get Unstuck Video Slides
October 2021 - Longhorn PHP Level Up Your Code Quality Slides
January 2018 - Chicago PHP meetup Give Elm a Chance!
August 2017 - thatConference Give Elm a Chance! Slides
March 2017 - NEW Code Camp Give Elm a Chance!</description></item><item><title>An offer of help</title><link>https://joelclermont.com/post/2014/12/23/an-offer-of-help/</link><pubDate>Tue, 23 Dec 2014 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2014/12/23/an-offer-of-help/</guid><description>&lt;p&gt;From time to time, I see people lamenting how many sites are &amp;ldquo;stuck&amp;rdquo; on old versions of PHP. Other times, I see people dealing with poor (shared) hosting environments, manual deploys with FTP, no local testing environment, and so on. Instead of sitting back and shaking my head, I&amp;rsquo;ve decided to do something about it.&lt;/p&gt;</description></item><item><title>Practice makes you a better developer</title><link>https://joelclermont.com/post/2014/08/06/practice-makes-you-a-better-developer/</link><pubDate>Wed, 06 Aug 2014 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2014/08/06/practice-makes-you-a-better-developer/</guid><description>&lt;p&gt;We&amp;rsquo;ve all heard the saying &amp;ldquo;practice makes perfect,&amp;rdquo; but &lt;em&gt;how&lt;/em&gt; you practice and &lt;em&gt;what&lt;/em&gt; you practice are critical to making it an effective practice session. Consider some tips from a recent &lt;a href=&#34;https://joelclermont.com/post/2014/01/26/learning-how-to-learn-the-newsletter&#34; target=&#34;_blank&#34;&gt;&amp;ldquo;Learning how to Learn&amp;rdquo; newsletter&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Who is responsbile for your learning?</title><link>https://joelclermont.com/post/2014/05/02/who-is-responsbile-for-your-learning/</link><pubDate>Fri, 02 May 2014 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2014/05/02/who-is-responsbile-for-your-learning/</guid><description>&lt;p&gt;Are you expecting too much from an author, speaker or teacher? Take charge of your own learning instead. Consider some tips from a recent &lt;a href=&#34;https://joelclermont.com/post/2014/01/26/learning-how-to-learn-the-newsletter/&#34; target=&#34;_blank&#34;&gt;&amp;ldquo;Learning how to Learn&amp;rdquo; newsletter&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>Learning how to learn: the newsletter</title><link>https://joelclermont.com/post/2014/01/26/learning-how-to-learn-the-newsletter/</link><pubDate>Sun, 26 Jan 2014 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2014/01/26/learning-how-to-learn-the-newsletter/</guid><description>&lt;p&gt;Software developers are, by necessity, lifelong learners. We are constantly facing new challenges, new technologies, new methods of solving problems. But how can we make our learning more efficient? This is a question that I&amp;rsquo;ve been pondering for at least four years.&lt;/p&gt;</description></item><item><title>A modern approach to PHP development</title><link>https://joelclermont.com/post/2013/08/14/a-modern-approach-to-php-development/</link><pubDate>Wed, 14 Aug 2013 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2013/08/14/a-modern-approach-to-php-development/</guid><description>&lt;p&gt;This year at &lt;a href=&#34;http://www.thatconference.com&#34; target=&#34;_blank&#34;&gt;That Conference&lt;/a&gt;, I presented one of the few talks on PHP. The title of the talk was &amp;ldquo;&lt;a href=&#34;https://speakerdeck.com/jclermont/a-modern-approach-to-php-development&#34; target=&#34;_blank&#34;&gt;A modern approach to PHP development&lt;/a&gt;.&amp;rdquo; My goal was to expose both PHP and non-PHP developers to some more recent developments in the PHP ecosystem.&lt;/p&gt;</description></item><item><title>Highlight PHP and HTML in Octopress</title><link>https://joelclermont.com/post/2013/03/29/highlight-php-and-html-in-octopress/</link><pubDate>Fri, 29 Mar 2013 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2013/03/29/highlight-php-and-html-in-octopress/</guid><description>&lt;p&gt;In &lt;a href=&#34;https://joelclermont.com/post/2013/03/28/better-php-highlighting-in-octopress&#34;&gt;yesterday&amp;rsquo;s post on Octopress&lt;/a&gt;, I briefly mentioned the Pygments lexer documentation. One of the things I found incredibly useful was understanding all the available lexers and which language code would invoke them.&lt;/p&gt;
&lt;p&gt;For example, let&amp;rsquo;s say you want to have a code block that highlights both PHP and HTML. How would you do this?&lt;/p&gt;</description></item><item><title>Better PHP highlighting in Octopress</title><link>https://joelclermont.com/post/2013/03/28/better-php-highlighting-in-octopress/</link><pubDate>Thu, 28 Mar 2013 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2013/03/28/better-php-highlighting-in-octopress/</guid><description>&lt;p&gt;I recently moved my blog from WordPress to &lt;a href=&#34;http://octopress.org&#34; target=&#34;_blank&#34;&gt;Octopress&lt;/a&gt;. The experience was painless and I wish I would have done it much earlier. One thing that puzzled me was how Octopress handled PHP syntax highlighting. It seemed that it would only work if every code block started with the opening &lt;code&gt;&amp;lt;?php&lt;/code&gt; tag. I found this quite annoying, especially when I only want to show one line of code.&lt;/p&gt;</description></item><item><title>Day one with Go</title><link>https://joelclermont.com/post/2013/03/27/day-one-with-go/</link><pubDate>Wed, 27 Mar 2013 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2013/03/27/day-one-with-go/</guid><description>&lt;p&gt;I have the habit of picking up a new programming language or two each year, not necessarily to master them or even to write production code with them, but just to be exposed to new approaches to familiar problems. For the last few months, &lt;a href=&#34;https://twitter.com/donatj&#34; target=&#34;_blank&#34;&gt;two&lt;/a&gt; &lt;a href=&#34;https://twitter.com/henderjon&#34; target=&#34;_blank&#34;&gt;friends&lt;/a&gt; of mine have been urging me to try out &lt;a href=&#34;http://golang.org&#34; target=&#34;_blank&#34;&gt;Go&lt;/a&gt;, a relatively new language from Google. Since I had a 17-day vacation planned in Florida, I decided to give Go a try while I had abundant free time.&lt;/p&gt;</description></item><item><title>Pass Puppet command line options with Vagrant</title><link>https://joelclermont.com/post/2012/12/25/pass-puppet-command-line-options-with-vagrant/</link><pubDate>Tue, 25 Dec 2012 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2012/12/25/pass-puppet-command-line-options-with-vagrant/</guid><description>&lt;p&gt;This week, I finally blocked some time to seriously investigate Vagrant and Puppet. The documentation for both tools is decent.&lt;/p&gt;
&lt;p&gt;Taking the knowledge I gained from reading through the &amp;ldquo;Quick Start&amp;rdquo; documents, my next logical step was to spin up my own custom development environment for local usage. I quickly ran into some issues and wanted to enable the &amp;ldquo;debug&amp;rdquo; mode of Puppet. Since I&amp;rsquo;m not calling Puppet directly, it&amp;rsquo;s not as easy as tacking on a &lt;code&gt;--debug&lt;/code&gt; option to the puppet command line. Instead, I need to tell Vagrant to run Puppet in debug mode, using the Vagrantfile.&lt;/p&gt;</description></item><item><title>The oppressive nature of mathematical facts</title><link>https://joelclermont.com/post/2012/11/28/the-oppressive-nature-of-mathematical-facts/</link><pubDate>Wed, 28 Nov 2012 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2012/11/28/the-oppressive-nature-of-mathematical-facts/</guid><description>&lt;p&gt;I was frustrated watching the news tonight, seeing reports of long lines of people waiting to buy lottery tickets for tonight&amp;rsquo;s $500,000,000+ jackpot. There are several angles of absurdity to consider here. For example, why all the excitement over $500 million? Wouldn&amp;rsquo;t any of these players be equally thrilled by $10 million or even $5 million? Another example: Several of the people interviewed, who had just bought &lt;em&gt;hundreds&lt;/em&gt; of dollars of tickets, were unemployed, facing foreclosure, struggling to pay medical bills, and so forth. But putting all that aside, let&amp;rsquo;s just look at the math.&lt;/p&gt;</description></item><item><title>30x500 orientation</title><link>https://joelclermont.com/post/2012/10/13/30x500-orientation/</link><pubDate>Sat, 13 Oct 2012 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2012/10/13/30x500-orientation/</guid><description>&lt;p&gt;I recently enrolled in &lt;a href=&#34;http://unicornfree.com/30x500/&#34; target=&#34;_blank&#34;&gt;30x500&lt;/a&gt;, an online class designed to teach you how to launch successful products. I know how to run a consulting business (been there, done that) and I know how to build software applications, but I had no real idea how to build and launch a product. After &lt;a href=&#34;https://twitter.com/jclermont/status/250635149824360449&#34; target=&#34;_blank&#34;&gt;tweeting about my enrollment&lt;/a&gt;, a few people responded with curiosity, intrigued at the idea, but not yet ready to put down the money to join. &lt;a href=&#34;https://twitter.com/jclermont/status/257103933389033472&#34; target=&#34;_blank&#34;&gt;Today was orientation&lt;/a&gt;, so I decided to start documenting my experiences right away, not only for my own benefit, but also for those perhaps on the fence about taking this class themselves.&lt;/p&gt;</description></item><item><title>Git goodies: see all unpushed files</title><link>https://joelclermont.com/post/2012/08/25/git-goodies-see-all-unpushed-files/</link><pubDate>Sat, 25 Aug 2012 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2012/08/25/git-goodies-see-all-unpushed-files/</guid><description>&lt;p&gt;My preferred workflow is to be able to push changes into production using git. However, sometimes the project/server doesn&amp;rsquo;t support this (yet).&lt;/p&gt;
&lt;p&gt;In these scenarios, it is very useful to be able to see which files have not yet been pushed to origin. Here is a nice one-liner that does exactly this:&lt;/p&gt;</description></item><item><title>Using Google Authenticator on more than one device</title><link>https://joelclermont.com/post/2012/06/08/using-google-authenticator-on-more-than-one-device/</link><pubDate>Fri, 08 Jun 2012 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2012/06/08/using-google-authenticator-on-more-than-one-device/</guid><description>&lt;p&gt;I take security pretty seriously. Some might even call me a little paranoid when it comes to password strength. It&amp;rsquo;s no surprise that I love two-factor authentication then. Not only can I have a super strong password, but I can now require that I have a security token in my possession in order to login. In other words, even if you knew my 16 character random password for gmail, you still could not login without also having my security token.&lt;/p&gt;</description></item><item><title>Contributing to open source projects slides</title><link>https://joelclermont.com/post/2012/06/03/contributing-to-open-source-projects-slides/</link><pubDate>Sun, 03 Jun 2012 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2012/06/03/contributing-to-open-source-projects-slides/</guid><description>&lt;p&gt;Thanks to everyone who attended my talk today, especially those that asked questions and gave me feedback afterwards.&lt;/p&gt;
&lt;p&gt;I&amp;rsquo;m posting my slides for the talk I gave at WordCamp Milwaukee today. As with most talks, there is a lot more information than what the slides contain, but at least it is something.&lt;/p&gt;</description></item><item><title>Speaking at WordCamp Milwaukee</title><link>https://joelclermont.com/post/2012/05/22/speaking-at-wordcamp-milwaukee/</link><pubDate>Tue, 22 May 2012 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2012/05/22/speaking-at-wordcamp-milwaukee/</guid><description>&lt;p&gt;Just a quick note that I&amp;rsquo;ll be speaking at WordCamp Milwaukee on June 3. The talk is titled &amp;ldquo;Contributing to Open Source Projects&amp;rdquo;. It&amp;rsquo;s not really a WordPress specific topic, but more of a general encouragement for everyone to get involved in open source and how specifically to go about it. Read the &lt;a href=&#34;http://2012.milwaukee.wordcamp.org/session/contributing-to-open-source-projects/&#34; target=&#34;_blank&#34;&gt;official brief on the WordCamp site&lt;/a&gt;.&lt;/p&gt;</description></item><item><title>I love Twitter Bootstrap</title><link>https://joelclermont.com/post/2012/04/17/i-love-twitter-bootstrap/</link><pubDate>Tue, 17 Apr 2012 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2012/04/17/i-love-twitter-bootstrap/</guid><description>&lt;p&gt;If you haven&amp;rsquo;t heard of it, go take a quick look at &lt;a href=&#34;http://twitter.github.com/bootstrap/&#34; target=&#34;_blank&#34;&gt;Twitter Bootstrap&lt;/a&gt;. As you click around the github project site, you&amp;rsquo;ll get the sense that all these layout guides and widgets and buttons and icons look oddly familiar. Part of that is the fact that Twitter itself is built with this style package. But even beyond that, &lt;a href=&#34;http://builtwithbootstrap.com/&#34; target=&#34;_blank&#34;&gt;many many many many sites&lt;/a&gt; are using this tool kit as well. I&amp;rsquo;ve sensed a little backlash, mostly from designers, at this rampant use of the Twitter Bootstrap. At a certain level, I agree, but I&amp;rsquo;m here to talk about why I love Twitter Bootstrap.&lt;/p&gt;</description></item><item><title>Onsite for CodeMash</title><link>https://joelclermont.com/post/2012/01/09/onsite-for-codemash/</link><pubDate>Mon, 09 Jan 2012 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2012/01/09/onsite-for-codemash/</guid><description>&lt;p&gt;Over the next week, I&amp;rsquo;m going to be adding quite a few short posts chronicling my experience at the &lt;a href=&#34;http://codemash.org&#34; target=&#34;_blank&#34;&gt;CodeMash&lt;/a&gt; conference. The event is a few years old, but this is the first year I&amp;rsquo;m attending.&lt;/p&gt;</description></item><item><title>Date calculations are more complex than you think</title><link>https://joelclermont.com/post/2011/09/14/date-calculations-are-more-complex-than-you-think/</link><pubDate>Wed, 14 Sep 2011 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2011/09/14/date-calculations-are-more-complex-than-you-think/</guid><description>&lt;p&gt;Date and time manipulation is an area of programming that seems relatively simple on its surface, but lots of danger lurks just out of view. How hard could it possibly be to take a date/time and add 1 day to it? or 1 week? Piece of cake, right? You might do something like this:&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;$eventTime = strtotime(&amp;#39;2011-09-15&amp;#39;);
//add one day to the date
$newEventTime = $eventTime + (24 * 60 * 60);
//expects 2011-09-16 and will USUALLY work
echo date(&amp;#39;Y-m-d&amp;#39;, $newEventTime);&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;</description></item><item><title>The importance of upgrading</title><link>https://joelclermont.com/post/2011/08/17/the-importance-of-upgrading/</link><pubDate>Wed, 17 Aug 2011 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2011/08/17/the-importance-of-upgrading/</guid><description>&lt;p&gt;Most web sites use third-party code. This code comes in a few different flavors:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;client-side libraries (jQuery, dojo)&lt;/li&gt;
&lt;li&gt;server-side libraries (form mail scripts, oAuth integration)&lt;/li&gt;
&lt;li&gt;server-side frameworks (Zend Framework, Symfony)&lt;/li&gt;
&lt;li&gt;entire applications (WordPress, Joomla)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As a developer, when you selected one or more of these tools, you hopefully picked a project that was active and well supported. This means there will inevitably be upgrades to that third-party code. Some of these upgrades add features, but most upgrades also include bug fixes and security patches.&lt;/p&gt;</description></item><item><title>Finally, a PHP conference in Wisconsin</title><link>https://joelclermont.com/post/2011/08/04/finally-a-php-conference-in-wisconsin/</link><pubDate>Thu, 04 Aug 2011 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2011/08/04/finally-a-php-conference-in-wisconsin/</guid><description>&lt;p&gt;I&amp;rsquo;m a huge fan of &lt;a href=&#34;http://www.phparch.com/&#34; target=&#34;_blank&#34;&gt;php|architect&lt;/a&gt;: the magazine, the books, the online training and especially their conferences. Living in the Milwaukee metro area, I have a short 90 minute drive to the flagship &lt;a href=&#34;http://tek.phparch.com/&#34; target=&#34;_blank&#34;&gt;php|tek conference&lt;/a&gt; they host in Chicago each year. My schedule doesn&amp;rsquo;t always allow me to attend, but I do everything I can to make it. I&amp;rsquo;m still putting into practice the things I learned at php|tek 2010 and I regularly keep in touch with the many friends I met there.&lt;/p&gt;</description></item><item><title>WordPress plugin for contextual dynamic text</title><link>https://joelclermont.com/post/2011/07/16/wordpress-plugin-for-contextual-dynamic-text/</link><pubDate>Sat, 16 Jul 2011 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2011/07/16/wordpress-plugin-for-contextual-dynamic-text/</guid><description>&lt;p&gt;WordPress has a concept called &lt;a href=&#34;http://codex.wordpress.org/Shortcode_API&#34; target=&#34;_blank&#34;&gt;shortcodes&lt;/a&gt;. They&amp;rsquo;re very handy for inserting chunks of text or functionality with a simple text syntax. For example, one of the stock shortcodes allows you to type &lt;code&gt;[gallery]&lt;/code&gt; in a post where you want a photo gallery to appear. But the real power is exposed when you start building your own shortcodes.&lt;/p&gt;</description></item><item><title>Do programmers rely too heavily on internet resources?</title><link>https://joelclermont.com/post/2011/07/07/do-programmers-rely-too-heavily-on-internet-resources/</link><pubDate>Thu, 07 Jul 2011 00:00:00 +0000</pubDate><guid>https://joelclermont.com/post/2011/07/07/do-programmers-rely-too-heavily-on-internet-resources/</guid><description>&lt;p&gt;Let&amp;rsquo;s face it: there is a *lot* to know as a programmer. There is the syntax of your preferred language(s), the syntax and function library of your database technology and you probably have some sort of framework or common library containing dozens, if not hundreds, of classes on top of that. This can be overwhelming at first, but most programmers recognize the folly in trying to memorize everything. The reality is you probably only need to commit a small percentage of that knowledge to memory. The rest can be assisted by your IDE, the documentation or an Internet search.&lt;/p&gt;
&lt;p&gt;Lately, though, I&amp;rsquo;ve begun wondering if programmers might take this notion too far and rely too heavily on their &amp;ldquo;extended memory.&amp;rdquo; This thought occurred to me as I was browsing my Google search history. I saw a couple searches come up repeatedly every few weeks over the course of the last several months. Could it be possible that I was really searching time and time again for the same answer to the same question? It was a scary thought.&lt;/p&gt;</description></item></channel></rss>