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…

Can we please have a real plan?

I’m going to cut to the chase: The Institutional aspect of the Catholic Church in 2020 is a total, unmitigated, almost all-encompassing failure. I’m 18 years old, and if I did not firmly believe the truths of the Catholic Church as the faith necessary for salvation, there is utterly no reason I would stay.

In 2018, I found some people online who were willing to speak about the problems I had noticed in the Institutional Church. These people were in the general “Traditionalist Catholic Media.” I used to follow them for a few years because they were the only public faces who were willing to admit the poor state of things. Before I found about about these websites and sources in ~2018, I had wondered why there were almost no teenagers my age at Mass, but nobody outside of my family seemed willing to speak about it.

Fast-forward to 2020, though, I am almost completely disillusioned with Catholic Media. I used to view them (not naming names) as future saints, fighting against a corrupt institutional church that was harming the spread and efficacy of the beautiful faith within. My disillusionment springs from one realization: In trying to resist protestantism, commentators (and their followers) are acting like protestants.

Think about some of the possible similarities of your favorite commentator to, say, a megachurch pastor for a second:

  • Attacks or disrespects those outside of his opinion bubble
  • Must have an opinion for everything; can almost never admit “I don’t know” to any question
  • Changes opinions quietly when convenient, without notice or apology, even to groups that were previously attacked as being incorrect
  • Sells a boatload of merchandise, books, films, subscriptions, tickets, constant reminders to buy merch
  • May end up in fights with former allies or other well-meaning Catholics who are almost entirely on the same side anyways
  • Large families, even though this may result in a conflict of interest between speaking the truth and something more profitable

It isn’t just the lack of humility or other problems listed above that bugged me. My question is, what have any of these media groups actually accomplished? Tell me,

  • How many souls have these groups actually saved? Is it a measurable percentage of those who would have otherwise left? If it isn’t a measurable percentage, it’s statistically irrelevant and means we aren’t doing enough to stop the bleeding. Saving a hundred souls here or there is absolutely a noble effort, don’t get me wrong. However, that is not a plan to re-evangelize the culture or to accomplish anything major.
  • Satan would happily let a few hundred souls convert here and there if it meant that we would be so utterly ineffective on a broader scale. And we’ve accepted that deal.
  • How many souls have actually been confirmed in their decision to leave the Church because of the scandalous infighting? Nobody seems to have ever done the math on that one.

Which brings me back to the headline: Can we please have a plan? Take a playbook from our enemies. Despite having incredibly opposing and seemingly incompatible views, they have united in their opposition to us. Commentators and their followers may have seemingly incompatible views, but right now they are attacking each-other instead of attacking our common enemy in return. As the old saying goes, The enemy of my enemy is my friend, and commentators haven’t learned that.

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.

Hackster.io “Secure Everything” Hardware Box – Part Two

I finished off with getting both the Intel Edison, Grove Kit, and Ti Launchpad running quite good, but there were some rough edges and more things to discover.

Starting with the Intel Edison: I discovered that the Arduino IDE comes with a huge collection of Intel Edison sample sketches.

I immediately went to WiFi(Edison) > SimpleWebServerWifi. I entered my network info into the sketch and changed the LED from the default 9 to 13 (which is the onboard LED). I tried loading in the IP Address that was printed out in the Serial Monitor, but no connection. I went back to my research and found that the Edison contains an Edison configuration service that uses Port 80. I don’t know the full repercussions, but you’ve got to have some risk in life, and so I disabled that service:

systemctl stop edison_config
systemctl disable edison_config

And with that, I discovered that the Intel Edison is powered by systemd, all the way back in 2016 (when this last release was published, though it probably ran systemd since launch in 2014). It isn’t the happiest systemd though, reporting that it is running in a degraded state. The Edison also has PulseAudio, apparently.

So, with that out of the way, I restarted my sketch, and…

… it worked exactly as it should have, with the LED responding to my web server commands. The code for having the Arduino literally run a simple web server on the Edison is shockingly clean, because the Edison actually pretends to be the official Arduino WiFi Shield:

