Feeling encouraged by my friend Jeremy Felt’s blog post on the subject, I thought I may finally be able to achieve the panacea of WordPress Multi-Network SSL configurations:
… Read more about Variable SSL certificate directives in nginx (part 2)Blog
Install nginx from source
At the time of this writing, the latest stable version of nginx is 1.16.0, and none of the package managers have updated themselves to include it.
Before you get started, you’ll want to be logged in to an open terminal session with a user that has sudo
access. The reason for this, is because nginx itself requires root
access when it starts up, to bind itself to lower number ports (usually 80
and 443
.)
You’ll also notice that I use nano
for editing files. Use what you prefer.
First, stop any version of nginx that might already be running:
sudo service nginx stop
Next, you’re going download the latest version of nginx directly from the official website:
cd ~/
wget http://nginx.org/download/nginx-1.16.0.tar.gz
Next, decompress it, and change into the new directory it made:
tar xvf nginx-1.16.0.tar.gz nginx-1.16.0/
cd nginx-1.16.0/
Next, you’ll probably want to install some related dependencies. Below is a pretty general list, but if you know better for yourself, replace these as needed:
sudo apt-get install -y curl build-essential make gcc libpcre3 libpcre3-dev libpcre++-dev zlib1g-dev libbz2-dev libxslt1-dev libxml2-dev libgd2-xpm-dev libgeoip-dev libgoogle-perftools-dev libperl-dev libssl-dev libcurl4-openssl-dev libatomic-ops-dev
Next, you’ll want to configure nginx.
There are about a million different ways to do this depending on your needs. For our purposes (and for most people reading this) the below approach should be sufficient:
sudo ./configure \
--user=nginx \
--group=nginx \
--prefix=/etc/nginx \
--sbin-path=/usr/sbin/nginx \
--modules-path=/usr/lib/nginx/modules \
--conf-path=/etc/nginx/nginx.conf \
--error-log-path=/var/log/nginx/error.log \
--http-log-path=/var/log/nginx/access.log \
--pid-path=/var/run/nginx.pid \
--lock-path=/var/run/nginx.lock \
--http-client-body-temp-path=/var/cache/nginx/client_temp \
--http-proxy-temp-path=/var/cache/nginx/proxy_temp \
--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp \
--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp \
--http-scgi-temp-path=/var/cache/nginx/scgi_temp \
--with-select_module \
--with-poll_module \
--with-threads \
--with-file-aio \
--with-http_ssl_module \
--with-http_v2_module \
--with-http_realip_module \
--with-http_addition_module \
--with-http_xslt_module \
--with-http_xslt_module=dynamic \
--with-http_image_filter_module \
--with-http_image_filter_module=dynamic \
--with-http_geoip_module \
--with-http_geoip_module=dynamic \
--with-http_sub_module \
--with-http_dav_module \
--with-http_flv_module \
--with-http_mp4_module \
--with-http_gunzip_module \
--with-http_gzip_static_module \
--with-http_auth_request_module \
--with-http_random_index_module \
--with-http_secure_link_module \
--with-http_degradation_module \
--with-http_slice_module \
--with-http_stub_status_module \
--with-http_perl_module \
--with-http_perl_module=dynamic \
--with-mail \
--with-mail=dynamic \
--with-mail_ssl_module \
--with-stream \
--with-stream=dynamic \
--with-stream_ssl_module \
--with-stream_realip_module \
--with-stream_geoip_module \
--with-stream_geoip_module=dynamic \
--with-stream_ssl_preread_module \
--with-google_perftools_module \
--with-cpp_test_module \
--with-compat \
--with-pcre \
--with-pcre-jit \
--with-zlib-asm=CPU \
--with-libatomic \
--with-debug \
--with-ld-opt="-Wl,-E"
Many of the above flags are important, but I think the most important one for our purposes is --with-debug
because without that flag, you cannot log any of nginx’s important debug information, in the event something isn’t working correctly.
Next, you need to build the executable from the configured source. You’ll make it and install it like this:
sudo make && sudo make install
Next, you’ll want nginx to autostart on boot, so:
sudo nano /lib/systemd/system/nginx.service
And put this in there:
[Unit]
Description=The NGINX HTTP and reverse proxy server
After=syslog.target network.target remote-fs.target nss-lookup.target
[Service]
Type=forking
PIDFile=/var/run/nginx.pid
ExecStartPre=/usr/sbin/nginx -t
ExecStart=/usr/sbin/nginx
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
Then run these two commands and nginx should fire right up:
sudo systemctl daemon-reload
sudo service nginx start
All done!
Pastebot added Dvorak Support
Wi-Fi Calling – macOS
This glitchy bit of UI shows up after enabling WiFi calling on an iPhone.
WordPress 5.0 Beta 1
I’m writing this post using the new block-based editor that comes packaged with the first WordPress 5.0 beta, known previously and externally as Gutenberg.
For just general writing, so far it ain’t so bad, but one thing that bugs me straight away is that the auto-save causes the UI in the upper right corner to jiggle around every few seconds. I keep thinking it’s a notification in macOS, so I stop writing to look up at it, because it’s all just outside my periphery.
I type. I pause to think. Autosave triggers. I look up and right. I forget my original thought.
In this post, I haven’t needed to add any blocks or format any text, and I haven’t needed to move any text or paragraphs around. I have a feeling this is how most people will interact with this editor most of the time, and for that, it generally gets the job done no different than the classic editor did.
I suppose it’s about time I try to insert some kind of image, so here’s a shot I took today of some concrete that got poured behind the building my office is in.
I think it’s a little weird that the default new-block buttons are: image, header, and gallery. (I think think it’s even weirder these change over time to be my most-used blocks. Consistency is gone.)
It’s weird when I hover over the “P” for paragraph button, that it changes to 2 arrows creating a circle. No other buttons change their contents on hover; what makes that one special? And it changing makes me afraid to interact with it, because I’m afraid of what it does now.
The vertical elipsis icon reminds me of Pokey the cactus from Super Mario Bros. It’s literal usage is to indicate an intentional omission of a word, so… it’s a stretch to use it here, but it’s not totally semantically inaccurate, I guess?
I also don’t like that new empty blocks don’t have the hover-bar UI thing above them. I think it would feel more natural if the new default block were just a paragraph always. This new rogue block has a “+” next to it, but clicking it doesn’t actually add anything – it reveals a menu to pick the block type from a huge accordion picker.
The more that I move the mouse to pick blocks and click on things, I’m noticing a lot of hidden UI reveal itself and then disappear in ways that don’t feel natural to me. I’m not digging this part of the experience at all. There are grey and blue hover/focus outlines on blocks, toolbars pop-up, the buttons in them have tooltips that pop-up, and there’s a grabber UI for relocating blocks that comes and goes – it’s just… a lot going on.
I’m going to try the drop cap feature on this block. It’s turned on (blue) now, but I don’t actually see a drop cap. If I save and preview the post, it’s there, but it’s not in the editor. Oddly, it’s targeting both the “I” and the apostrophe from “I’m” which doesn’t seem correct. Why wouldn’t it just target the first letter by itself?
Oh. So the drop cap is only visible when I’m not typing in the box. When I hit enter and created a new block, the drop cap became visible in the editor. That feels super weird, but it’s hard to know if that’s a bug or a feature. That’s kinda how I feel with most of this so far – it all feels like everything is very intentional, while also feeling like nothing I want it to do.
This paragraph has a green background with white text. I’m not sure why this is even an option yet. This is the kind of feature I would wait to build after the rest of the editor is working correctly.
A warning appeared that this color combination might be hard to read, but I can’t imagine that white-on-green is actually that horrible.
It’a a running joke amongst some close friends that I’m going color blind, specifically around oranges and reds. Naturally, I don’t see that as a problem. 🙄
It was nice of the editor to add some padding around it automatically, but unfortunately I found another bug with this feature. If you insert a new line without creating a new block, it looks perfect in the editor, but that new line is interpreted as a new paragraph when previewing it theme-side.
These side-by-side images went in pretty normally, but I think the gradient effect is not the greatest.
It’s odd that the “Settings” sidebar thing, under “Block”, doesn’t actually let you change the block type there. It shows what kind of block it is, but clicking it does nothing. Why isn’t that a block-picker? It has the same icon in it as the hover-bar thing, but it’s not interactive.
I also noticed in writing this that I’m not sure what the many, many UI dinguses are actually named. Inspector? Toolbar? Is a meta-box still what we call these inspector sections? Is there a glossary of terms somewhere?
And why is it when I’m focused on a block, I can’t insert a new block because the hover-bar thing is in the way? The “+” is gone, and I need to click out of the block and hover over it to make the “+” come back so I can insert something new.
I just floated that button over there, which worked OK, but now I lost it because I inserted a block ahead of it. No idea how that happened. Let me try that again. OK I think it’s back. Color picker is nice. Why no hover color or effect?
The button block had a button with an “enter” looking arrow in it that, when hovered over, popped up a tooltip that said “Apply.” I clicked it, and it didn’t do anything. I assume it applied, but what did it apply? Why is it an “enter” arrow looking thing? I’m feeling a bit overwhelmed with iconography at this point.
- Let’s try a list
- How’s it work?
- What formatting options does it have
- In the “Settings” inspector bar thing, it looks like it has no settings
- The hover-bar is back. What’s it got there?
- Oh, all the typical list settings are there, but they disappear when I type
- Hovering over the list icon brings back the double arrows again. No like.
- I can indentPressing tab does not indentI can’t get multiple indented list items to work
- When I click enter, it doesn’t retain the indentation
- Nested lists are totally broken and not working
This is a quote block. This theme of mine supports them. Hopefully it works!
–JJJ
Clicking enter has me locked into the citation block
I can’t get out
Looks like I need to use the arrow-down key to get out.
Phew. That was close.
This is a heading. The “Settings” inspector thing has options here. I can pick H1-6, plus text alignment. I’m gonna center it, because why the heck not.
I'm gonna write some 1337 code in this box.
Hitting enter in here also does not break me out of the block.
No matter what I do.
I guess it's arrow-down time again.
Yep. That did it. But now that I’m in this paragraph block, arrow-down doesn’t do anything. So weird.
Hitting enter got me here.
^— That’s a spacer. Why is that even a block option when basic things like lists don’t work correctly?
Let’s try columns
Hitting enter kept me in this one
Hitting tab kinda focused on this one, but I still couldn’t type in it.
Finding the parent block to adjust the number of columns is really hard.
There’s only a 1px target to click to target the parent block to make this 3rd column
Hitting enter makes a new block in this column
I needed to hit the down arrow to get out of the column block.
Mr. Paul!
Here’s me testing the “Media & Text” block. This one seems to work like I expect it to, except there is no parent-block hover-bar picker thing, and clicking the image doesn’t do anything. I expect that to pull the media library back up. How do I change that image?
Oh. I need to click the parent block for a hover-bar to appear. So, now it’s a click-bar? Huh.
I couldn’t enter out of the above block, so arrow-down again!
Hitting enter brings me to a new line in this same block.
Now, hitting enter a third time brought me here. That felt like a bug, but I’m honestly not sure how I’d duplicate it.
Had to arrow-down out of that one, too. I guess it’s just paragraphs that need entering out of, and maybe other random ones?
That button should take you to a post about bbPress 2.6 caching. Having buttons like that is a nice touch, but theme-side, it’s not even a button – it’s an anchor. 🤦♂️
On that 🎵 I think I’ve done all the testing I can do for 1 hour. ✌️
Oh wait… Category search doesn’t work. UGH.
A Lady Stole Our Goats
At 4:33am this morning, a lady passed our house, slammed on her brakes, threw her car in reverse, threw her hazards on, parked facing oncoming traffic, on a state highway, to steal 2 steel goats we had on our front lawn.
Stop syncing node_modules
Put this in your .bash_aliases
or equivalent:
# Stop syncing a node_modules directory (via symlink)
noicloud() {
mv node_modules node_modules.nosync
ln -s node_modules.nosync/ node_modules
}
alias nocloud=noicloud
iCloud ignores files & folders with a .nosync
extension, and also ignores symbolic links. This is the closest work-around I could find to prevent iCloud from having an endless recursive fit about it.
Facebook Remembers
Social networks and social media are weird. I'm deleting my Facebook account, but I'm not just deactivating it – I'm going post by post, comment by comment, through my entire 10 year history and deleting each agonizing thing one at a time.
It's insane. I'm insane. And Facebook knew I was insane way before I did.
Something weird happens on modern day social networking applications and websites that I never experienced on previous generation forum type software. I'm sure this phenomenon has a name; I'm sure folks smarter than me knew about what I'm about to describe years and years ago; now that I've recognized it, I'm going to try to outline it here so that I never repeat myself.
I bet older generations had a version of this, too, but I bet it happened in person instead.
So, because applications like Facebook and Twitter are all about me seeing you, and because we've cemented our friendship with a formal request and acknowledgment, and because I choose to follow you, I think I have a relationship with you that I never really had. I see your posts, photos, and updates, and I think "this person wants me to engage with them" when, frankly, that's unlikely to ever be the case.
The reason I know this, is because I can look through every single comment and post on 10 years worth of Facebook content, see that there are people who I frequently respond to, who do not respond back. Ever.
I'm not mad that you don't like or comment. It doesn't bother me. The problem is that algorithmic platforms like Facebook and Twitter DO, and they use the patterns of our relationships (or the anti-patterns of our non-relationships) against us, without telling us exactly how.
For example: I've basically forgotten about 99% of the things I've ever said online, usually instantly after hitting publish, but Facebook will never forget. And they're able to calculate the intersection of times we've had interactions back and forth, over all of our online years, to identify that I like you more than you like me. I literally like your posts and comments more than you like mine, and Facebook has always known this.
It's fine that they know this, I guess. What's not fine is that they don't say that they know this, and that they use that knowledge to manipulate our entire interaction with their platform, by: weighting posts and comments higher or lower so that we are more or less likely to read or engage with them; by showing us ads that might make us feel better or worse based on things our friends bought or sold; by tricking us into thinking that by me saying "congratulations" to you that you'll remember that I'm still back here working towards accomplishing something that maybe you'll congratulate me back for later too. Jesus.
None of this is about privacy settings, or who stole my information, or who gave my information to what advertisers, because I gave it away for free first. The risk was mine to take, and I took it; I have no one to blame but myself, so just like I'm responsible for whatever the online version is of me that Facebook and Twitter and everyone else think you should see, I need to be responsible for taking that power away from them.
Platforms like Facebook and Twitter are our worst friends. They know us at an intimate level, at our best and at our worst, and they use everything we say and do against us…
I want to see what exactly they're using against me, and what they gain from it. Pennies? Dollars? What does it cost them to host my 600 images, and what do they gain from me allowing their advertisers to scan through those images to identify that I own several LEGO sets, an XBOX, have 2 dogs, and so on.
I want control over their narrative. I want to be able to tell them "I don't actually like my XBOX; I only play 1 game, and it's buggy as shit, so it sucks and all that mining that you did was worthless and you're wrong."
I want to be able to say "I'm only friends with this person here because I think declining their request feels unkind, so even though I'd prefer they not have access to everything, and even though I'd prefer to not have to go through the work of blocking them but still somehow being friends, they aren't actually anyone I am friends with."
Obviously you and I are friends; besties, even. I mean, you've made it this far, right? But a lot of other people read something I post, don't get what they expected from me, think that I'm crazy or whatever, and don't engage. Maybe you unfollowed me. Maybe they mute me. I'll never know.
Platforms like Facebook and Twitter are too much like real life, in all the bad ways that make us insecure, neurotic, and just a bit foolish because it's not even real life or whatever.
Lots of folks online are not my friends, but current generation social platforms are built to show us the best of what we asked to see. I actually do think it feels pretty natural to engage in conversations you find interesting from people you care about, regardless of how much they care about you back.
This is basically how folks like my mother like and repost everything that they see. Yes, it's process addiction. But it's also the best way they have available to them to use the platform everyone they care about is on in a way that enables them to "prove how much they care" a million times a day.
It's super weird, and really unhealthy, but kinda cute, I guess?
So, that shit stops now for me. I'm done commenting on stuff. I'm done liking stuff. I mean… I'll like it, but I'm just going to assume that you know I like it because you know I like you, and support you, and want to see you succeed. And if you need validation from me, or miss hanging out, I expect you'll reach out and say so.
I want to double down on work, on real life stuff, and solving bigger harder problems. No more likes or comments. Just work, results, and healthy positive reciprocating caring relationships. Hopefully, that's with you.
In a way, this all feels wrong, which I think is why it's probably right. If less is more, than nothing is most, and silence is golden. Peace, and humptiness forever.
Untitled
Open source requires a senatorial style of leadership to move big projects forward since there isn't necessarily a single key decision maker.
Joe McGill