Another Certification: Arduino Fundamentals

I was bored this Wednesday when I remembered that Arduino launched their first certification, called the “Arduino Fundamentals Certificate.” With my recent bid to become Co-President of the Inver Hills Engineering Club and my experience using Arduino since Christmas 2011, I didn’t think I would have much difficulty passing. Also, it was only $30 and perhaps my Engineering teacher would be interested. If not, at least I have another certificate on my wall.

I passed. 91/100. It wasn’t terribly difficult, but there were definitely still a few things in there that forced me to think. In particular, what does a digitalWrite(13, LOW) actually do? And of course, some circuit diagrams to interpret, which were pretty fun. Overall, it won’t get me a job, but it was fun to try and it never expires.

The Parent Portal project: Part One

First, some backstory: For this summer, I tried to get a certain Triplebyte Externship, but it fell through, and I was left with either working for my dad’s masonry restoration and fireplace business, or to find my own job.

It started with my dad deciding to sell his scaffolding, and lots of it, because of his decision to move wholly into the fireplace business. With over 60 frames, over 100 plank, a whole set of tube and clamp, there was plenty to sell – and my dad agreed to give me a commission on the stuff I managed to sell.

With some cash in pocket (and frankly, it is amazing how many people are on Craigslist), I contacted Homeschool Connections to see if they had any work for me. I’ve done multiple freelance projects for them in the past, most of them not on this blog yet, and was curious to see what they wanted.

They did have work for me, and it was pretty simple: A Parent Portal. A place where parents could sign in and easily check their student’s grades by pulling data from the Moodle LMS… and that’s it. I made them a deal for 1 week of work, flat-rate, to build this portal.

A week later…

They were amazed. It had everything they wanted and more: Parents could sign in with just their email address, no passwords to remember. They could link unlimited students and click one button to see their scores in every course.

It was so good, that I managed to convince them to extend the contract. Four weeks, for a full-blown Course Registration system to replace GoSignMeUp. Automatic enrollment of purchased courses, a simplified UI, better search… a whole wishlist.

To put it simply, I worked on it for those four weeks, and then renewed it for another week and a half to add a few more features that weren’t part of the four week agreement.

It’s Monday of the last week, and here’s a taste of what I’ve got so far.

For technology, I’m using… surprise… PHP 7 with the Laravel 7 framework. The UI is built with Laravel Blade, except for the components which are made using Laravel Livewire. Livewire gives all of the UI components AJAX-style reloading, so the UI feels almost as fast as a React or Node application despite using a purely PHP backend.

I have to give credit where it is do: Livewire is astounding. I can do insanely simple stuff like this:

<a href="#" wire:click="myPHPFunction()">{{ $name }}</a>

And on the server:

public function myPHPFunction() {
    $this->name = "Something else";
}

And just like that, the name of my link will change on a click. If you are building a Laravel application, Livewire is by far the fastest way to get the user experience of AJAX without writing a single line of JS. Super cool.

I will delve into much more of the technical details in Part Two, coming soon.

Just passed the CompTIA A+ exams

A few days ago, I got an email from CompTIA offering a 20% off coupon on their A+ Certification. I had been mulling over the CompTIA A+ certification for a while: After all, the book has been on my shelf for, like, 3 years, but I just never thought it was worth the money to take the test. $226/exam, with 2 exams, means that I would be in for $452 assuming I didn’t fail either exam. If I failed one, I would have to pay $678+tax, which I simply couldn’t justify.

I didn’t accept the email deal, but it woke me up to something: Through my college, I can purchase vouchers at a massively discounted rate. More than 54% off, actually. The $226 exam was only $103 with my college discount, and this reduced my total price to $206 assuming I didn’t fail either exam, which is less than the standard MSRP for just one voucher.

With a sudden influx of cash from my summer freelancing (being 18 years old) and the discovery of the discount, I spontaneously decided to take the exams… 2 days later. I figured I wouldn’t need much practice, because I had been working with computers in my free time for years. I entered into the 220-1001 exam after only an hour of review of an older 220-901 book from Mike Meyers and 4 of the 20 ExamCompass practices quizzes. Spontaneous and stupid? A little…

I entered the Core 1 exam and was shocked by the number of questions about printers. It felt like 1/3 of the questions were printer-related. I had not spent much time reading about printers and was actually getting really nervous. When you walk into a test expecting questions about Windows 10, and are instead asked questions about what’s causing faint colors, I began fearing that I would fail.

Unexpectedly, despite the sheer number of printer questions, I passed: 683/900, with 675 required. Only 8 points above the minimum. Even though that hurts, it is still a pass. Somehow encouraged, I immediately purchased for $103 another exam voucher for 220-1002 (Core 2), and scheduled it for what was only 90 minutes after finishing Core 1.

So, after my barely-passed 12:00 online exam, I took Core 2 at 2:30. I passed that one much better and the questions were much closer to what I was expecting: 788/900 with a 700 minimum.

I’m posting this at 4:00 PM, and I haven’t received my certificate yet. But that’s OK, I will get that in a few days and will be really happy to add this to my website and profile:

I just don’t know what else to say. Taking a proctored exam online was nerve-racking at first, but I quickly got used to it and didn’t have any problems. If you have to take it online, well, that works perfectly well and is more convenient than driving to a testing center.

Next up, the Network+, which has had a year old book sitting on the shelf…

Triplebyte Entry Level Quiz [Part 2 in series]. 80th-100th percentile, no externship

On June 3, 2020, Triplebyte announced their new Externship Program for students who lost their internships from the COVID-19 problem. These Externships aren’t as well paid as actual internships, but their remote, about ~6 weeks or so in length, and not a bad way at all to gain experience.

In the last article, I passed the Triplebyte Generalist quiz with 60-80th percentile, and “failed” the FastTrack on-site program with 40th-60th percentile in a 2-hour-long automated interview. For this Externship program, you get to take the new “Entry-Level Generalist” quiz instead of the full Generalist. I decided, why not try it? If it had been available in January 2020, I probably would have taken the Entry-Level version instead of the Full version.

So, even though I passed the Full version quite well, I took the Entry-Level quiz for Software Engineering. Holy smokes.

This image has an empty alt attribute; its file name is entrylevel.png
This image has an empty alt attribute; its file name is entrylevel2.png

I absolutely more-than-qualify for the entry-level Externship program, and Triplebyte sent me the application form immediately. So, that’s fun. I’ll see what happens.

