Scrolling to the Bottom of the LinkedIn Messaging List

I’m following Jordan Harbinger’s 6 Minute Networking. Part of this is contacting people you haven’t spoken with in a while. On LinkedIn, it’s hard to get to the oldest messages in their messenger. It involves a lot of scrolling. So I made a little JavaScript snippet to help with that. Just enter this into the JavaScript console:

for(ii=0;ii<30;ii++){document.getElementById("ember57").scrollBy(0,2500);await new Promise(r => setTimeout(r, 500));}

You may have to run this a couple times, depending on your contact list. You may also want to increase/decrease the “30” constant.

Updated File on Mapping ZIP Codes to MSAs and CBSAs

Click for download of MSA to ZIP in CSV format.

My all-time most popular post is on creating a mapping between ZIP codes and MSAs or CBSAs. One commenter pointed out that there was a problem with the ZIP mapping, so I though I’d re-run the query and re-visit the data.

Keep in mind that this data is based on older data for ZIP codes, MSAs and population, all of which change constantly. The Geocorr website suggests an update with 2020 data is in the works, so keep an eye on that.

I was creating a report to show where my sales are coming from. I have the ZIP codes of all the shipping addresses in the US, but how would I group people from similar locations together?

My thought was to group the ZIP codes by Metropolitan Statistical Area, which, roughly speaking, is a large city and all of its suburbs. So, for instance, the MSA for New York City includes Newark and Long Island. The MSA for Atlanta includes Sandy Springs and Roswell.

So how do I figure out which ZIP codes belong to which MSA? After a quick search, I found several pay options. But surely this information is free somewhere, right?

µSAEventually I came across a reference to which led me to Geocorr 2018, an online searchable geography database from the University of Missouri. Here’s how you can use Geocorr to get a big CSV file that has every ZIP code, with the corresponding CBSA (which includes both MSAs and µSAs [areas with smaller populations than MSAs]):

  1. Select the first state on the list under “Select the state(s) to process:”
  2. Scroll to the bottom of the list and Shift-Click the last item to select all the states.
  3. Under “Select one or more source geographies” pick “Core Based Statistical Area (CBSA)”
  4. Under “Select one or more target geographies” pick “ZIP/ZCTA”
  5. For “Weighing variable” pick “Population (2016 est.)”

Then pick any output format settings you’d like (I didn’t make any changes here) and click “Run request”. This gives you a downloadable CSV file with the ZIP codes and corresponding MSAs.

Updated download 2021-02-19: Easy ZIP compressed CSV file with the data.

Getting a Moving Average Chart From Google Search Console

I’ve been trying to figure out what search keywords are trending for my website, but Google Search Console makes it difficult. Take a look:

This gives you a lot of information, but it’s just too noisy to be useful, as it plots every day on the chart. What I’d really like is a chart of 2 week moving average of clicks in order to see trends. Fortunately, there’s a way to get this chart without having to do a lot of coding yourself. The overall strategy is to use the console API to pull this information into a spreadsheet. This can be done without any coding.

First thing to do is to visit the URL https://developers.google.com/webmaster-tools/search-console-api-original/v3/searchanalytics/query

This allows you to enter a simple query in the right hand box for the “request body”. (I think it may have requested some permissions the first time I did this.)

Your query is going to look like this:

{
"startDate": "2019-01-01",
"endDate": "2019-07-26",
"searchType": "web",
"dimensions": [
"date"
],
"dimensionFilterGroups": [
{
"groupType": "and",
"filters": [
{
"dimension": "query",
"expression": "your query terms here"
}
]
}
]
}

Be sure to enter the start date, end date, and query term that you’re looking to analyze. Also enter your website URL in the siteURL box.

Finally, click the Execute button. You should end up with a bunch of JSON output in the lower right corner of the window with the full analytics data.

The next step is to get this into a spreadsheet. Copy all of the JSON data in the output box and use https://json-csv.com/ to convert it to CSV format to paste or import into your favorite spreadsheet program. I use LibreOffice Calc.

I don’t intend this to be a spreadsheet tutorial, but you can use the functions like AVERAGE(A2:A15) to get a 2 week moving average from any of the data which you’ve imported into the spreadsheet. This lets you build a much easier to read chart like this:

Way better!

Wealth Production Per Person 1990-2017

Per Capita Gross World Product (PPP) By Year 1990-2017

This came up in a discussion with my wife recently. If you took all the wealth generated in a year, and divided it up equally among everybody in the world, it would come out to about $17,500 per year. (This is factoring in “PPP“, which means these are equivalent to dollars spent in the US, even if the person lives in a much cheaper country.)

This is up from less than $10,000/year less than 20 years ago. It’s been growing steadily for while now, as seen in the diagram above. The number is up 44% since 1990 as the world builds wealth and gets more efficient.

The data above comes from Wikipedia, The CIA World Factbook via the Internet Archive, and the US Dollar Inflation Calculator.

At this rate, we can expect the average to be about $25,300 in 2044. That’s livable, but far from luxurious. Time to get to work.

Free Video Editing Tools For Windows

I’ve been editing videos this week. There appear to be 3 main free, open source non-linear video editors for Windows that have a timeline feature, filters, etc.

  1. Kdenlive: Great features and nice usability, but crashy as hell on Windows.
  2. OpenShot: Good usability, but short on some of the features I really needed.
  3. ShotCut: More features than OpenShot, not as good usability or features compared to Kdenlive, but much more stable.

My current favorite is ShotCut. If Kdenlive were more stable, I would switch to it instead.

20 Ideas For Social Media Posts For Robot Fighting Teams

Some robot fighting teams have expressed to me that they have a hard time knowing what to put in their social media feed. Here are some ideas for posting to social media that will your team get the maximum exposure possible for both the team, your sponsors, and the event.

Be sure to tag your sponsors for every post that’s appropriate.

Remember that repeated content is OK, especially if you change up the main photo. SmarterQueue, Recurpost, Buffer, and similar tools can help reschedule posts. And remember that there’s a delay between the BattleBots event and when the show airs, so “we just got to the event” types of posts make sense at 2 different times.

With 1 post for each of the ideas below, and posting 3 times per week, that’s over 6 weeks of content.

1. Biographies of each team member, 1 post per member. Include at least 1 photo, a short biography, and how they helped your team compete. Photos should be clear and well lit. You have 4 team members? That’s 4 posts!

2. An infographic showing your robot’s features. Examples:

From Witch Doctor
From HyperShock

3. A screenshot of your CAD design, with a comparison to the final robot.

4. Photos of your motors or motor controllers or batteries and an explanation of why you chose them.

5. Your robot being displayed at a live event (Maker Faire, college expo, corporate meeting), especially if it has kids looking at it. Describe what you did there.

6. Your robot pictured with any toys or merchandise.

7. Video of a robot test drive. Note any problems or if it was a success, let people know what you were trying to achieve (speed, maneuverability, etc).

8. Video of your weapon being tested against inanimate objects.

9. Photos or video of machining, assembly, or painting, especially of highly recognizable parts.

10. Assembly of the robot, showing the guts.

11. A photo of your team together in the pits, with a description of a problem you had during the competition and how you solved it.

12. Your robot packed up for shipping to or from the event. For BattleBots, remember that this can easily be repeated as the show is about to go on the air.

13. A post describing what inspired the robot’s name or weapon, along with a photo of that thing. Example: Warhead with the t-rex head and a photo of a t-rex.

14. A post for each sponsor, describing exactly what they do and how they helped your team.

15. Photos of your fans at the competition.

16. Reminders whenever your robot will be appearing on TV.

17. Repost/share whatever is on the event organizer’s feed.

18. Share when you’ve been mentioned on outside media including newspapers, the FAN show, Reddit AMA, etc.

19. Photos of damage dealt to other robots.

20. “Hero” shot of your robot, before damage.

Bonus:

21. Photos of what you ate while building or fixing the robot.

Have more ideas? Let me know in the comments!

ROS On Windows

I’m working on getting Robot Operating System (ROS) as part of my plan to build a walking robot and I want to develop the algorithms in a simulator first. It turns out that ROS integrates well with the Gazebo physics/environment simulator.

