I’m a web developer with interests in the open web, art, and ethics. This website is my notebook. Read more
A chemistry is performed so that a chemical reaction occurs and generates a signal from the chemical interaction with the sample, which is translated into a result, which is then reviewed by certified laboratory personnel.
Just finished Bad Blood: Secrets and Lies in a Silicon Valley Startup by Wall Street Journal investigative reporter John Carryrou. Carryrou traces the rise and fall of Theranos and its founder Elizabeth Holmes from the company’s beginnings at Stanford, to Holmes becoming the young female darling of Silicon Valley, to his own exposé and followup articles in the Journal.
This is a really great saag aloo (spinach + potato curry) recipe. There’s almost no chopping involved and the ingredients are almost entirely cupboard/freezer staples. It’s also great for people that avoid garlic or onion since the asafœtida contributes a similar flavour. Goes great with jeera rice.
After far too much delay, I’ve finally ditched MAMP Pro. It’s taken me too long really, that software is decidedly… not nice.
I’m now trying Laravel Valet + MySQL via Homebrew for local PHP development on my MacBook Pro. See notes below for future reference. I had some fiddly points getting started and expect there to be more, but am pretty pleased with the change overall.
0. Back up databases
The pre-step is to back up any preexisting databases so that you can set them up later if needed. Personally, I use Sequel Pro for all local and some remote database management, so I pulled my necessary exports from there.
1. Install and configure Laravel Valet
The first step is to install Laravel Valet. Their installation docs are pretty much all that is needed. The only caveat is that I’d be a little careful about updating Homebrew or Composer willy nilly, just be wary if you already have it installed and need your preexisting version for any reason. While completing the installation steps, pay attention to the warnings! Complete any recommended steps if you can, they pop up for a reason.
If all went well, at this point you should have an Apache server so you’d be ready to work on a file-based website such as one that uses Kirby CMS or a static site generator (Hugo, Gatsby, Jekyll, etc).
2. Install and configure MySQL with Homebrew
To work on a database-driven site like a Craft CMS or WordPress build, the next step is to install MySQL via Homebrew.
The Laravel Valet docs mention this step, but for me it was nowhere *near* as simple as their two-command recommendation. I think there was likely a conflict with my preexisting MAMP-specific MySQL setup and possibly an old Homebrew installation. I ran the commands from the Valet docs to install MySQL v5.7 and run it, but I would get the error
The server requested authentication method unknown to the client [caching_sha2_password] on the front-end. This error indicated that it was actually running MySQL v8 (read more). Sure enough,
mysql --version returned
mysql Ver 8.0.16 for osx10.14 on x86_64 (Homebrew). To sort it out, I had to reinstall and restart the MySQL service.
To remove MySQL, I followed these instructions. (Be careful with those commands, they remove a lot of stuff.)
After I’d gotten rid of MySQL, I ran the commands below to install, link, and start the service.
brew install firstname.lastname@example.org brew link --force email@example.com brew services start firstname.lastname@example.org
Note that I tried doing this without the link but consistently ran in to the error
Can't connect to local MySQL server through socket '/tmp/mysql.sock' when trying to connect in the next steps. Linking seemed to sort it.
After this, I followed the installation’s recommendation and ran
mysql_secure_installation. This is so that we set the root user’s password since it is required for phpMyAdmin and Sequel Pro (coming up next).
3. Set up and / import databases
Once MySQL is set up and running, it’s time to configure the databases. To do this via the command line, run
mysql -u [username] -p [databasename] < [filename.sql] (replace bits in brackets) and when prompted, enter the password you set up via
Otherwise, you can do it via a UI such as phpMyAdmin (see Laravel Valet-friendly steps) or Sequel Pro.
4. Adjust PHP settings (optional)
I usually adjust my PHP settings (e.g.
post_max_size, etc.) per-project so that they’re closer to the site’s production hosting environment. I thought it would be as simple as adjusting the
php.ini file that is specified in the “Loaded Configuration File” value returned by
phpinfo(). I edited
/usr/local/etc/php/7.2/php.ini and then ran
valet restart to restart the server and… it didn’t work. One of my changes was respected according to
phpinfo(), but the rest weren’t.
I checked the “Additional .ini files parsed” value and saw that the file
/usr/local/etc/php/7.2/conf.d/php-memory-limits.ini was also in use. After I edited this file to include my preferred settings and restarted Valet, all was well.
5. Adjust Nginx config (optional)
Valet’s default Nginx config should normally be sufficient, but you might have to tweak it for certain edge cases.
My edge case was the British Earways site (read more). I was working with it locally and suddenly ran in to a
413 Request Entity Too Large error when attempting to upload a very large audio file. To get around this, I needed to raise the
client_max_body_size Nginx directive.
To adjust the Nginx configuration, I first had a look at the main config file by running
/usr/local/etc/nginx/nginx.conf. Scanning through that, I saw a few includes:
include "/Users/[username]/.config/valet/Nginx/*"; include servers/*; include valet/valet.conf;
I had a look at
client_max_body_size and changed that value to suit my requirements, and then restarted the server by running
Other useful things
brew services listto find out which services are running. This is useful for troubleshooting if you’re having PHP or mySQL errors.
- If you’re adjusting the PHP settings in a
valet restart, and then suddenly start seeing only an “It works!” screen where your site should be, you probably have to stop Apache first before restarting Valet. Most guidance online recommends running
apachectl stop, but I had trouble with this (see related StackOverflow thread). Instead, I ran
sudo killall httpd, then
valet start. This worked smoothly
- Here’s a list of MySQL commands.
- For more info about what
$PATHis and why it’s important, see this Unix & Linux Stack Exchange thread.
- I usually use redirect rules to use media from production when developing locally. Laravel Valet doesn’t seem to play nice with the normal
.htaccessmethod, maybe because it’s actually an Nginx server. See “Proxying images to a remote host on Laravel Valet” for an effective alternative.
Edit 10 July 2019 – Added further notes based on working with Laravel Valet the past few days, including the PHP and Nginx config adjustments.
I think we think too much. I think.
Been getting a bunch of targeted phishing emails recently. They’re pretending to be my domain registrar, saying that payment is overdue and they’re going to delete my domain permanently. I’ve received similar things before, but this one of the more convincing and aggressive attempts I’ve seen.
This reminded me about a task on my backlog of TODOs, sorting out my domain’s SPF and DKIM. Both are email authentication methods designed to detect forged sender addresses in emails, a.k.a. email spoofing. SPF + DKIM won’t prevent inbound phishing emails, but they do help prevent my own domain from being spoofed in shady outbound emails.
I’d forgotten to add a SPF record so sorted that out. I made sure to add
include values for both my email provider and my web host since the web host is responsible for sending things such as password reset emails from the CMS. Unfortunately, my email host Gandi doesn’t support DKIM. 🙁 So that’s a non-starter.
I’ve been considering switching to Proton though, and happily they offer SPF, DKIM, and DMARC.
Maybe I’ll make the switch a bigger priority.
Eventually I’ll look in to a DMARC policy, but that’s going to come a little later.
A few links that may be useful:
Another Musarc gig coming up this weekend, this time we’ll be in the Whitechapel Bell Foundry. Info & tickets
How to use instant lettering
- Remove blue backing paper and position sheet on working surface. Shade lightly over the letter with a ballpoint pen.
- Gently peel away sheet – the letter is now transferred. Repeat until your lettering is complete.
- Re-burnish through backing paper over copy for firmer adhesion.
Finally sat down to take pics of Mom’s old dry-transfer lettering.
I’ve just added a Work & Background page to this site that provides a bit more context for what I do and some selected projects. It’s a WIP, there are some thumbnails I would like to swap out and I’m sure the text will need tweaking. Nice to have a version up at any rate.
I’m really hoping to explore a few new-to-me bits of tech in the near future, particularly related to our books index. SB has been doing some very cool experiments with that recently.
Finally got round to reading Cassandra Darke by Posy Simmonds. It’s great, a graphic novel with the sort of heroine you don’t often see and a crime plot line with just the right amount of drama / pulp. And excellent illustration, of course!