Update: Despite my high score, Triplebyte informed me that they could not find a match this cycle. That’s disappointing. 🙁

I passed the Triplebyte Quiz, but failed the automated review

A few months ago, I was browsing the internet and saw one of those many adds on Reddit for a service called Triplebyte. You’ve probably seen them all the time on programming websites (they are fairly aggressive in advertising everywhere it seems), and their pitch is fairly simple. “Just take the quiz, pass the interview, and you are ‘fast-tracked’ to the final-round of onsite interviews with major tech companies.” With Apple and other companies on their list and being bored for the day, I figured, why not try?

I ultimately decided to take the standard Generalist quiz. (This is not the new Generalist Entry-Level edition quiz which came out recently and what I would now have taken instead.) It was a boring New Year’s Day when I took it, and then…

I did unexpectedly well. I even got a 3/5 for Academic CS, despite having never having taken any CS courses in high school or college. I guess reading all of those programming books and reading Hacker News enough taught me enough Academic CS concepts to pass.

Despite passing that quiz very well, I was nervous about taking an in-person interview. Furthermore, my college studies got started again and I didn’t need a job immediately, so I waited a while. Then COVID-19 struck and my college eventually ended for the semester. Triplebyte switched from online interviews to an “automated interview” system, which turned out to be basically a much longer, more complicated, 2 hour quiz. The results were less good but still impressive for my age and non-academic background:

As you can see, the categories for the more rigorous, 2 hour test were much different than the shorter introductory quiz. There was no “Coding Productivity” or “Algorithmic Knowledge” categories on the prior exam. It said I mainly lost because I didn’t have the strong understanding of algorithms required, though I wasn’t that surprised by this. After all, Academic CS has to mean something in the real world and you can’t really implement algorithms from math by reading a programming book from the library.

Even though Triplebyte said they wouldn’t be taking me because I simply wasn’t “exceptional” enough, I was still a solid performer, and they said they think I was ready for everyday web engineering roles. If you read about my analytics programming, that probably helped a bit.

What I really wish I could do instead of that would be to try my hand at the new “Entry-Level Generalist” exam instead of the “Generalist” exam I took and passed. It would be interesting to see how good I would be at that one. I’m still glad to have gotten this far in the exam. People far smarter than me have failed. I have emailed Triplebyte Support to see if they will allow me to take something just a bit easier. In the meantime, I think this validates my skill at least a little bit. 🙂

Trad Catholic Media Analysis: Part Two

My first post on the decline of various Catholic media outlets got a little bit of attention, as well as some good criticism. Namely:

  1. What about some more niche but still popular websites, like Rorate Caeli, or Barnhardt, or Gloria.tv?
  2. Could you balance out the data from Alexa (known to be egregiously inaccurate on occasion) with data from other estimates, like SimilarWeb, so as to get a more accurate estimate?
  3. How are some other, non-blogger websites doing throughout these events, such as the SSPX website?

In this post, I shall try to answer those questions, with a new round of research. First, I will research the old round from part one on other websites to see if the Alexa analytics hold, and then I will inspect the following websites:

  • sspx.org
  • gloria.tv
  • barnardt.biz
  • patrickcoffin.media
  • newsaintthomas.com (Taylor Marshall’s group)
  • novusordowatch.org (Sedevacantist, I believe, but still interesting)
  • from-rome.info (Also Sedevacantist, but still interesting)
  • akacatholic.com
  • boniface-institute.com (Alexander Tschugguel’s group)
  • rorate-caeli.blogspot.com

As well as some of the more “mainstream” Catholic media to see how they are fairing specifically, such as:

  • National Catholic Register
  • National Schismatic Reporter (Fishwrap!)
  • Catholic Answers
  • SpiritDaily.com
  • EWTN.com
  • NewAdvent.org
  • CommonwealMagazine.org (Lesser known but I read it a bit once, and it was awful! Fr. Z would lose his mind over some of their NCReporter-level antics. Just read their Wikipedia for a taste!)
  • AmericaMagazine.org (Fishwrap 2.0)
  • CrisisMagazine.com
  • Vatican.va (because why not?)

Hey Alexa, how does the first set rank?

This is a really interesting image. From Alexa’s perspective:

  • Patrick Coffin doesn’t rank at all. He also owns patrickcoffin.net, but that also doesn’t rank.
  • Everyone suffered a decline around the same time as in Part One, and it mostly remains flat to today except for, (dun-dun-dun) NovusOrdoWatch.org and FromRome.info. Which are, as far as I am aware, are both sedevacantist or sedevacantist-leaning. They saw a big uptick. Hmm…
  • Alexander Tschugguel’s Boniface institute is half a year old, has no activity on their website, and doesn’t rank at all.
  • New St. Thomas Institute got some activity going once in a while, and then flatlines for a while for it to happen again.
  • Barnhardt is kind of hard to see, but she’s the pink line that is behind many of the other lines. She suffered a decline at the same time as everyone (again), yet is actually going up again.

Pure traffic statistics in the US:

Metricsspx.orggloria.tvbarnhardt.biznewsaintthomas.comnovusordowatch.orgfromrome.infoakacatholic.comboniface-institute.comrorate-caeli.blogspot.com
Global Rank689814179387039447387351428173460642033795647624
Global Reach7.00E-070.0000447.30E-074.30E-075.3E-060.00000172.00E-077.30E-07
Global Pageviews2.90E-082.06E-062.50E-086.60E-081.90E-070.000000077.20E-093.30E-08
Rank in [US]2313643047911997316318117150470877255818

And your obligatory traffic sources:

And the obligatory fascinating bubble map:

Okay, fascinating. Kind of weird that SSPX and New St. Thomas are in the same bubble and so far away from gloria.tv, but it’s all estimates here. Fr Z and OnePeterFive are in the same bubble like before with CatholicFamilyNews and Church Militant. I guess the “bubbling” depends on the level of density and sites you set. In this case, because the SSPX is so different than Barnhardt and Gloria.tv, it makes the differences between viewers of 1P5 and CM look smaller my comparison, so they share a bubble. But what about outside of Alexa? What about SimilarWeb?