/*
  WiFi Web Server LED Blink
 
 A simple web server that lets you blink an LED via the web.
 This sketch will print the IP address of your WiFi Shield (once connected)
 to the Serial monitor. From there, you can open that address in a web browser
 to turn on and off the LED on pin 9.
 
 If the IP address of your shield is yourAddress:
 http://yourAddress/H turns the LED on
 http://yourAddress/L turns it off
 
 This example is written for a network using WPA encryption. For 
 WEP or WPA, change the Wifi.begin() call accordingly.
 
 Circuit:
 * WiFi shield attached
 * LED attached to pin 9
 
 created 25 Nov 2012
 by Tom Igoe
 */
#include <SPI.h>
#include <WiFi.h>

char ssid[] = "yourNetwork";      //  your network SSID (name) 
char pass[] = "secretPassword";   // your network password
int keyIndex = 0;                 // your network key Index number (needed only for WEP)

int status = WL_IDLE_STATUS;
WiFiServer server(80);

void setup() {
  Serial.begin(9600);      // initialize serial communication
  pinMode(9, OUTPUT);      // set the LED pin mode

  // check for the presence of the shield:
  if (WiFi.status() == WL_NO_SHIELD) {
    Serial.println("WiFi shield not present"); 
    while(true);        // don't continue
  } 

  String fv = WiFi.firmwareVersion();
  if( fv != "1.1.0" )
    Serial.println("Please upgrade the firmware");

  // attempt to connect to Wifi network:
  while ( status != WL_CONNECTED) { 
    Serial.print("Attempting to connect to Network named: ");
    Serial.println(ssid);                   // print the network name (SSID);

    // Connect to WPA/WPA2 network. Change this line if using open or WEP network:    
    status = WiFi.begin(ssid, pass);
    // wait 10 seconds for connection:
    delay(10000);
  } 
  server.begin();                           // start the web server on port 80
  printWifiStatus();                        // you're connected now, so print out the status
}


void loop() {
  WiFiClient client = server.available();   // listen for incoming clients

  if (client) {                             // if you get a client,
    Serial.println("new client");           // print a message out the serial port
    String currentLine = "";                // make a String to hold incoming data from the client
    while (client.connected()) {            // loop while the client's connected
      if (client.available()) {             // if there's bytes to read from the client,
        char c = client.read();             // read a byte, then
        Serial.write(c);                    // print it out the serial monitor
        if (c == '\n') {                    // if the byte is a newline character

          // if the current line is blank, you got two newline characters in a row.
          // that's the end of the client HTTP request, so send a response:
          if (currentLine.length() == 0) {  
            // HTTP headers always start with a response code (e.g. HTTP/1.1 200 OK)
            // and a content-type so the client knows what's coming, then a blank line:    
            client.println("HTTP/1.1 200 OK");
            client.println("Content-type:text/html");
            client.println();

            // the content of the HTTP response follows the header:
            client.print("Click <a href=\"/H\">here</a> turn the LED on pin 9 on<br>");
            client.print("Click <a href=\"/L\">here</a> turn the LED on pin 9 off<br>");

            // The HTTP response ends with another blank line:
            client.println();
            // break out of the while loop:
            break;         
          } 
          else {      // if you got a newline, then clear currentLine:
            currentLine = "";
          }
        }     
        else if (c != '\r') {    // if you got anything else but a carriage return character,
          currentLine += c;      // add it to the end of the currentLine
        }

        // Check to see if the client request was "GET /H" or "GET /L":
        if (currentLine.endsWith("GET /H")) {
          digitalWrite(9, HIGH);               // GET /H turns the LED on
        }
        if (currentLine.endsWith("GET /L")) {
          digitalWrite(9, LOW);                // GET /L turns the LED off
        }
      }
    }
    // close the connection:
    client.stop();
    Serial.println("client disonnected");
  }
}