I found a YouTube tutorial of decent quality on getting started with ROS and Gazebo, so that’s what I decided to follow for now.

I started by getting ROS and Gazebo running on my Linux desktop computer based on the instructions in the video and the ROS Turtlebot Installation Instructions.

The big problem was that I’m not able to spend as much time in the home office where the desktop is located. This means that I needed to get ROS running on my Windows laptop.

I tried the Microsoft port of ROS to Windows, but that was a blind alley. The big problem is that all of the tutorials and other documentation assume you have a Debian based Linux OS in order to download and install the necessary support packages, including the stuff for turtlebot.

However, you can get Ubuntu running under Windows 10 using the Windows Subsystem for Linux. This is a super easy install from the Microsoft Store.

Next, I was able to get ROS running using these instructions. There was an error adding one of the package sources, and I needed to add a signature key manually. I found the fix in a GitHub bug report. The command is:

curl -sL "http://keyserver.ubuntu.com/pks/lookup?op=get&search=0x5523BAEEB01FA116" | sudo apt-key add

Next, most of the tutorials refer to the Indigo release of ROS, but what I ended up with was the later Melodic release. So the packages to be installed had to be modified a little. I’m a little confused at this point as to exactly what’s needed, but for the turtlebot tutorials, you can get most of it by running:

sudo apt-get install ros-melodic-turtlebot3-*

Make sure your .bashrc has these lines in it:

source /opt/ros/melodic/setup.bash
export DISPLAY=:0

Restart the Ubuntu shell to pick up the new settings from .bashrc.

You also have to make sure VcXserv (installed as part of the ROS on Windows instructions I mentioned earlier) is running BEFORE launching anything with Gazebo.

Also, before running any turtlebot stuff, you have to set the model using an environment variable:

export TURTLEBOT3_MODEL=burger

The roslaunch commands have to be updated for turtlebot3 if you’re following the tutorial. For example:

roslaunch turtlebot3_gazebo turtlebot3_world.launch

At this point, I’m still not sure if this whole WSL mess is the right way to go, or if I’ll need to switch to real Linux to get ROS/Gazebo running right.

Finally, I’ve found a couple online courses that are related to this that I intend to look into after I get ROS working correctly:

Tip for Job Seekers

Here’s a tip for all you job seekers out there: proofread your
résumé or have someone who’s good at English do it for you. Put your best foot forward.

This week, for example, I got a “résumé” that was a sideways photo of a wrinkled printout of half a sheet of paper with 6 lines on it.

Mapping ZIP Codes to MSAs and CBSAs

Update 2021-02-19 with new info on this topic.

I was creating a report to show where my sales are coming from. I have the ZIP codes of all the shipping addresses in the US, but how would I group people from similar locations together?

My thought was to group the ZIP codes by Metropolitan Statistical Area, which, roughly speaking, is a large city and all of its suburbs. So, for instance, the MSA for New York City includes Newark and Long Island. The MSA for Atlanta includes Sandy Springs and Roswell.

So how do I figure out which ZIP codes belong to which MSA? After a quick search, I found several pay options. But surely this information is free somewhere, right?

µSAEventually I came across a reference to which led me to Geocorr 2018, an online searchable geography database from the University of Missouri. Here’s how you can use Geocorr to get a big CSV file that has every ZIP code, with the corresponding CBSA (which includes both MSAs and µSAs [areas with smaller populations than MSAs]):

  1. Select the first state on the list under “Select the state(s) to process:”
  2. Scroll to the bottom of the list and Shift-Click the last item to select all the states.
  3. Under “Select one or more source geographies” pick “Core Based Statistical Area (CBSA)”
  4. Under “Select one or more target geographies” pick “ZIP/ZCTA”
  5. For “Weighing variable” pick “Population (2016 est.)”

Then pick any output format settings you’d like (I didn’t make any changes here) and click “Run request”. This gives you a downloadable CSV file with the ZIP codes and corresponding MSAs.

To make it easier on you, I have a downloadable link to the ZIP compressed CSV which I created. Click here to download.

Updated download 2021-02-19: Easy ZIP compressed CSV file with the data.