SimilarWeb is a service like Alexa, and it provides data that covers the same general topics as Alexa. However, SimilarWeb can be very different than Alexa. This depends heavily on where they are getting their data from. For example (and I don’t know these specific details for a fact): If Alexa gets some of it’s data from an Internet Service Provider (ISP) in NYC, that can be very different than if SimilarWeb bought their data from an ISP in MN. Or if one has a browser toolbar to get their data while the other weighs different datasets higher, the results can be different.

What is important to know about SimilarWeb and Alexa is that popular websites are generally much more accurate than smaller websites. Smaller websites, as a rule of thumb, are much harder to rank than popular ones. Because some of the websites I’m talking about are considered “small,” both Alexa and SimilarWeb can screw up royally when trying to come up with their estimates. Still, if we put them together, we can still get a good idea of where things are going.

There is a big reason I didn’t use SimilarWeb the first time. SimilarWeb only sells the full version (with the 3 years of data) to Enterprises, and does not even offer the option of a trial. It’s just “Contact Us” or use the free, 180 day data with no ability to directly compare websites. Still, I’ll try.

To help make the reference easier, here is the same graph from Alexa, but over a 180 day span (like SimilarWeb) instead of 3 years:

I was going to do a direct comparison, when I noticed an immediate flaw. See if you can spot it yourself.

The Alexa graph was for the Alexa ranking, which basically means that it believes this website is the #X most popular website in the world. The graph on SimilarWeb is for Total Visits, which is a very different metric and one that Alexa doesn’t try to keep track of nearly as much. Because the two graphs are for completely different criteria, the two cannot be directly compared.

What we can compare though, is the global rank for today. Unfortunately, this doesn’t give much for a trend, but at least it will be accurate.

#WebsiteAlexa GlobalSimilarWeb Global
sspx.org#689,814#371,467
gloria.tv#17,938#14,425
barnhardt.biz#703,944#182,356
newsaintthomas.com#738,735In Database, but N/A
novusordowatch.org#142,817#360,813
fromrome.info#346,064Error – Not in database
akacatholic.com#2,033,795Error – Not in database
boniface-institute.comN/AError – Not in database
rorate-caeli.blogspot.com#647,624#231,876
patrickcoffin.netN/AError – Not in database
patrickcoffin.media#5,313,302In Database, but N/A

What can we glean from this? It’s clear that SimilarWeb has much less data than Alexa does, or at least makes less assumptions. And for everything except NovusOrdoWatch.com, it tends to place most websites much higher. However, based on the increased amount of “Error – Not in database” messages I had compared to Alexa, this means that SimilarWeb might have far fewer websites in-between levels, meaning the difference between rankings might actually not be so drastic when you consider all of the possible missing websites in between.

When you rank them, you get some surprisingly different and yet similar results:

# of websiteAlexaSimilarWeb
1gloria.tvgloria.tv
2novusordowatch.orgbarnhardt.biz
3fromrome.infororate-chaeli.blogspot.com
4rorate-chaeli.blogspot.comnovusordowatch.org
5sspx.orgsspx.org
6barnhardt.biz
7newsaintthomas.com
8akacatholic.com

And that, ladies and gentlemen, is why it is important to consult multiple sources if you want more accurate data. Remember though that the Alexa data in the last post was over a 3 year period, whereas this ranking is only valid as of today, 4/28/2020, because SimilarWeb won’t sell their data to anyone who isn’t an enterprise.

Do I trust SimilarWeb more? Some people do, but a BIG NO from me. SimilarWeb was missing data on many of the websites, and not just missing data: For four of the websites entered, it told me they didn’t even exist. And, for two more websites after that, it said they existed but there wasn’t enough data. Alexa always knew every website I entered existed, but told me there was not enough data for three of them.

