When I have a new project that requires some Amazon S3 storage, I try to do the “right thing” for security by creating a new user and a new bucket entirely. I don’t want to share any credentials across projects. That means after I have created my S3 bucket I neeed to assign a user with the appropriate permissions. For me, that typically means I want this new user to have full access to… + read on
On January 30, 2018, Instagram posted a deprecation notice for The Instagram API Platform. There is a newer API called the Instagram Graph API. The newer API’s focus is for businesses, not individual accounts though. This is the 2nd major change made to the API. The first major change was in November 2015. If you’re curious, here’s the announcment. The changes introduced a new app review process and limited 3rd party… + read on
I have used MAMP for local development for a long time. Several people I know through the Craft CMS Slack group have professed the benefits of [Laravel Valet](https://laravel.com/docs/5.5/valet ‘Laravel Valet documentation’) so I decided to give it a spin as an alternative to MAMP. When it comes to Craft CMS there is a built-in driver that allows Valet to serve a Craft site without any additional configuration. You just place your Craft site in… + read on
I had a client who wanted to embed YouTube videos in their Craft CMS site. It would have been easiest for me to have them only include the YouTube video ID but the sharing box on YouTube gives you a full YouTube URL. You can see that URL in the image at the beginning of this post. I didn’t want to add any plug-ins to my Craft CMS site to do this so I… + read on
I had to debug an issue with a site I built when client/friend discovered that the menu toggle icon disappeared only when visiting her site from within Instagram, specifically, on her bio page where she has a link to her site. Being an in-app browser within an application I have no control of, I struggled to debug this problem. The “userAgent” string, as shown in the image above helped me out. I used the… + read on
Note to self: Don’t erase your
knownhosts file. (headslap!) I provision servers with Laravel Forge and messed up my deployment from Github recently. I was messing around in the
.ssh folder on my server and deleted the
known_hosts file. The next time I tried to deploy my code base from Github though, I got the following error.
Host key verification failed. fatal: Could not read from remote repository. I needed to get… + read on
I inherited a Craft CMS site that I now maintain for a new client. When you inherit other people’s code, you need to see the project from their POV to get an understanding of they see things working. Luckily Craft seems to encourage logical structures being built so I’ve not had too much trouble getting up to speed on this site. One of the problems I did run into was with a simple Plain… + read on
You like videos, right? Then you’re probably familiar with HandBrake, the open source video conversion tool. Encoding a single file is pretty straightforward, but the program has the ability to set up a cue and go through a bunch of shows while you are away from your computer. Here’s a quick video walkthrough on how to use this feature I put together for a friend.
I’ve been teaching myself Gulp recently. I found the basics easy to pick up. Although I didn’t consider myself a Grunt expert, I’d taught myself Grunt previously and that helped with me with Gulp. Before we go further, check out the GitHub repository that contains the finished example project we’ll go over here: https://github.com/johnfmorton/using-gulp-htmlprocess-example One thing I have seen in both Grunt and Gulp workflows I’ve used from their repositories was a script… + read on
I recently worked on a site which saved data in it’s local database which needed to be collected and sent each day to a remote server via SFTP for analysis. Needless to say, I didn’t want to manually do this process every day, but I had never fully explored cron jobs, so I had to teach myself about cron jobs while I figured out the problem at hand. Here’s how I ended up automating… + read on