void printWifiStatus() {
  // print the SSID of the network you're attached to:
  Serial.print("SSID: ");
  Serial.println(WiFi.SSID());

  // print your WiFi shield's IP address:
  IPAddress ip = WiFi.localIP();
  Serial.print("IP Address: ");
  Serial.println(ip);

  // print the received signal strength:
  long rssi = WiFi.RSSI();
  Serial.print("signal strength (RSSI):");
  Serial.print(rssi);
  Serial.println(" dBm");
  // print where to go in a browser:
  Serial.print("To see this page in action, open a browser to http://");
  Serial.println(ip);
}

Now for the second issue I’ve noticed when using the Edison. Let’s say you have automatic starting of the sketch (from Part 1) turned on. If you edit your sketch on the Arduino IDE and start it, the old auto-started sketch and the new sketch will end up running simultaneously, which will make things quite… interesting, but not exactly fun.

I haven’t figured out an elegant fix for this, but my solution so far is to use the Linux top command to find the process ID of the auto-started sketch, and then kill that process before uploading new code.

In this window, the sketch is process 241. I then just run kill 241 or whatever number in the command prompt to stop the auto-started sketch. I only need to do this when I plug in the Edison after a reboot to upload new code with the IDE. Maybe there’s something I’m missing?

This brings me to my biggest discovery. The Yocto Poky image for the Edison is old. 2016 old. Linux 3.10 old. Some engineers have created an auto-building branch system for much more up-to-date, unofficial images for the Edison at https://github.com/edison-fw/meta-intel-edison and https://edison-fw.github.io/meta-intel-edison/ . These images are, well, unofficial, not necessarily reliable, may break things between releases, and you have to build them yourself on a Linux machine or VM. However, considering the speedily disappearing information about the official release and the fact that the new firmware is 4 years newer, I can put up with that, but I don’t have a Linux dual-boot system at the moment, so I’m going to put that on hold for things to try someday. You may feel differently.

I then looked at the 3D Magnetic Sensor, TLE493D A2B6. Apparently, it has a Cortex M0 processor which could be theoretically programmed, but I don’t really know how this can be done, and the programming language would probably be quite difficult. This sensor works by measuring magnetic force in all three cardinal directions from a small, nearby object (the very small magnetic cube that comes in the box). There’s a neat 3D printed demo of this with a GUI for Windows to demonstrate this:

Neat as that is, I don’t really feel like 3D printing the parts for that demo, even though I have a Original Prusa Mini on the desk. It just doesn’t seem like the best use of plastic. Instead, I got digging and on page 27 of 30 on the sensor datasheet is the link to an Arduino library. I really don’t have any uses for the sensor at this time, but just knowing how to attach it to the Arduino or the Edison greatly improves my odds of using it in the future. (I’m noticing a pattern about how almost all of the equipment I’ve gotten in these boxes can be connected or turned into an Arduino one way or another.) They say that the sensor doesn’t work in “low-power mode” with that library, but I’m looking at the sensor and wondering how much power it would normally draw, especially considering it’s running on regular USB. The library also has convenient links to the datasheets and other sensor information.

In other news, it took a while, but I finally found the MOSFET datasheet. The model is IPT60R028G7. I initially didn’t know what to do with this device, but was stunned to see that it cost $15.80 each on Digi-key, so this was no average MOSFET. I contacted Hackster.io’s Jessica Tangeman to ask what it was for, and it turns out it is a very powerful MOSFET. She sent me a link to all of the amazing projects that could be built with it, and also mentioned some reasoning behind the part selection:

Check out some other projects with the MOSFET – it’s incredibly powerful. https://www.hackster.io/infineon/products/coolmos-c7-gold-sj-mosfet

And yes, it’s the old Intel Edison. They don’t sell them anymore and there are a lot of hardware collector fanatics out there so once the hardware boxes hit the $ value mark, we decided to throw in some extra things for fun.

https://www.hackster.io/contests/SecureEverything/discussion/posts/6448#comment-125080

And, there you have it. I’m still figuring out what I’ll probably build with it, but for now I’m keeping that MOSFET safe and don’t want to lose it!

Read the epic Part Three