Some of you might be seeing the above numbers and thinking that this must render my last article pointless. That is not the case. Both Alexa and SimilarWeb struggle tremendously when ranking these “small” websites (you have to remember that it is ranking hundreds of thousands of non-Catholic websites in the mix too, which is why Google is #1.) How does SimilarWeb compare to my results in Part 1?

Alexa

  1. LifeSiteNews (#27,556)
  2. National Catholic Register (#93,531)
  3. Church Militant (#97,799)
  4. The Remnant (#285,071)
  5. OnePeterFive (#476,753)
  6. Taylor Marshall (#545,025)
  7. Fr. Z (#706,751)
  8. Canon212 (#2,262,969)

SimilarWeb

  1. LifeSiteNews (#29,680) – Pretty close to Alexa
  2. National Catholic Register (#42,355)
  3. Church Militant (#58,778)
  4. Fr. Z (#193,171)
  5. OnePeterFive (#263,572)
  6. Canon212 (#273,566)
  7. The Remnant (#286,052)
  8. Taylor Marshall (#353,319)

As you can see, they are both struggling to figure out who’s more popular. However, like I said before, I trust SimilarWeb’s “ranking” less than Alexa because SimilarWeb was completely unaware some of the websites I entered earlier even existed. I do think that some of the results from SimilarWeb are more logical though (see Canon212). All estimates, and less popular websites are less accurate. I wish I could truly compare SimilarWeb’s data more than this, but unless SimilarWeb opens up to individuals and makes a ranking history chart, it’s not happening.

Okay, enough moping about SimilarWeb’s lack of a free trial and public data compared to Alexa. What about mainstream Catholic news?

Well, that’s interesting. Many of them saw a decline as well, but not as severe as trad media did. Something is clearly wonky with America Magazine though, as that looks… wrong. Were they trying to manipulate Alexa? (I say this half in jest and half in seriousness). You can see it actually raises to the full height on the very far left. Weird.

  • Leading up to October 2018, EWTN had a significant decline, but it’s recovering.
  • Looks like many had a bit of a drop in October, but not catastrophic. And people are rising up again, and recovering, except for Crisis Magazine which is heading downward starting in March…
  • It’s hard to see, but the National Schismatic Reporter rose quite a bit after October. It’s growth mirrors that of the liberal Commonweal and the more conservative CrisisMagazine, although Crisis’s growth didn’t last as long. Looks like it drove people to both sides of the argument (orthodox and heretical).
Metricncregister.comncronline.orgcatholic.comspiritdaily.comewtn.comnewadvent.orgcommonwealmagazine.orgamericamagazine.orgcrisismagazine.comvatican.va
Global Rank93683586504442411057037607655062721065359320503611404
Global Reach0.0000090.000010.0000167.1E-060.0000220.000012.5E-060.0000173.3E-060.00006
Global Pageviews2.90E-071.21E-061.09E-062.50E-070.0000017.00E-078.30E-085.70E-071.30E-073.95E-06
Rank in [US]274172078211846199141014424779148991168898670517166

It’s kind of interesting how this graph lines up to what these websites actually do. Spirit Daily is an aggregator – they don’t publish articles, so they get little search traffic and lots of direct traffic. Right above them is Catholic Answers (catholic.com), which is almost all search traffic and little direct (which makes sense for what they do).

The bubble graph below is fascinating, and it lines up to exactly what one would expect.

There’s actually a few interesting correlations in this graph. Firstthings.com ties into Commonweal Magazine. Both have a liberal bent, and Mark Shea is a big First Things fan and has been known recently for his very liberal view of Catholicism. America Magazine is incredibly close, like directly next to, National Schismatic Reporter. Once again, due to the Zoom level, some websites that would be in their own bubble are forced together, like OnePeterFive next to Crisis Magazine and Church Militant. (The difference in bubbles is so great that it forces less-different websites together even if they would typically have a bubble of their own. Vatican.va is very different than Church Militant, but CM is less different than 1P5, so they go together even though they have different crowds).

Current rank is:

  1. Vatican.va (#11,404, down 1,171)
  2. EWTN (#37,607, up 16,058)
  3. Catholic Answers (#44,424, down 3,482)
  4. America Magazine (#53,593, down 13,002)
  5. National Schismatic Reporter (#58,650, down 8,352)
  6. New Advent (#65,506, up 8,693)
  7. National Catholic Register (#93,683, up 1,538) – Was at #93,531 in last article, went up 152 since yesterday
  8. Spirit Daily (#110,570, up 21,258)
  9. Crisis Magazine (#205,036, down 29,973)
  10. Commonweal (#272,106, up 175,523)

Commonweal, which you’ve probably never heard of is growing. And it absolutely must be stopped are we’ll have a third fishwrap on our hands. (Fishwrap is a term invented by Fr. Z to refer to National Catholic Reporter aka National Schismatic Reporter. Recently, America Magazine and Commonweal are writing like they are fishwrap too.)

Compare those global rankings with SimilarWeb for today, 4/28/2020:

  1. Vatican.va (#10,188)
  2. EWTN (#16,132)
  3. Catholic Answers (#19,557)
  4. America Magazine (#40,887)
  5. National Catholic Register (#42,355)
  6. National Schismatic Reporter (#60,557)
  7. New Advent (#72,181)
  8. Spirit Daily (#86,899)
  9. Crisis Magazine (#174,098)
  10. Commonweal (#249,901)

Notice that this time, only the National Catholic Register changed order between the two websites. Like I said, bigger websites are easier to rank then smaller ones like ours. Still, when did good people allow the National Schismatic Reporter to become so strong? It must be destroyed – and we need to keep a lookout on Commonweal. Alexa thinks it is rising, and even if that isn’t true, we need to keep a sharp eye on this new National Schismatic Reporter / America Magazine hybrid.

UPDATE: Semi-confirmed by Rorate Caeli.

Trad Catholic Media Analysis: The decline, analyzed

Before I start – I am not a theologian, a book writer, a YouTube commentator, or anyone special within the Catholic media sphere. However, if you have been following traditional Catholic media for a while, you will almost certainly seen arguments about the SSPX, their legitimacy, and its various (supposed) scandals. The disagreement has divided many popular “Trad Inc.” commentators, and there are now questions as to whether those fermenting the divide have financial interests. Here’s a quick recap:

Well, those are definitely interesting messages, but considering the fact that I have actually programmed analytics systems (hire me) and have used analytics before, I figured it would be an interesting afternoon to find out what financial interests there may be. I can’t get to the bottom of whether the SSPX is right or wrong, but I can probably assist the conversation with information showing whether there are financial interests or not.

So, where do I start? The graph from the top tweet actually comes from a service called Alexa, which is owned by Amazon (and not Trackalytics, which just buys Alexa data). This is not the same Alexa that powers those smart speakers. Amazon actually owns two Alexas: The smart speaker one, and a data and web traffic analysis company. This Alexa buys traffic data from Internet Service Providers and repackages it for web development agencies, who pay $299/mo. for the privilege of using that data. This data is certainly not perfectly accurate, and any numbers provided should be taken as just an estimate.

I do freelance web programming and analytics work, and so I signed up for a trial of Alexa to get some information. Who are the most popular commentators? And, what is the popularity graph for those commentators? And, what websites do listeners of these commentators visit most often? And other questions of the sort. Anything interesting that Alexa could give me, honestly. I decided to start out with the elephant in the room, Church Militant, and expand to other commentators.

This is a 1-year graph of Church Militant’s worldwide internet rank. Basically, how popular is the website worldwide? Google is #1 at this, YouTube is #2, Facebook is #3, etc, all the way down to Church Militant’s 1 year peak of #60,376. This rank is not perfectly accurate, and I don’t know quite what the margin of error is. Church Militant’s current rank is #97,799, which is a major rank drop from June 2019. That peak in March, before the SSPX fight, was #79,181. Still a massive drop in rank.

If you aren’t shocked enough by that downward trend, take a look at the 3-year graph. It gets worse for the ranking:

The peak was around #43,715 in November 2018. Remember, it is now #97,799. This does not mean that Church Militant has only half the traffic, it just means that they are much lower in the list of most-visited addresses. It is safe to say though, that Church Militant has significantly less traffic than previously, and that doesn’t help when you just did a studio expansion.

However, this isn’t the beginning of what looks like a worrisome image for Church Militant. This is a graph of where Church Militant gets most of their viewership from:

As you can see from this graph, Church Militant gets roughly ~84% of their viewership from users who directly enter the URL into their address bar. This means that the massive drop in rank cannot be solely attributed to, say, Google and Bing demoting the website. Church Militant does not have a strong social media presence, getting only ~2.5% of website traffic from social media posts and 5% from links on other websites. Only ~8% of Church Militant’s traffic comes from search. This is especially notable considering Church Militant’s large numbers of paying subscribers, and it is logical to assume that almost all subscribers visit Church Militant directly. Thus, a drop this large in viewership may certainly correlate with a drop in paying subscribers, but only Michael Voris could confirm this. Remember, these are just estimates from Amazon Alexa, and only Church Militant has access to certifiably accurate numbers.

Church Militant has declining viewership, and so the SSPX story is all about saving money, right, or repositioning brands? It’s a little more complicated than that. Almost every Catholic trad media outlet has a similar trajectory.

As you can see from the graphs, just about everyone except the Remnant is suffering right now, but if you look at the overall graph, some are definitely hit more than others. I am not sure what caused the December 2017 drop within Patheos. Remember that these graphs are not quite as they appear: The difference between #100,000 and the #1,000,000 lines is 10x, not 1x. Also remember that Alexa rank does not correspond to viewership. It just means that Alexa believes this website is #X more/less popular worldwide.

As you can see from the three-year graph, Church Militant and National Catholic Register are actually neck-in-neck with each-other in popularity, weaving in and out and around each-other. You can see the bump in the October/November 2018, and a large decline around October/November 2019, with the Amazon synod. 1PeterFive was most impacted (yellow) and makes the Church Militant decline look like nothing in comparison. LifeSiteNews shot slightly up, Fr. Z took a bit of a tumble, and Taylor Marshall and The Remnant actually didn’t move much downward at all by comparison. The Remnant in the last month has actually shot up significantly, defying the downward trend.

Another data point is the traffic metrics for the last three months (the only range available for these “high-precision” numbers). Blank fields have no data available.

SiteGlobal Rank (now)<- Over last 3 months Rank in Country (US)Global Reach % Over last 3 monthsGlobal Pageviews %Over last 3 months 
churchmilitant.com97,799Down 12,997 24,2780.00072%Down
18.50%
0.000036%Down
23.02%
onepeterfive.com476,753Down 154,074230,2350.00011%Down
45.98%
0.0000048%Down
28.17%
complicitclergy.com1,805,619 0.00002% 9.3e-7% 
ncregister.com93,531Up 2,05229,3330.0009%Down
0.10%
0.000029%Down
7.03%
wdtprs.com706,751 165,8490.000078% 0.0000022% 
lifesitenews.com27,556Down 5,6195,3760.0027%Down
23.52%
0.000179%Down
6.67%
taylormarshall.com545,025 0.0001% 0.0000034% 
patheos.com9,905Down 1,0862,6030.00712%Down
15.98%
0.000429%Down
7.58%
canon212.com2,262,9690.00002% 5e-7% 
remnantnewspaper.com285,071Up 183,083166,7970.00022%Up
90.00%
0.0000087%Up
70.00%
From Alexa Internet https://alexa.com/

As you can see from the numbers, Church Militant pageviews are down 23% estimated in three months, which is massive. OnePeterFive is down 28% in three months, also massive. The Remnant is having a breakout last three months, with more than 70% more pageviews in the last three months. Great news for Michael Matt! [Full disclosure: Michael Matt lives, like, ~20 miles from me and I actually see him time to time at church, but I have never met him.]

And with that, the most powerful (Alexa ranked) Catholic blogging websites are, at this time of publication (4/25/2020):

  1. LifeSiteNews (#27,556)
  2. National Catholic Register (#93,531)
  3. Church Militant (#97,799)
  4. The Remnant (#285,071)
  5. OnePeterFive (#476,753)
  6. Taylor Marshall (#545,025)
  7. Fr. Z (#706,751)
  8. Canon212 (#2,262,969)

I think what is also important to consider when looking at the above numbers is the question, Where are these sources getting their traffic from? Church Militant gets 84% directly. With other websites, it’s very different. Here’s the full graph:

These percentages are for the last three months, Alexa doesn’t keep such detailed information for long. As you can see, Church Militant is a very weird anomaly with it’s unparalleled 84% direct traffic. That may be driven by the subscribers, but a loss of subscribers would also correlate with the drop in traffic after the synod and the SSPX debate?

I decided to look more at anything else Alexa could give me. I discovered a tool called Audience Overlap, and for those actively in the debate, the connections are frighteningly realistic. With # of sites set to a little over the default #50 (and Patheos removed, because that’s like every religion in one), we see a very interesting set of groupings that I believe may be the most important image in this post:

Data from Alexa internet https://alexa.com/ [CLICK IMAGE TO OPEN LARGE]

This is a graph as to what visitors of a bolded website tend to visit most often, visualized into thought bubbles, with the distance between them indicating the frequency of overlap between viewers. Some very interesting details can be brought from this:

  • Church Militant and LifeSiteNews viewers go together, apparently. This is generally an Anti-SSPX, Pro-TLM crowd. Church Militant has also done stuff with Live Action and the Daily Wire, which surprisingly shows.
  • National Catholic Register floats around with other, popular, sometimes heretical papers, such as America Magazine, National Catholic Reporter, and Commonweal.
  • Taylor Marshall’s viewership don’t read National Catholic Register much, but instead love visiting reference sites like Catholic.com, USCCB, Vatican.va, and CNA.
  • The more SSPX-friendly crowd is a bubble of it’s own with Fr. Z and the Remnant, but it has a bit of overlap with the leaning-benevacantist crowd, such as Canon212, Catholic Family News (blocked by Church Militant, remember), and even the official SSPX website.
  • Remember that the image above is made from estimates from web traffic. Alexa doesn’t know the content of the websites or what is going on at all: It just knows that people tend to congregate around the shown websites based on their web traffic patterns, which is fascinating.

So that’s all interesting stuff. What about YouTube? What’s going on there? Websites are only part of the story, right? The best we have for this information is SocialBlade, which archives YouTube data to help advertisers determine trends.

To avoid confusion, be aware that when SocialBlade shows a percentage, that’s in comparison to the previous 30 days. So if you see, say, 500 new subscribers in 30 days, down ~20%, it means the month earlier you got 600 new subscribers in 30 days and are ~20% down in comparison to last month.

Starting off, they are looking great, until you remember this is only 30 days.

Has Church Militant been losing subscribers or video views on YouTube? Nope, they are doing fine and gained after the Amazon synod. What about the breakout star online, The Remnant?

Michael Matt has been doing great! Just look at that 68% video viewership growth in 30 days and 200%-greater-than-average subscriber growth! What about Taylor Marshall?

Slow and steady, but at the same time, doubling the amount of new subscribers you are getting each month is a great statistic. Doesn’t look like the SSPX feud hurt him much, even if he is stagnating a bit. What about his former friend, Timothy Gordon? This is where things look worse.

His channel is younger, that must be remembered, but his channel is stagnating. He hasn’t lost viewership, but he’s gaining viewership comparatively slowly and the amount of new subscribers he’s getting each month is going down, which you wouldn’t exactly expect for his previously higher-profile status in Catholic Trad Media.

So, back to the beginning again? Are there financial motives for the SSPX feud? Well, Canon212 and Fr. Z, who are SSPX-friendly, are declining in viewership. On the other hand, SSPX-friendly Remnant has grown the most. Taylor Marshall is doing fine, but Timothy Gordon’s channel just isn’t taking off as much as it should be. The Anti-SSPX Church Militant hasn’t taken a major hit, but has definitely gone way down in viewership over the last year or two, which is not great right after you finished an expansion campaign. Are there financial motives? Who can say, as there are winners and losers on both sides. Look at the data, and think about it yourself a bit. Think about it over coffee. Read and re-read. Maybe Church Militant, or 1P5, or any of these groups will release official, guaranteed-accurate numbers to disprove this article, but I don’t count on it. And of course, popularity doesn’t determine truth. I wish I could write a happier or more journalistic ending to this post, but I’m only a college student, not a reporter. (Again, I’ve programmed analytics systems, that’s my realm of knowledge. If you liked this, hire me or take a look at other stuff on my website.)

NEW! Read Part Two →

My Homelab: Part One

I was browsing Barnes & Noble about a month ago, and while I was there, I bought Wendell Odom’s CCNA 200-301 Official Cert Guide, Parts One and Two. It wasn’t really a career choice: I had the books for CompTIA A+, Network+, and Security+ on my shelf already, plus plenty of Raspberry Pi and Arduino books. I didn’t know much about networking (the CompTIA Network+ book is the most neglected book on my shelf), so I figured I might as well learn something about networking.

After downloading Cisco Packet Tracer, well… Cisco Packet Tracer is fun, but I prefer learning in a hands-on environment. I built my desktop computer in 2016 when I was 14, and I learned quite a bit during that project. I have the collection of eight Raspberry Pi computers on my desk thorough which I learned Linux (1, 2, 3, 3+, 4 2GB, 4 4GB, Zero, ZeroW) and the Arduino Uno from 2011, through which I learned the basics of the C programming language. With some spare money in my pocket, why not learn with something physical? I have plenty of Ethernet cables in the closet…

My initial impulse was to open up eBay and start looking for Cisco routers and browsing on r/Homelab. What I didn’t immediately realize was that the CCNA 200-301 had only come out about a month or two earlier, and it requires Cisco IOS 15. Fortunately, I realized the difference between IOS 12.1 and IOS 15. Most of the r/Homelab guides and videos (particularly this one from only a year ago) advised buying some Cisco 2621s and 2950s because they are cheap and plentiful. What they failed to mention was that with the new unified CCNA certificate launch, knowledge of IOS 15 is required and these older recommendations from only a year ago only run IOS 12.1.

In the end, I purchased 3x Cisco Catalyst WS-C3560G-48TS-S. I could have also done some 3750s, but I was happy with this one as it came with power cords, bezels, and console cables. The 3560 has 48 ports, some variations (such as this one) support IOS 15, it has 10/100/1000 Ethernet, and it is only about $50 per unit. Also, it is a Layer 3 switch, meaning that it can be configured to take on most (but not all) of the functions a separate Cisco router would have. The general advice online is to get at least 1 router and 2 switches, and so to have one device which can do almost everything is excellent.

The package comes tomorrow. My Serial->USB adapter comes on Saturday (delayed Amazon Prime because of a certain pandemic), and my desktop 8U Rack mount on Friday. This will be interesting.

As for the rest of equipment that I have right now: I have the homebuilt computer from 2016 (it’s still got 16GB RAM and an i5-6500), Original Prusa Mini 3D Printer, piles of books, the 8 Raspberry Pis, 2 Arduinos, Intel Edison Board, Ti Launchpad, piles of other odd equipment that came with the hardware raffle, MacBook Pro and iPad, and a Netgear AC1750 router that I flashed with OpenWRT. It’s a good beginning.

If you are looking for more information on what to buy for Cisco routers, this impartial guide was very valuable.

My longest-running project (2016-present): LMS analytics system, Part One

When I was 14, I was a happy homeschooled kid in a devout Catholic family, and I had been taking classes for two years from Homeschool Connections. I was quite ahead, doing 10th grade work and mathematics (Algebra 2, if I’m not mistaken). This was before homeschooling became more popular after the COVID-19 pandemic.

Between being homeschooled, having many siblings, and having a surprising amount of free time, I had been experimenting with BuddyPress and WordPress for almost a year. Before Homeschool Connections, I had taken classes at a now-defunct online school which had a messaging system, but it was shut down due to it having no moderation system. While most students were generally well-behaved, the occasional undetectable incident forced the closure of that system in my old school. With my technical mind, I wondered how I could share my knowledge and learn from other students in my new school.

I set up a simple BuddyPress website, spent a long time perfecting it, and presented it to the president of Homeschool Connections. Though interested, it wasn’t the highest priority for him. Instead, he had a very different thought. His company has a subscription-style business model, similar to Netflix, Coursera, or Pluralsight. You pay your $30 (now $35) a month, and in return you get unlimited access to their catalog of courses. Unfortunately, it was very difficult to know how to pay teachers accurately or fairly long-term. A recurring royalty would have been ideal, but there wasn’t a good way to figure out what royalties were owed, or what courses and teachers got the most attention. He contacted Moodlerooms, his learning system hosting provider, but they wanted “an arm and a leg” for the service.

We sketched out the general idea together: Every time a student clicked on a course, this would be tracked as a view and sent to a database, which had the names of each course, what category the course belonged to, and the name of the teacher instructing the course. With this data, we could then find out the total views the teacher had, by adding up all of the views for the courses that the teacher instructed. Every view would be timestamped, to allow analysis over a specified time period. With this information, you could get a pretty good percentage of how much website traffic was to courses taught by a specified teacher, and this could be used as a factor in figuring out what royalties to pay.

I got to work that very day in the language I knew best: PHP 5.4. Yes, a 14 year old writing PHP 5.4, which has a reputation to this day for being an unusually poorly-designed language, even if it was fairly easy to learn. But, hey, it was a project, and I got to work immediately. In those days, I didn’t even know or care what these things called Version Control Systems were. If I wanted to add a new feature, I copied the folder holding my code and worked on that. If I didn’t have a backup and managed to screw up my code royally, I’d spend up to an hour fixing my code until it ran again. I used Bootstrap 3 as my front-end, because why not? You’ve got to start somewhere.

Eventually, I ended up with a ridiculous amount of files, most of it boilerplate. My code wasn’t very secure, or pretty, or well-documented, and had wildly inconsistent variable names. Despite looking atrocious in the backend, it worked, and the frontend looked pretty good for 2016. If I did anything technically right, at least I used PDO to keep my database somewhat safe.

I don’t have any screenshots surviving that I could find of what it initially looked like, even though I remember taking a few. Maybe they are on a backup hard drive somewhere? I did, however, manage to get the latest and last version of Tracker 1.13 running on my laptop with a little tweaking to the source code. It wasn’t meant for PHP 7 and it will let you know quite clearly.

So, with that, the administrators could easily see what courses were getting viewed the most, and what teachers should get the most (or least) royalties. You might be slightly curious about how I implemented this without using a Moodle plugin.

The company was, at the time, on Moodlerooms, and they didn’t allow community or unapproved Moodle plugins without a very expensive code review. It was part of the deal that there needed to be some way to figure out what courses were getting most viewed without needing an expensive plugin.

I’m not going to share my full technique, but basically, the admins created a “parallel” copy of all courses within my program. Every time a course was added to Moodle, it was added to my program as well. I then used some JavaScript within Moodle’s theme which scanned the URL a user clicked on for a course ID. If it found one, it added a view.

My database wasn’t exactly pretty, but it was functional: There was a table for every course, and in each table was a row for date and views on that date.

Adding up the views for a teacher was simple and slow: Just open up the table for every course the teacher taught, and add up the views for all of those courses, and repeat for every teacher. I didn’t know how to do good caching either, so my initial implementation could take a good ~30-60 seconds to process on a good day.

Even though the code looked atrocious and was difficult to fix, the company was impressed and I sold it to them for what was, in my estimation, a significant amount of money. Even though it was slow and had awful code, it worked and was actually almost bug-free. Other than a bug with timestamps after a year rollover, the company never contacted me about any major bugs: “It just works!” They did have some ideas for improvements though such as Excel exports, which I quickly added using a library. (Those were another thing I hadn’t known about. My initial version didn’t have any composer dependencies! Handy things, libraries!)

My program ran for about 2 years in production without fail. I sold them my program just after my 15th birthday, but I was learning so much about how to do things better that it didn’t age well in my mind. Even though the company didn’t really care, I was learning better ways to do almost everything.

Shortly after my 17th birthday, I discovered Laravel and Laravel Nova, and I was hooked.

Part Two coming soon, and revisions to this article

Hackster.io “Secure Everything” Hardware Box – Part Three: The MT3620 becomes an Arduino

If you haven’t read parts one and two of the series, I’d suggest reading them for some background. Long story short: I won a raffle and got a box of assorted hardware from Hackster.io in a contest from a Microsoft/AVnet collaboration. The deal was that over 20,000 people (including myself) received an AVnet Azure Sphere MT3620 development board to try to make something interesting with.

See the source image

And, well, sadly, my C/C++ programming skills in the embedded space are almost nonexistent (unless you count Arduino as C). I kept the board online for the 15 days to win the Raspberry Pi, and won the raffle though, so I have definitely got the better end of this deal.

After getting my hardware though, I noticed something quite interesting: This board has a Grove connector and two mikroBus slots. Previously, I didn’t have any devices which used Grove or mikroBus to test with. But now, with a Relay mikroBus Click Board and a whole box of Grove sensors, I wondered if there was, perhaps, a better way to program the MT3620.

It turned out, with some digging, that there was a better way to program it for my purposes. A programmer named Georgi Angelov (aka @Wiz-IO) released a mostly-complete port of PlatformIO to the MT3620. PlatformIO’s basic goal is to add support for multiple ecosystems (Arduino, ESP, Linux) to multiple boards (Arduino, Raspberry Pi, Adafruit Feather). There are obvious incompatibilities (your Arduino isn’t going to support the Linux ecosystem), but it is still a neat attempt at cross-platform embedded programming. By porting the AVnet board with the MT3620 to PlatformIO, it could be possible to write Arduino programs and run them on the dev board.

Of course, I was hooked and began digging through his code. It’s sadly not a complete PlatformIO port, and it hasn’t been updated in a while. Furthermore, it appears (please pardon me if I am mistaken) that English is a second language to Angelov, and so some of the documentation is difficult to understand and is not as clear as it could be. He also has no screenshots of the install process. That didn’t stop me from doing what I could with his code.

I started by installing PlatformIO into Visual Studio Code. It looks quite interesting, no matter what board you are using:

The Avnet MT3620 development board is sadly not one of the officially supported 700+ boards yet. That’s where Angelov’s port comes in. I had to install it manually into PlatformIO, but that was shockingly easy. PlatformIO just lets you paste in a GitHub URL, and it will automatically fetch the custom board information. (I wish all development tools could do stuff like this.) If you are following along, be aware that the original port requires some lines of code to be changed to work on the newer SDKs.

Once installed, you should see something like this:

If you click on the examples tab, you should see this:

Click “Import,” and PlatformIO will soon give you a path to a folder containing the code. Open that folder within Visual Studio Code, and open the src/main.cpp file. Admire it’s Arduino-like syntax:

However, we aren’t out of the woods yet. The SDK platform installs for Azure Sphere has significant issues with the AVnet development kit. This can be fixed according to the Install Notes (which are actually for 19.10 SDKs and higher, not just that particular SDK) with the following instructions:

  1. Close Visual Studio Code. It might overwrite files we’ve changed.
  2. Open the folder C:\Program Files (x86)\Microsoft Azure Sphere SDK\Tools in a File Explorer window.
  3. Open the folder C:\Users\YourUserName\.platformio\packages\tool-azure\azsphere in another File Explorer window.
  4. Select all items in the first folder with CTRL+A, and then drag the items into the PlatformIO folder, while holding down the CTRL key to Copy instead of Move. If File Explorer asks you what to do with duplicates, choose Replace.
  5. Close both windows.

The next step is to open the folder C:\Users\YourUsername\.platformio\platforms\azure\builder\frameworks in a File Explorer window. Open the file common.py and look for this block of code:

See the last lines of the highlighted area? Replace image with image-package and package-application with pack-application as the comments indicate. It should now look like this:

Save and close.

Open up Visual Studio Code again, click the PlatformIO Sidebar rail, and chose “Upload.” If all goes well, it should run the Blink sketch on your MT3620! Please be aware that even though Angelov lists Serial as supported (and has it working on video), I have not managed to get Serial communications to work on any COM port in Windows.

There are some immediate differences with this Blink sketch and the regular Arduino Blink sketch though. The first is the #include <Arduino.h> at the top of the file. Because Arduino is technically based on C and is a (very large) C library, we are importing that into our code. The second thing you may notice is that the code already knows what GREEN_LED, BLUE_LED, and RED_LED are. These are defined in the board variant file, which includes definitions for board-specific variables:

The third, and last thing to notice is that I am setting the LEDs that I want to turn on to LOW, and the LEDs I want to turn off to HIGH. What gives? Well, it’s a quirk with the onboard LEDs on the AVnet board itself. This doesn’t happen with external LEDs. For the board’s onboard LEDs, 0/LOW is on and 1/HIGH is off. This quirkiness is not unique to the Arduino on MT3620 components. This happens even in the Azure Sphere example sketch, which I’ve customized slightly to make the point:

Looking at my example derived from an official example, it would appear that this would turn the LED off for two seconds and on for one second in a loop. Nope. Because LOW is on and HIGH is off for those onboard LEDs, this actually turns the LED off for one second and on for two seconds. So, it’s not Arduino-specific, it’s just the onboard LEDs on the AVnet board in general. Weird. If anyone has any ideas why this is, let me know.

Back to the board though. Now that I had the RGB LEDs blinking on the board, I looked at my Relay Click board. How hard could it be to get running on the MT3620?

MikroE Miscellaneous Relay click front

This relay click board will snap perfectly into one of the two sockets on the MT3620. I opened up the relay’s product page and ran to the pinout diagram.

So, for the left side relay, I need to turn Pin 3 to high to activate the relay. For the right side relay, I need to activate Pin 16 to trigger the relay. But hold on: This is on the Relay board itself. The pins have completely different from the Arduino’s perspective: The pins certainly aren’t the same if you plug the board into, say, Socket #2 instead of Socket #1, or vice versa. How do you find the correct pins?

After some searching, I found the official datasheet for the AVnet MT3620 development board. And it’s right in there:

Looking back at the Click board, I need to activate Pin 3 / CS to activate the left side relay, and Pin 16 / PWM to activate the right side relay. The module name for the left side pin is GPIO34_CSA1_CTS1, and the module name for the right side pin I need is GPIO0_PWM0.

But, alas, I’m not done yet. Every Azure Sphere program has a app manifest, and this app manifest lists every capability your program (or in this case, sketch) has. It’s kind of like a permissions system for Android or iOS. It looks like this in your folder:

Right now, I have GPIO pins 8, 9, and 10 allowed, which are the three onboard LEDs. Using the module names, I know that I need to allow GPIO pins 34 and 0. You may notice the odd “PINX-GPIOY” format. I have no idea what the “PINX” value is for, and it’s not consistently changing with the GPIO value either. We want to match the GPIO value. This is where that avnet_aesms_mt3620.json file (also available here) comes into play. It includes a list of all possible permissions for the board.

For pin 34, I need to add AVNET_AESMS_PIN25_GPIO34 to my app manifest. For Pin 0, I need to add AVNET_AESMS_PIN5_GPIO0 to the manifest. My final manifest looks like this:

With all of that permissions work doing, it’s time to try controlling the Relay click board from the MT3620! Open up main.cpp and let’s add a bit of code to control our relays:

Upload, and with that, I’ve built a relay metronome!

Awesome as this is, there is one little bug: When a new pin is initialized with pinMode(), that pin is automatically set to HIGH, resulting in both relays being turned on until the code turns one off. I’m not sure quite why this is, but it means that the relay momentarily turns both relays on. I just follow up my pinMode() calls with a simple digitalWrite() call to take care of that.

So, what do I have so far? An MT3620 with the ability to package Arduino sketches to run on it, and a working Relay click shield. What about a Grove module? There’s a Grove connector just sitting there. And not just any Grove module with a single-wire signal: A Grove module which uses I2C.

I immediately reached for the best I2C Module in the Grove box: The RGB Backlit 16×2 LCD display. For that module, there is an Arduino library, which I extracted into a convenient libs folder in my sketch.

After this, I had one major problem: the build process couldn’t find Wire.h, which is a pretty common library. Odd. Just as an experiment, I tried downloading a new copy of Wire.h online and putting it in the libs, but it didn’t work. After some researching, I found that PlatformIO comes with a working Wire.h and Wire.cpp in the C:\Users\YOURUSERNAME\.platformio\packages\framework-azure\arduino\libraries\Wire\src folder. It is supposed to be included in the build path, but PlatformIO shows that it is in the build path already, so I am not sure what’s going on. I copied the wire files from there into the root directory of lib and my build succeeded!

I then got excited and immediately wrote some code to do an RGB blinking sequence on the LED, with the RGB onboard light and relay working together.

I uploaded it… and it didn’t work! After some thinking, I realized I forgot to add I2C permission to my app manifest.

With that out of the way, I clicked “Upload” and… well, the RGB Backlight was flashing, showing that I2C sensors were completely workable with Grove! Alas, I made one major oversight: The LCD module needs 5V, whereas the MT3620 provides only 3.3V (as most Grove sensors need only 3.3V, the LCD being the exception to the rule). As a result, even though the backlight works, the LCD could not display any text when I tried due to not enough power. I had a similar issue on the Edison board, so this isn’t a communications problem.

Ladies and Gentlemen, there you have it. An MT3620 development board running an Arduino sketch on a Linux-based OS from Microsoft, controlling a mikroElektronica Relay Click board and an I2C Grove LCD Display. Of course, the possibilities could go on a long way from here. There are definitely disadvantages to programming your MT3620 this way: It’s unfinished, some things like Serial don’t work, and you can’t accept or send many important system calls (i.e. your app can’t receive warnings of an incoming update or reboot, for example). Still, being able to program the MT3620 like an Arduino makes prototyping much easier than writing C++, and I can’t wait to see what I will use the MT3620 for in the future.