While trying to setup TP-Link Deco mesh wifi devices, I found that it was easy to plug one of the devices into my existing wifi router. The Deco creates its own wifi network, however, instead of boosting the signal where it was plugged in.
Problem: Light Turned Red
I tried to replace my router with the Deco, and I ran into a problem. The light turned red after creating the Wi-Fi name and password.
Solution
On Xfinity, the correct IPTV/VLAN settings are:
Turn on IPTV/VLAN
Connection type Dynamic IP
Mode Bridge
Where to input these settings
Open the Deco app
Navigate to More -> Advanced -> IPTV/VLAN
This helped me configure my TP-Link Deco Mesh W3600 devices, but may work for other wifi networks using Xfinity internet.
I switched to Laravel Valet for local WordPress development on my Macbook in December 2019. I love it. I presented at January’s WordPress Lancaster meetup about how and why I made the move.
This week, I’ve written some code that protects uploads to the WordPress Media Library. (Did you know that anyone can view uploads if they find the URLs? The Media Library uses only security by obscurity.) To code my solution, I’m using an .htaccess file to protect a subfolder in wp-content/uploads.
There is No .htaccess in Nginx
.htaccess files do not work in Laravel Valet because it uses the nginx web server instead of Apache. (And, Valet does not use a reverse proxy to allow Apache features to work while running the faster nginx.) nginx does not allow its configuration to be changed on-the-fly, and that’s one reason it’s faster than Apache.
To replicate the protected folder mechanism, I learned how to block access to a directory inside an nginx configuration file, but that introduced a new challenge: Where is the nginx configuration file? Most resources will identify usr/local/etc/nginx/nginx.conf as the configuration file, and while that’s correct, changing it and restarting Valet did not change the behavior of the folder.
Nginx Config File Location for Laravel Valet
Each site you create inside Valet gets its own configuration file at this location: ~/.config/valet/Nginx/sitename.test This is the file you should edit.
Restart Valet to Allow Configuration Changes to be Loaded
Nginx needs to be restarted in order for configuration changes to take effect, and I found it easy to use this command inside Terminal: valet restart
I recently bought my first mechanical keyboard. The COVID-19 pandemic means I’m switching between my Macbook and a Windows machine throughout the week at the same desk, and while I was comfortable typing on the Macbook, this HP Spectre keyboard and I do not get along. The differences in shortcuts for copy and paste alone were causing me to make enough mistakes to know it was time to invest in a peripheral keyboard.
Alas, I’ve made the leap to a mechanical keyboard, a Durgod K320 in space grey with Cherry Silent Red switches (120$ shipped). Typically, I’m the kind of guy who buys whatever Wirecutter recommends, but their suggestions for mechanical keyboards are bad ones.
Features you Should Demand of a Mechanical Keyboard
the ability to remap any key
multiple profiles of key mappings
Wirecutter recommends the Varmilo VA87M and the Leopold FC750R. I couldn’t determine if these keyboards include software that makes it easy to remap keys while shopping. The Leopold’s keycaps don’t have legends for the multimedia controls of the function keys, so users will have to memorize the alternate roles of F5 through F12, print their own legend, or change the keycaps. I can’t support these accessibility shortcomings.
Durgod Zeus Engine Only Runs on Windows
The keyboard I bought has companion software to customize the key map and save multiple profiles. That software is called Durgod Zeus Engine, and it only runs on Windows. That might be a showstopper for some, but not I. The current version of Zeus Engine is 1.0.2.12, and it is much better easier to use compared to when I first bought this keyboard.
The changes I’ve made to make this keyboard macOS friendly are as follows:
Swap Left Ctrl and Left Windows keys (macOS’ command defaults to the Left Windows key instead of Alt, which is weird and why freedom to customize is important.)
Are you getting this error from Azure SQL Server? Login failed on ServerName.database.windows.net.DatabaseName Please verify that the shards are accessible and that the credential information affiliated with external data source ExternalDataSourceName is correct.
When I ran into this error while migrating a SQL Server instance to Azure and designing External Tables, it was because the user I specified as the IDENTITY during DATABASE SCOPED CREDENTIAL creation had a different password that the LOGIN of the same name in the Master database.
Say we create a user in the Master database like this:
CREATE LOGIN ExternalTableAdministrator WITH PASSWORD = 'Nr26MY4@Q407inLE83[I7L$~5j5UL';
Later, when creating a database-scoped credential (and specifying this user as the identity), make sure to use the same password:
CREATE DATABASE SCOPED CREDENTIAL [ExternalTableCred]
WITH IDENTITY = 'ExternalTableAdministrator',
SECRET = 'Nr26MY4@Q407inLE83[I7L$~5j5UL';
GO
This post was written the first day I encountered this error on Azure SQL Server because I could not find any web page that contained this error message.
If you’re getting the error, Computed columns are not supported with external tables for sharded data. while trying to create External Tables, remove the computed column definitions. Treat computed columns like normal columns and provide a data type. Read this: https://stackoverflow.com/a/43382300/338432
This is the Mitel 5340 phone for which these instructions were written
The company where I work migrated to a new phone provider, and I am publishing the notes I’ve taken over the last few years before I delete them. Most of these instructions begin inside the Mitel Administration & Diagnostics software.
How to reset a voicemail box password when someone forgets their password
Go to Voice Processor > Devices > Mailboxes, and choose the mailbox to which you need access.
In the right pane, find Passcode.
Right click the hashes and choose Edit Passcode.
How to check another mailbox’ voicemail
Dial 2501
Press **
Enter the mailbox number
Enter the mailbox password
Press #
How to change the email address where voicemails are sent as attachments
Go to Voice Processor > Devices > Mailboxes.
Expand the extension of interest and click Email Synchronization.
Change the Email Address for Voice Messages setting.
Note the Email Client Message Format setting that allows MP3 or WAV.
How to access the admin voicemail box
Dial 2500 to reach the voicemail system
Press *
Enter the mailbox number (1999 in our case) and password (also 1999 in our case)
How to add an extension/phone to a hunt group
Go to System > Devices and Feature Codes > Hunt Groups.
Expand the group extension, and double click Members.
Right click in the right hand pane and choose Add to List…
How to add a recording to the main announcement played for all callers
Go to Voice Processor > Devices > Applications.
Choose the application that corresponds with our main day and night announcements. (in our case these were 2505 for day and 2506 for night)
Click on Day Greetings.
Right click in white space in the right pane and choose Add to Day Greetings List…
Follow the prompt to add a recording to the list.
Drag the recording to set the order in which the recordings will play.
How to change the length of time a caller is left on hold in a hunt group before an announcement is made or a transfer is made to another extension
Go to System > Devices and Feature Codes > Hunt Groups.
Expand the group extension, and click Timers.
The Announcement setting is the length from beginning of call to when the announcement is delivered.
The Recall setting is the length from beginning of call to when a call to an extension is made.
How to change the name of the human using an extension
Go to System > Devices and feature codes > Phones
How to forward all your calls to an external number
Press the special key, which is the X inside a circle to the right of the blue call history button.
Enter the feature code 355
Enter the number to which calls should be forwarded, including any external line prefix (8 in our case)
How to hear or change a greeting
Dial 2500 to reach the voicemail application
Press *
Enter the admin mailbox number (1999 in our case)
Enter the password then # (also 1999 in our case)
Choose hidden option 9, then 3, then 1 to change (or 2 to listen)
Enter the recording number given to you (example 023) then #
Record your message and listen to the instructions carefully to save your recording
A few moments ago, I wanted to append an inline style to the theme’s stylesheet from within a plugin. This requires knowing the current theme’s stylesheet handle, so here is a function that finds that string.
private function find_theme_stylesheet_handle() {
global $wp_styles;
foreach( $wp_styles->registered as $handle => $style_obj ) {
if( $style_obj->src === get_template_directory_uri() . '/style.css' ) {
return $handle;
}
}
return null;
}
WordPress provides a filter hook, robots_txt, that dynamically generates robots.txt if the file does not exist. This filter allows developers to create unique robots.txt files for each site in a multisite network, since all the sites in the network share the same root directory (and therefore the same robots.txt file).
If this filter is not working for you, you may need to delete the robots.txt file from the root directory. The robots file will not be generated if the file actually exists.
Robots.txt is a file that communicates The Robots Exclusion Protocol to non-human website visitors, which are commonly called bots. Bots read robots.txt for guidance about how to best crawl the site.
While writing the companion piece, What It’s Like To Co-Organize Your First WordCamp, I realized that I had created a list of Twitter marketing tips that should really live in their own post. Here’s that.
I run a number of Twitter accounts, and some people seem to enjoy following them. A few of them, @LititzBeerFest and @WordCampLanc promote annual events. Here are some examples of how I have been an event cheerleader on Twitter. Less than 100% of the tweets from these two accounts are written by me, but all of the tweets included in this post were written by me.
You are in a countdown to the event, so you can link X days until the event to a relevant number.
55 days until WordCamp Lancaster! Fifty-five is the default word count returned by the_excerpt(), and $55 scores two tickets and change.
Everything is an exclusive. Twitter is where all news breaks, so help the reader of your tweet believe they are the first person to receive your message.
Just added 7 breweries to the list on our website. Which ones were they?? ??????
Have a sense of humor. Carefully. Riffing on current events is often hilarious, but risky business for brands. I got away with this one on the night of one of the 2016 Presidential debates to show off our left-over kegs. This is an Instagram photo and caption that I shared to twitter.
https://www.instagram.com/p/BK12LUljOGS/
I didn’t take any risks with the WordPress audience, however, and instead, I opted for mostly harmless quips in quote-retweets.
Use scheduling software. I like TweetDeck, but I am glad my WordCamp Lancaster team used HootSuite because now I know a bit about HootSuite. These apps allow teams to collaboratively use an account and not step on each other’s toes. (These apps also allow you to tweet early and sleep in.)
Don’t auto-post from Facebook. Everyone knows that you didn’t write a tweet that ends with a fb.me link for Twitter, and Twitter lovers like me refuse to retweet that trash. Even if your primary publishing platform is Facebook, do not auto-post to Twitter. During the first few years of the Lititz Craft Beer Fest, I developed a habit of posting on Facebook and rushing to Twitter to delete and rewrite the auto-posted tweets because someone had already linked the two together. That’s not totally effective or a thing that normal, sane people do. I have since severed the link.
Repeat yourself. Starting a tweet with ICYMI (in case you missed it) is totally appropriate. Quote-retweeting yourself is OK. Tweeting an identical tweet twice a day is not cool, though. If someone feels that a tweet was generated by software, they will be less likely to read and spread your message.
ICYMI we sold out last night. Our website will be updated later after our "website guy" "sobers up" and "gets off Twitter."
— LititzCraftBeerFest (@LititzBeerFest) July 20, 2015
Be generous with the likes and retweets. Most of what you do to grow any account’s reach is to search for relevant terms, click the Latest tab, and like many tweets. For WordCamp, I searched WordCamp and liked tweets about other WordCamps both near and far. For the Lititz beer festival, I searched Lititz beer to find everyone tweeting from local bars. If your sponsors aren’t active on Twitter, like a few of their old tweets to let them know you’re ready to help them grow by retweeting anything they give you. Retweet lots of people that mention that they are excited about or just acquired tickets to your event.
Don’t disappear during the event. This is hard unless you don’t have many obligations the day of the event. If you are using an event hashtag, you should be watching that in addition to answering questions and still cheerleading. I am proud to have prompted this photo of our WordCamp organizer team, and our followers enjoyed it, too.
Do disappear a few weeks after the event. It’s OK that your account goes inactive for months at a time for an annual event. The Lititz Craft Beer Fest sells out every year, so too much action just reminds some people that they are on the outside looking in. I also don’t want to lose followers in the off-season, and it’s hard to want to un-follow an account that isn’t showing up in your timeline. There are also critical milestones that can hold up event marketing, like confirming dates and venues. The marketing should start when you are ready to announce your date. You can even hold the venue to be it’s own separate press release.
I helped organize WordCamp Lancaster 2017. I was a rookie and had not worked on a WordCamp before. As soon as I had agreed to join the organizing team, I went searching for a post like this and didn’t find many. There are a few good ones about organizing a WordCamp in a city that has never hosted a WordCamp before, but that’s not my experience. WordCamp Lancaster 2017 was the conference’s fourth year, and it was a huge success. Here are my thoughts.
Why Organize Events?
My code-writing brain loves iteration, and there is a special place in my heart for an annual celebration. I am proud to be leveling-up each year as a member of the Lititz Craft Beer Fest organizing team. Also, I had known that I wasn’t going to be in town to volunteer at Lancaster Roots and Blues 2017, a local music festival, which I had helped each of its previous years.
Why This Was Scary
When I first joined the beer festival team, my value to the group was being the only person in the room who could build and launch a website. This is an entry-level skill among WordCamp organizers. I knew that I would have to be useful in other capacities to help the event succeed.
I Respect The Hell Out Of WordPress People
WordPress events bring out the best version of me, because I love everyone I meet and want to return the kindness I receive. I have never felt so welcomed and appreciated by any group outside of my family. The challenges are enriching, and the conduct is world-class. I started writing notes for this post before the event even happened because I knew I would loathe publishing something that didn’t have every morsel of value I could offer.
I asked some folks who had already organized WordCamps if they had any advice for a newbie, and I received some great guidance from my pal Liam at the December Philly Burbs Meetup.
“Volunteer, volunteer, and volunteer to volunteer. After you’ve volunteered and enjoyed it, think about organizing.”Liam Dempsey, probably
I sought this advice one week after WordCamp US 2016 where I told Rami & Dustin that I would accept their invitation to co-organize and before I had ever volunteered at a WordCamp. Oops.
My Amazing Team
Andrew Adcock, Dustin Leer, Corey Salzano, Rami Abraham, Jonathan Ober, Charlie Reisinger, and Lauren Pittenger, WordCamp Lancaster 2017 organizers
I am so grateful to have been a teammate with and to have learned from…
You will spend hours each week for a couple months preparing for the conference. When Rami asked me to join the team in November, he told me that it would require about 5 hours a week beginning the moment I said yes until the conference happened. He was right. Most of our team took at least a half day off of work on Friday to procure local goods (drinks & snacks) and services (badge printing) and prepare the venue before the speaker dinner began at 6pm.
You will run out of time. This is an event with a fixed date, after all.
You never get to a point with organizing a conference where everything is done. You just run out of time and then the conference happens.
Wisdom from our leader. As the days and hours counted down to the conference, the number of things that needed our attention only increased. There is this ramp up to any event where the time you have to make decisions decreases while the importance of those decisions increases. At some point, it’s too late to plan, deliberate, or place an order that requires shipping. The decreased amount of time helps you handle more things, but it’s only human to feel like you’re totally winging it because you didn’t spend as much time on decisions right before the event as you did scheduling tweets two months ago. Also, you are winging it.
You will rely greatly on your veteran team members. I was able to help answer a lot of, “how did that happen last year” questions by simply being an attendee, but my experienced co-organizers steered this ship. Rami, Dustin, and Lauren returned after organizing previous years, and Andrew brought his experience in organizing WordCamp Baltimore. Major items were essentially complete on day one because of these veterans. We didn’t have to design a budget, and essentials like our venue and caterers were redialed. I will never forget a moment in January when I was tasked with trying to solicit as many speaker applications as possible. I asked how many would be enough, and Rami said, “We’re going to have a couple speakers drop out. It happens, people’s lives change, and we’ll need back-ups.” Exactly two speakers canceled on us after we had announced our schedule, and we fell back on those other applicants to fill the slots.
You will be surprised by the lack of control you get over your wordcamp.org website.Only Twenty* themes and no child themes. (WordCamp sites started shipping with a starter theme called CampSite 2017 soon after our event.) No plugins menu. There are some cool tools, like a Remote CSS plugin (that allows you to include a stylesheet from a Github repo) and JetPack. I understand the need for heightened security on wordcamp.org, but it’s hard to get excited about designing a site without being able to edit templates via a child theme. (And that’s a strange feeling to have while running a web development conference.)
<fan-fiction>This is by design. WordCamps used to have total freedom over their sites, but no WordCamps actually happened then because the organizing teams were never ready to launch their websites.</fan-fiction>
You will need to quickly solve logistical challenges and communicate news to your speakers, volunteers, and attendees.
Our venue’s wifi was not password-protected and had the same name as the building. Even so, I was asked 3 or 4 times what the wifi situation was before I wrote a note at the bottom of our job board and Lauren wrote a tweet.
We had no plans to include a Happiness Bar at our event, which is a help desk anyone can sit at and offer free WordPress help. A few friends asked me after opening remarks if we had one, and I told them no. Less than 10 minutes later, I found two fellow organizers arranging tables and chairs in the hallway between our two session rooms and hanging a hand-lettered sign. This move enriched our event during moments like this:
Our schedule was supposed to include an afternoon break, but it was published without one. We decided to modify the online schedule by 15 minutes, scribble over times on the schedules posted outside our rooms, and announce the changes during the next break between sessions. Sounds terrible. It wasn’t.
We made a dinner reservation for organizers, speakers, and volunteers, but forgot to invite anyone. Here is a great photo of Charlie and I learning how to use our team’s MailChimp account to send those invites at 8:30am.
Attendees will be oblivious (and that’s OK)
Attendees will not have read the blog posts you have published on your camp’s website. (And that’s OK. They’ll still show up at the right place and have a great time.)
Attendees will buy tickets the night before the event and the morning of the event. (And that’s OK. I was one of those attendees at WordCamp US 2016.)
Attendees won’t care if they buy tickets too late to get printed badges. (And that’s OK. You will prepare blank badges.)
Attendees won’t understand what a Happiness Bar is. (And that’s OK. They’ll go from zero to using it in seconds.)
Your team will receive critical questions from attendees hours before the event. I anticipated this, but these two questions really struck me as something I would have tried to figure out much earlier.
9:30pm: Is it too late to change the personal details attached to this ticket? How?
Answer: Absolutely not, just click the link in the confirmation email again and change the values in the text boxes. This person will not have a printed badge waiting for them, but we will have blanks and permanent markers at registration.
11:00pm: Does the venue have a wheelchair available?
Answer: I will not know until shortly after 7am when we return to the venue. (The venue did have a wheelchair, and I replied after I placed said wheelchair in the vestibule. It was utilized.)
Everyone will get upset if you run out of coffee. Attendees will wither. Speakers will loathe its absence during their talks. I do not drink coffee, but I so badly wanted there to be coffee during the few hours we had none.
You will very likely not attend sessions unless you are the MC or videographer of the room. Did you know that every session is videotaped and archived on WordPress.tv? You have to make that happen, too. The hardware is owned by the foundation public-benefit corporation, shared, and shipped from WordCamp to WordCamp. So, you can watch the sessions later online after you upload them. Here are the sessions we have uploaded so far!
You will be exhausted. Cherish the moments that you find yourself with a few calm moments to recharge. I slept on the floor of our speaker green room for almost 20 consecutive midday minutes.
Corkscrews will remain elusive. If you serve alcohol at your after party (instead of hiring bartenders to serve drinks) you will forget to bring a corkscrew for the wine. I was unsure about how our party would operate without hiring a bartender. Upon arrival, I learned that the venue required us to supervise the alcohol, so we turned into bartenders. I loved it. We got tons of feedback from attendees while slinging beers and cupcakes.
This community will surprise you. Speakers and volunteers, who donate their time to be part of WordCamps, will deliver tremendous value to your attendees. I saw Davis Shaver, Shayna Diamond, Jason Coleman, and Sal Ferrarello each sit behind our Happiness Bar in addition to preparing and giving talks. Our lead volunteer, Ruth Skutt, did way more than wrangle volunteers, and she was a big part of why our teardown and cleanup of the venue and setup of the after party happened quickly. Volunteer Kevin Cristiano needed to do some midday computing and decided to sit at our registration table long after we had dismissed volunteers and soft-closed registration.
Where I Was Able To Add The Most Value
Knowing My City
You can provide a lot of comfort and reduce travel anxiety by providing advice to those who are coming from out of town. I identified the closest craft beer bottle shops to the train station for a speaker who was traveling from NYC. I was able to ask my Facebook friends which bars have karaoke on Saturday nights because WordPressers love some karaoke. I recommended restaurants to multiple groups of people.
The pages and posts on your WordCamp website will benefit camps in the future because the old sites stay online. I was able to look back at all our previous sites (2016, 2015, & 2014) to glean clues as to what type of content we should publish. I simply iterated on the travel info and venue pages that were published by my predecessors. I wrote two posts that should benefit future events: the best (also: all) hotels in the city, and what to do Friday night for those arriving the day before.
Miscellaneous Graphics
I didn’t design our logo. I wish I could take credit for it, because it is awesome and I have huge respect for monochromatic marks. Dustin designed it. (He designed our wapuus, too!) I did, however, use our logo in graphics that announced our venue and after party venue. I also created the signage that we hung at the venue to identify and post schedules outside the rooms.
Follow-Ups
So much of event planning is diligent communication. Whether a sponsor had failed to provide a mailing address that was required for us to issue an invoice, or an attendee had asked a question I had already answered twice, each missive that I handled and archived was one less context-switch that one (or more!) of my teammates would experience. One of the largest time sinks for my executive on the beer festival is dealing with the beer distributors from which we source all the kegs. In more than one of our weekly videoconferences, Rami had asked us to drop into the email account and handle any items that we could. Responding to emails lead to me learning how to wrangle and invoice sponsors, a perfect example of how answering emails isn’t just answering emails.
Tweets
Doing Twitter
I don’t think I am very good at writing tweets, but I wrote some tweets for @WordCampLanc. The account is run by several organizers. If you can be a cheerleader on twitter, you can create a buzz for anything, especially a WordCamp. This doesn’t translate over to the beer festival so much because craft beer people don’t use twitter as much as the WordPresserati. I have simultaneously published a companion piece containing some tips for marketing an event on Twitter that contains a bunch of WordCamp and beer festival tweets as examples.
Our volunteer photographer, Doug Stuart, had the great idea to share the photos he captured with me in near real-time. I created a Dropbox folder for him at 7:55am, and he periodically filled it with photos so that I could use them in tweets throughout the day. It worked swimmingly, and I am definitely going to try to bring this concept to the beer festival. (Doug took every photo in this post.)
Thank You
I will be forever grateful for the opportunity to contribute to this awesome event, and I know I am a stronger person for having done so. I hope this post helps anyone who was in my position just a few months ago and is wondering what kind of challenge they have just accepted.
“The biggest challenge after success is shutting up about it.”
-Criss Jami
If you are like me and have maintained a copy of Core FTP LE simply because there is no easy way to extract passwords from the application, follow these instructions to set yourself free.
No download or payment required
A lot of the solutions available cost money or require you to install software. This is no longer necessary, and you can thank me in a moment.
Instructions
Find the encrypted passwords in the Windows Registry
Open the Registry Editor
Windows 10: Press the Windows key, type regedit, and press enter
Older Windows: Go to Start, Run, type regedit, and press enter
Find the numbered site profiles saved in HKEY_CURRENT_USER\SOFTWARE\FTPWare\CoreFTP\Sites. Each site holds the label with which you are familiar in the key called Name.
Copy the encrypted password that is saved in a key called PW.
The password in this sample output is 8086777170. Wash, rinse, and repeat for all the site profiles you find in the registry. Profiles that have no saved password will have no content in the PW key.
If this saved your life, consider buying me a beer. My Paypal is [email protected].
When I stopped using CoreFTP, I moved on to FileZilla. I needed an FTP client that worked on both macOS and Windows to make life easy.
Let us imagine you are developing an application in Visual Studio 2015, and you would like your project to have a prerequisite of the Access Database Engine redistributable.
You may or may not have found this blog post that details how to create the bootstrapper package and where to put it on your system. The file creation details are correct, but the path is not. The correct path for the package is C:\Program Files (x86)\Microsoft Visual Studio 14.0\SDK\Bootstrapper\