Showing posts with label spam. Show all posts
Showing posts with label spam. Show all posts

Saturday, May 24, 2025

How to Achieve Inbox Zero

Introduction

In last week’s post I made the case for Inbox Zero: that is, for being so on top of your email that your inbox is virtually empty (say, a dozen or fewer emails). To recap, Inbox Zero is about being more effective with email, meaning you’ll possibly read less of it, definitely re-read much less of it, and stop missing important emails because they were buried under all the unimportant ones. The goal is to make better use of our time, so that we spend less of it doing email. In this post, I am going to explain exactly how to achieve and maintain Inbox Zero, based on how I’ve managed it for the last several years.


[A note on the art above: a concerned reader was aghast at my use of A.I. to create the art for last week’s post. She was so keen to keep it real, she created this original art just for me—and you.]

One prerequisite

There is an important prerequisite to achieving Inbox Zero, at least the way I do it: you have to use Gmail as your email interface. This doesn’t mean you have to use a Gmail account. (More on this later.) Now, I’m not some major Google fanboy, and they didn’t sponsor or promote this post (or this blog) in any way. Google makes its money through ads, and I’m not big on advertising. I also don’t appreciate how their YouTube algorithm tried to addict me to sexy yoga videos. Moreover, I bristled at the original Gmail because the consumer version, when it came out, had ads that were generated based on its bot reading the email message content. This so unnerved me, I created a technique to stymie it. But Google eventually ditched the ads, probably after reading this blog and realizing I was right. (Yes, that was a joke.) But now I’m sold on Gmail.

When my employer switched to Google Workspace, and Gmail became a part of my daily life, I realized not only that its conversation view is much more efficient, but that the use of labels instead of folders makes all kinds of sense. In fact, labels are the key to maintaining Inbox Zero. So if you’re still committed to using Outlook, this post isn’t going to be of much help.

If you don’t use Gmail, don’t stop reading! If you’re not among the 76% of Americans who use Gmail for their personal email, you can still keep your Yahoo or Hotmail account, and set up the Gmail interface (both on your laptop and your Android app) to pull in email from either (or both) of those platforms. The Gmail interface works great for my personal email (which is on my own domain, via the Yahoo/Turbify platform), along with my Gmail, of course. It’s nice to get everything in one place.

(I’m not going to explain how to port your Yahoo or Hotmail over to Gmail … that kind of task is what ChatGPT is for. It did a great job guiding me through the process. When one of its instructions doesn’t work—which will happen, as these interfaces undergo minor changes all the time—ChatGPT can course-correct very well. In fact, if you told ChatGPT, “I am having trouble with the POP3 settings because my neighbor is having a huge party and they’re making too much noise,” GPT will help by asking, “Would you like me to draft a speech or brief note that you can present to ask them to quiet down?” And if upon reading this draft you respond, “The note needs to be shorter and more emphatic because I want to write it in Sharpie on my husband’s bare chest,” GPT will accommodate that request as well. So, you may now wonder, why wouldn’t you just ask ChatGPT how to get to Inbox Zero? The answer is, because it’s only really good at rote technical configurations, not at strategy. Yet.)

My Inbox Zero strategy

As with all techniques for everything, there are five steps to reaching and maintaining Inbox Zero. No, this methodology won’t get you to where you literally have zero emails in your inbox, but when you start doing start-of-day triage and some catch-up throughout the day, you’ll get to where most of the time you’ll have relatively few. The crucial thing is to have no more  in your inbox than Gmail’s first page can display. The default is 50 threads. Anything that doesn’t fit on this first page is guaranteed to be neglected, because the chances of you ever seeing it are negligible. (Sure, you could find those emails with the search feature, but how will you know to search if you don’t know the email exists? Do you routinely search on “invoice past due”? Or are you waiting for someone to say, “What? You didn’t see my email?” so you can search on their address?)

With no further ado, here are the steps.

Step #1 – Create a few filters and a couple of new labels

This step is mainly necessary for your work email, and is optional if you work for a small business. But if you work for a large corporation, you surely get a ton of email that’s broadcast daily from HR, your marketing department, news feeds, vendors, and various other non-personal sources. You are generally not expected to respond to these emails, so they should definitely be considered lower priority. They shouldn’t compete for precious visible-inbox real estate with any email that a human took some trouble writing.

Thus, you should create filters that target the daily all-hands update emails and filter them out such that they don’t even hit your inbox. Since these messages are not as useless as direct marketing solicitations, you’ll want to also label them (automatically!) in case you need to find them later. Figure out how many labels you need: you might have a “Corp updates” label and another for “Industry news,” or you might just have a catch-all for “Bulletins etc.” Now, I know filtering out emails so they never hit your inbox can seem scary, but bear in mind two things. One, if you haven’t been doing Inbox Zero, lot of emails have always been invisible to you anyway, by being buried among others and/or not on the first page of your inbox. Two, you can always peek at the mass of unfiltered emails by clicking the “All Mail” link down the left of your screen:

(If you don’t see this “All Mail” link it’s because Gmail has hidden it; click the “More” link to expose it. In the snapshot at left, the view is expanded so there’s a “Less” link; that’s where the “More” link would be shown if this view were collapsed.)

For your personal email, the first filter should get rid of unasked-for solicitations like the daily email you get from Speedo because you once bought that bathing suit from them (you know, the one that didn’t even fit so you returned it). Filter out all these quasi-spammers—the companies you did choose to do business with who are now like remoras. (Myself, I have a Hotmail account that I use for all e-commerce so I can more easily ignore that spam. If I need to file a receipt I log into the Hotmail, find it, and forward it to my personal email. Otherwise I ignore Hotmail entirely; it’s at Inbox 48,376.)

With these various filters in place, at least you’ve somewhat mitigated the fusillade of daily emails, hopefully reducing it to under fifty so that facing your Inbox for daily triage will be less daunting.

Next, if this is your work email, create a label that is your boss’s name, and set up a filter that applies this label to each of this person’s emails to you—without removing the email from your Inbox. Make this a bold, perhaps red label. If you’re lucky and your boss is named Aaron, this label will automatically show up at the top of your list of labels (which is also your list of folders … more on this later). If your boss’s name isn’t Aaron, put an underscore character at the beginning to move it up. Going forward, instead of starting your workday by perusing your inbox, you can start in your “Boss” folder (or, if your emails don’t pile up too fast, you can still start in the inbox and just look for that bright red label.) The idea here is that the very first emails you should read are the ones from the person who has direct influence on your salary. In the below example, the person’s boss is named Zoe, so two underscore characters are required.


You’ll also want to create a label called “_Follow-up.” Make this a bright color, too. The underscore character before the “F” is to move this label to(ward) the top of the list. The “_Follow-up” label is important for both your work and personal email … more on this later.

Does it make sense to automatically flag emails from your spouse, the way you did with your boss? Perhaps, but only if you get a lot of email from him or her. (Mine just yells across the house, like me.)

Again, ChatGPT can walk you through how to set up the actual filters and create and color-code the labels. All kinds of helpful people have already documented this process in various forums etc., so ChatGPT can research and distill that process for you.

Step #2: Clean slate

Obviously if you’re currently buried in thousands of emails after years of neglect, you’ll need to start with something other than mere triage … it’s a little late for that. To achieve a clean slate, take a deep breath and ask yourself what the odds are that you’re really going to ever read emails 51 through 25,359 in your inbox. Once you have accepted that the answer is “hell no,” you need to just archive them all, in one fell swoop. First navigate to your inbox. Then find the little checkbox just below the “Search mail” field at the top of the Gmail interface. If you hover your cursor over it, a tool-tip will appear that says “Select.” Check that box to select the first 50 emails, or better yet, accept the offer to select all 25,359 of them (i.e., however many you have total). Then click the icon next to the checkbox that looks like a folder with a down-arrow on it, as shown below. This will archive all selected messages, which means they’ll no longer be in your inbox. Where do they go? Into the ether. Probably the same place electricity goes when you turn out the light. They’re still on the mail server, though, and you can still see them by selecting “All Mail” as described above. But you don’t need to see them. They’re dead to you. Get on with your life.


[A note on the screenshots in this post: some are a bit hard to read. Click on a picture to enlarge it.]

The only problem with that mass archival is that nothing is labeled, so it’ll be hard to find past emails. That’s the consequence of waiting this long to get organized. Proper implementation of Inbox Zero means being organized going forward, not just clutter-free. Thus, once you have zero emails in your inbox (or maybe half a dozen new emails since they continuously pop up out of nowhere), you need to do regular triage on all the new stuff.

Step #3: Triage and pre-labeling

Okay, let’s assume you now have a clean slate and an inbox that doesn’t represent years of neglect. When you open Gmail first thing in the morning, you’ll likely still see dozens of emails, and you’ll start to panic, but don’t. Just follow these rules in making your way through the pile.

Start with the boss. Remember that new filter you created that automatically labels emails from your boss? Read those first. (If this is your personal email, and you created a rule to automatically flag messages from, say, your kid who’s a terrified college freshman, start with those.)

Jettison spam. If you see spam or quasi-spam messages, delete them on sight. You can go down the list of threads selecting all the chaff via the checkbox, then click the garbage can icon on your toolbar. This is incredibly satisfying. If you’re seeing a lot of spam from a single source, create a filter to kill it off forever. (Zap Zappos! See ya later, Speedo!)


(I had to cheat with the snapshot above … that’s a view of the Promotions tab, where Gmail automatically moves the quasi-spam solicitations. If you don’t see inbox tabs like Promotions, Social, and Updates, enable them in Settings/Categories.)

Scan for important messages first. Scan through the subject lines for anything that looks important, like one from a friend you’re making plans with, or a work colleague you’re knee-deep in a project with, or a thread you’ve been working that has new activity, and open that first. Scanning never worked before, because you had too many emails. Now it’s actually a reasonable way to triage.

Pre-label your threads. For every email you open, all you’re doing right now is skimming it to judge its level of importance, and—crucially—labeling it. This is the most important rule: don’t wait until later to “file” it. Label it now, and it’ll kind of almost be filed already. (More on the “why” of this in a minute.) Note that you’re not moving this using the very obvious button on the tool bar (i.e., the one shown below). That will remove the thread from your inbox. You want to label it while leaving it in the inbox, for this triage phase.


Instead of clicking “Move,” click on the three-dot “kabob” icon (if you hover over it, a tooltip will tell you it’s the “More” icon) and select “Label as” from the drop-down menu. It’ll show you a list of all your labels, and you can either just scroll down and find the right label, or you can start typing the name of a label and it’ll zip right to it. Click on the label name, if you’re only applying one label, and you’re done.


You won’t need to bother with the kebab menu if you switch to the advanced toolbar. Here’s how to switch:


Then you’ll have a dedicated button to apply a label without moving the thread:


The great thing about labels in Gmail, vs. folders in platforms like Outlook, is that you can apply more than one label to an email thread. That way, it’ll show up in multiple folders. Well, not folders exactly … that’s the confusing thing about labels in Gmail. Yes, they label message threads, but they also act like folders. (Kind of like how light is both a particle and a wave.) When it comes to classifying a thread, you’re applying labels. But labels act like folders when you’re at the main Gmail screen and want to navigate your threads. It’s like your threads can be in two or more folders at once.

Let me give you an example. Several of my friends and family members like beer as much as I do. We send each other Beck’sts, which are beer-themed emails (click here for details). Often one Beck’st begets another, and we have stirring dialogues not just about our beers, but about other topics like being middle-aged, being a parent, etc. (Oddly, a fair bit of my modern correspondence begins with a Beck’st.) Since these threads aren’t just about beer, but also about friends and family, I want to label them accordingly. So I select “Label as” from the drop-down, and check boxes next to all the appropriate labels:


When I’m done, the thread will have all the labels it needs. This means I can hunt for it in my brother B—’s folder, or my friend D—’s folder, etc. If I remember, for example, that D— wrote me about becoming a grandpa, I can search on “grandpa” in his folder whether or not I remember (years from now) that he announced this via a Beck’st.


(Sometimes, you’ll have labeled and archived—i.e., filed—a thread only to receive a new response to it, perhaps from someone on the distro who hadn’t chimed in before. The thread will show up in the Inbox again, at which point you can add the new correspondent’s label to it.)

Remember, you don’t maintain Inbox Zero by taking action on every email right away—you’re just labeling it during triage when this is so easy to do. Triage consists of figuring out whom the email is from, and what it’s about (if you bother to file/label emails by topic). You’re labeling it now, so you never have to revisit it again. Then you can actually get some work done, knowing the most important emails have at least been read and you know what’s waiting for action. Disorganization is distracting!

Again, the pre-labeling is the game-changer … if you try to file emails later, you’ll waste gobs of time re-reading each thread to try to remember what it’s about. Label it the first time you see it, as this will only take seconds. Then, filing later is just a matter of jettisoning it from your inbox.

Flag for follow-up.  If an email will obviously require a reply or some other action, don’t just label it by sender and/or topic—also apply the “_Follow-up” label you created in step #1. Some email is just information, and some needs action. This is the best way to differentiate. Also, by selecting the “_Follow-up” label/folder, you’re basically creating a to-do list of emails requiring action. 


To add to my exhortation to pre-label, the key difference between an email folder (like Outlook uses) and the labels that Gmail uses is that a label doesn’t, by itself, move the email. It just gives it an identity that will persist forever (unless you decide to un-label it). A labeled email is breathtakingly close to being a filed email … all you have to do is get it out of the inbox (by archiving it, or removing the “Inbox” label, which amount to the same thing).

Step #4: Archive messages

Once you’ve read or at least scanned all the emails in your inbox, it’s time to tackle the ones you labeled “_Follow-up.” Since this (probably) won’t be that many threads, you can see them all at once (perhaps by clicking the “_Follow-up” folder, or just eyeballing them in the non-overrun inbox), and decide which are the highest priority. Once they’re dealt with, you can remove the “_Follow-up” label and archive them. If there are emails remaining in your inbox, perhaps a few of them should stay there (to be visible for a while, even if they don’t require action) but others can be archived right away, and all of them eventually. (There’s really no point leaving them in your inbox forever, especially when they’re already labeled.)

There are two ways to archive (i.e., file) email threads: the Archive button, and removing the “Inbox” label. Here’s how you’d archive via the button:


Or, you can click the little “x” on the “Inbox” label; now this message will no longer appear in the inbox.


This second method has the benefit of being applicable across labels. For example, it’s how you’d remove the “_Follow-up” label after action is taken. So when you think your inbox is getting out of hand, you can start at the bottom and work your way up, deciding when it’s time to click the “x” next to the “Inbox” and/or “_Follow-up” labels as appropriate. When you’re done, not only will you be closer to Inbox Zero, but you’ll have made great progress in your filing. If you get behind on that, but realize 20 of your emails are no longer timely, you can just check them all and click Archive. Since they already had labels, they’re now correctly filed, and you didn’t have to reopen them!

A final note on labels: I recommend that, upon sending an email that is not a response (i.e., starting a new thread), you go into your Sent items and slap a label on the message. For example, when I send a Beck’st, I’ll label it, so that even if nobody responds it’ll still show up in my Beck’st folder. And if somebody does respond, his response will already be labeled.

Step #5: Segregate email accounts (optional)

It’s not uncommon to juggle multiple email accounts. Over the past few years, I’ve had my personal email in Outlook; my high school mountain bike coaching emails on a different address, also in Outlook; and my Gmail, which is non-work business email (e.g., LinkedIn stuff). Now I’ve collapsed all three into my Gmail interface, to take advantage of all the features described above.

That said, I still like to have my personal email separate from business, so I created a rule that adds an “Inbox – albertnet account” label on all emails addressed to my personal address, and has these messages skip the main (Gmail) inbox. As with my other inbox, messages are automatically labeled as they come in, and then when I’ve responded (or have decided I don’t need to) I archive them by removing the “Inbox – albertnet account” label.


If your Gmail interface manages multiple addresses, you can set any of your addresses as default, so when you create a message it’ll come from that address, unless you manually change it for that thread. When you reply to a message, it will be sent from whatever account received the email, unless you manually change it for that thread.

Conclusion

I’ll grant you this has been a long, complicated post. It might be pretty daunting to imagine embracing this approach. But to recall last week’s post, an Adobe study of 1,000 white collar Americans found that on average they spent 8.9 hours a day between personal and work email … wouldn’t it be nice to streamline this? Wouldn’t you rather learn one methodology that makes you more efficient, than waste valuable time on into the future on this unavoidable activity? I’m here to tell you that I’m far more efficient and effective since I adopted Inbox Zero … you can be, too.

—~—~—~—~—~—~—~—~—
Email me here. For a complete index of albertnet posts, click here.

Saturday, March 29, 2025

What Is ChatGPT Great At (and Not)?

Introduction

If you are reading this post long after its March 2025 publication date, you might become puzzled at its many failings until you realize, “Oh, wait, this was written back when Dana wrote his own blog posts instead of assigning them to GPT-28-turbo-XL-prime! The lameness is because he did his own very light research instead of basing his observations on the entire body of knowledge of the Internet, and because it’s a plebian human voice instead of an infinitely exalted and witty A.I.!”

I have now blogged 14 times about A.I. and its evolution. My last ChatGPT check-in was about three months ago. The A.I. version hasn’t changed since then; as of this writing it’s still GPT-4-turbo. But what has changed is the range of tasks I’ve experimented with. I now realize my previous posts failed to appreciate some of the things ChatGPT does really well. This post showcases those, while also providing commentary on what the A.I. still does not excel at (and likely never will). You’ll also learn more about why you may have seen an annoying banner about cookies at the top of this blog.


Caveat

This post is mostly about ChatGPT though it touches on Google Gemini. What it doesn’t cover is the “Visual Look Up” feature on Apple’s iOS platform that leverages “Siri Knowledge.” I don’t currently own any Apple products (except an iPod mini in a drawer somewhere) so all I know about Siri is that it did a comically poor job of identifying the breed of my brother’s cat today, based on this snapshot he sent me:


How an A.I. could think any image looks like both a cougar and a wallaby is beyond me. I’m going to assume Apple is so far behind in the arms race that we can simply ignore it for now.

Real-world problem solving with GPT-4-turbo

Until recently I’d only messed around with GPT-4 for the purpose of evaluating it (and, whenever possible, mocking it). But then I hit upon a real-world use case and dove back in. My motivation, which I’m sure you’ll relate to, was: HOT CASH MONEY. Who wouldn’t want this, other than those tedious killjoys who spout aphorisms like “Money is the root of all evil”?

By way of background, I’d noticed that the albertnet page view count had soared in recent months. It took this blog something like 14 years to reach a million page views, but in the last six months alone I’ve now seen almost 1.4 million more. But then, isn’t this how the Internet works? Moore’s Law? Nielsen’s Law? All that compounding magic? In the whole time I’ve had this blog I never even considered monetizing it through ads, but every man has his price. (I’m not sure exactly what mine is, but I reckon I’ll know it when I see it.)

Driven mad with money-lust like one of the guys in “Treasure of the Sierra Madre,” I needed answers—fast. So I asked GPT-4-turbo, “My blog, www.albertnet.us, has received 1.2 page views in the last three months and traffic is increasing. If I turned on Adsense, approximately how much money would I earn per month?”

Yes, “1.2 page views” is a typo, but I didn’t make it here … that’s actually what I asked ChatGPT. It replied, “What the hell do you mean 1.2 page views? How do you have 2/10 of a page view? Did some user barely see the screen, like out of his peripheral vision? Or are you just whacked out on coke and smack and typed your query wrong?”

Okay, you got me … that’s not at all how GPT replied, though honestly I think that would be the better answer. What it actually provided was a lengthy essay, full of data points and computations, answering this useless question. My favorite part of the response was, “Number of Page Views (Traffic) – You’ve mentioned you have 1.2 page views in the last three months, which is approximately 400 page views per month (assuming the traffic is consistent).”

Huh? How do you get 400 by dividing 1.2 by 3? I guess the chatbot arbitrarily assumed the figure I provided was in thousands. That’s a pretty big logical leap, and GPT didn’t document the fact of this assumption. It then proceeded to run a bunch of calculations based on 1,200 views, the punch line being that I could make about $2/month. So the more succinct answer would have been, “Dream on, bloggy-boy.”

When I corrected my original query to 1.2 million page views, GPT-4-turbo reran its calculations and informed me that I might expect to earn something in the neighborhood of $2,000/month in passive income. Now we’re talking! It did suggest a number of caveats, such as how my  results might be affected by the geographical location of my readers, the positioning and type of ads, ad targeting, how well ads match my content, user engagement, and so on. I asked it a bunch more questions specific to Adsense, whether GPT’s estimated click-thru rate (CTR) assumption is realistic, etc. While it provided all kinds of useful info, it missed one very important rule of thumb: if something seems too good to be true, it probably is.

I mean, come on … albertnet is a blog about nothing. I’m not going on political rants that cause trolls to leave endless acerbic comments and then forward my post to 90 friends with an exasperated preface like “can you believe this shit?!?!!?!” If all it took to create a nice passive income stream was to blog every single week for 15 years straight so that after more than 3,500 hours of writing you’ve amassed over 750 posts, comprising over 2 million (juicy, searchable) words, then everybody would be getting into this business, obviously. If quality, rather than nudity, attracted people’s attention, every liberal arts grad on the planet would be driving a Benz. (Well, except for me, because regardless of my income—actual, theoretical, or pipe-dreamed—I will always be the world’s cheapest man driving a used Volvo.)

I feel really bad for the earnest blogger who sees all this traffic growth, does a basic ChatGPT query, thinks he can trust the response, and makes a lot of effort adding ads to his blog to harness this new fountain of riches. I hope nobody is that naïve. Since I’m not, my first impulse was to get a second opinion. So I put my query to Google Gemini, without the typo this time, and it gave me a very similar answer: I could make right around $2K a month, just for setting up Adsense and then sitting on my ass!

This seems like the kind of claim I’d get from a spammer. In fact, I’m going to check my spam right now to look for this kind of hoax. Hmm, that’s odd. Though 22 of my 50 spam messages are from recruiters, none is this specific. I do, however, have a message from “Super-size” titled, “Now imagine each night, having 5 or 10 concubines around you, each one craving your masculine essence in them. #632352.” This subject line is interspersed with various emoji including, oddly enough, an avocado. Is avocado a concubine’s favorite food? Let me ask ChatGPT. Okay, it replied in the negative, pointing out that concubines were prominent “in ancient or medieval times, when avocados were not available in their regions.” I think the innuendo of “in their regions” was accidental. (And now I’ve realized how long and pointless a digression this has been. I’m tempted to apologize, except this might end up being my favorite paragraph of this entire post.)

The caveat GPT-4-turbo should have provided is, “My calculated revenue assumes the page views are from actual readers, not bots.” The idea of bots grossly polluting my page view stats was my natural assumption, but not one GPT addressed. I think this is an important object lesson: it doesn’t matter how useful A.I.’s responses are if you don’t know to ask the right question. Perhaps A.I. will advance to the point that it would not only sanity-check my page view stats, but would be the one to keep an eye on my blog traffic to watch out for moneymaking opportunities in my stead. (If and only if it knew albertnet to be an amazing viral sensation for reals.)

Where ChatGPT shines

After feeding me all that false hope, ChatGPT asked if I’d like help setting up Adsense on my blog. I decided instead to enlist its support vetting the quality of the page view stats. Having drilled down a bit on my own (which Blogger doesn’t make super easy, by the way), I discovered that page views from France were 12% of my total over the last six months, 14% over the last three months, and 39% over the last 30 days. I shared this with the chatbot and queried, “Is there A.I.-driven or bot type traffic that would originate in France that could artificially inflate the metrics around my readership?” (I now regret the specificity of this, as I was clearly “leading the witness.”)

ChatGPT responded with a clear and detailed essay about the probable causes, including “Bot Traffic (Most Likely Explanation).” It filled me in about scrapers and SEO crawlers and A.I. training bots, and suggested I use Google Analytics to investigate further. This ended up being an excellent suggestion and led to my most engaged use of GPT ever.

First I quizzed the chatbot about whether Google Analytics has a free version (it does), whether I’m giving up any privacy (basically not), etc. Then I set up Google Analytics (aka GA4), which was pretty straightforward, except I noticed in the Terms of Service that I’m expected to comply with GDPR (the EU General Data Protection Regulation) when gathering this detailed user data. I happen to know what GDPR is, so I asked GPT all about it, in terms of what I’m really expected to do to comply. It turns out that compliance is a royal pain in the arse (my words, not ChatGPT’s). Since I do get readers from Europe (whether it’s 39% of all traffic or not), I need to have a publicly posted privacy policy and a banner announcing my use of cookies (which is how GA4 can track usage). I almost abandoned the whole project, on the mere assumption that my page view stats are so obviously bogus I don’t need to expend all this effort verifying it, but then … what if these traffic stats aren’t bogus? What if I really could just sit back and rake in money? Isn’t it worth spending some time and effort investigating the possibility?

I asked GPT for some nice boilerplate text for the privacy policy, and though much if its response was unusable, some of it was good, and if nothing else this rough draft prevented writer’s block and paved the way for my policy, which you can read here and which I’ve linked to in my blog’s footer. (I’ll need to revise that policy pretty radically, as you shall see, but it’s probably a good thing to have anyway.) The harder task was creating that cookie banner, since it’s not just a static digital placard but an actual functional utility that captures a user’s cookie preferences and turns them into policies that impact the behavior of GA4. That is no small feat, and probably nothing I’d tackle on my own.

Before I pressed on I had a long, rambling discussion with ChatGPT about how to get everything going. I learned a ton, including info about the following:

  • The various metrics I’d be able to get from GA4 (i.e., is this truly worth it?)
  • What free utilities exist that could be leveraged for setting up the cookie banner and how to choose the best one
  • Approximately how long it would take to set up the banner based on the chosen utility
  • How to create a Google Tag and write an HTML script for my blog’s template that would invoke it
  • How to create the HTML script that would invoke the banner
  • How to pause GA4 if I have trouble invoking the banner (spoiler: I did)
  • How to back up my blog’s HTML template before messing with it (though GPT didn’t suggest this, which again illustrates the difference between a) being able to describe how to do something, and b) taking the initiative to do that thing)
  • How to debug my script and figure out why it’s not working

These weren’t just general instructions it provided that I’d have to suss out on my own. GPT4-turbo provided sample script text that actually worked (eventually). Here’s an example of its suggested script:

 <head>
    <!-- Your other head tags -->
    <script async src="https://www.googletagmanager.com/gtag/js?id=YOUR_TRACKING_ID"></script>
    <script>
        window.dataLayer = window.dataLayer || [];
        function gtag(){dataLayer.push(arguments);}
        gtag('js', new Date());
        gtag('config', 'YOUR_TRACKING_ID');
    </script>
</head>

To reiterate, I am not a seasoned HTML jockey and would have struggled with this syntax, to say the least, were it not for the chatbot’s help. And even if I had originally built my blog from scratch (i.e., coding all the HTML myself without a Blogger template), I’d have been rusty enough now that I’d have been wise to leverage GPT for this task anyway. As I went through all this scripting, it dawned on me why a lot of people are worried about A.I. taking our jobs. This is just basic HTML but GPT was hugely helpful; If I were a full-on programmer and suddenly became (say) twice as efficient because I was grabbing blobs of basic code for simple operations instead of creating them from scratch every time, I’d naturally consider how all my colleagues have also become twice as efficient, and I’d start to worry about my employer realizing they could make do with half their programming staff. Scary stuff.


The upshot

Once GA4 was up and running, ChatGPT was very helpful in walking me through understanding all its metrics, not all of which were very intuitive. In a perfect world, I’d have discovered an average engagement time of ten minutes per post, indicating actual human readers. In reality, I learned that—guess what?—average engagement time is under three minutes, and GA4 shows way fewer page views than the Blogger stats. In other words, Blogger most likely is reporting on a lot of bogus visits from bots. If ChatGPT were like a really cool know-it-all big brother, it would have said, in response to my very first inquiry about the growth in traffic, “Dude, don’t trust the Blogger stats. They’re useless.” I wouldn’t have had to do all this research.


After asking ChatGPT a bunch of questions related to the delta in traffic as reported by each platform, I had it recalculate the ad revenue I might hope to get from my blog in light of the better data. It estimated about $0.40/month, and then went on to suggest a whole bunch of ways I could improve user engagement. I then led it on a thought exercise about how much of the real traffic is based on old posts, since a) albertnet posts are not timely, and b) the longer a post is up, the more views it will gradually accrue. GPT agreed with my assessment: that any improvements going forward would only marginally increase traffic and engagement, as they’d only apply to new posts.

Next I asked GPT for its best guess as to how much improvement I could achieve if I implemented all its suggestions … double? triple? tenfold? It replied that “doubling or tripling engagement is probably a reasonable and achievable short-term goal.” (This doesn’t impress me as intelligent … I think the chatbot is just highly suggestible.) I went on to ask, “Do you think it’s worth implementing these strategies with the goal of monetizing my blog through ad revenue?” It provided another long essay that concluded, “Yes, but with realistic expectations … treat ad revenue as a potential bonus or passive income stream, and consider other monetization strategies as well (affiliate marketing, sponsored content, or selling your own products/services).”

And this is where, I think, A.I. is still falling short. It’s great at helping the user with nuts-and-bolts technical tasks, especially those of the type performed countless times by other users (for example, inserting scripts to invoke GA4 and/or a cookie banner). But synthesizing a lot of information and drawing the best conclusion is still beyond its ability. By its own reckoning, my real, human traffic would bring in $0.40/month, and by implementing all its suggestions I might triple user engagement … but it failed to grasp that earning a mere $1.20/month isn’t worth any amount of effort. A.I. was ultimately unable to suggest the right strategy for me to take regarding my blog.

One last thing…

The sad part of this tale of exploration is how useless all my effort has ended up being. If I had any reason to suspect that, after fifteen years, my blog would suddenly go viral, I could keep an eye on Google Analytics to savor my success … but I don’t. I might as well be a frog looking in the mirror every morning to see if I’ve miraculously become a prince. Not that I actually care, mind you … as described here, I’m happy to be a humble frog croaking out my unsung song. But there’s no point bothering new readers with that cookie banner, especially since—as I recently discovered—the damn thing doesn’t even work.

This is another thing ChatGPT overlooked … it failed to suggest that I actually put that banner through its paces, which I’ve now done. Through basic experimentation I’ve discovered that it doesn’t end up mattering what preferences the user selects … his session is duly recorded in GA4. (Only if a user uses a Private or Incognito window are his sessions ignored … even if he allows all cookies.) Meanwhile, site visits from mobile users are not counted at all by GA4, I have just determined. That may be because I never got the banner to work on mobile, and Google can tell this and wants to observe the GDPR rules.

So now I have to go shut the whole thing down, to maintain GDPR compliance. The entire exercise was (to borrow from Shakespeare) “the expense of spirit in a waste of shame.” (Shakespeare was writing about lust, but I think his sonnet also covers the lust for money quite nicely.)

Check back in a week or so and (with ChatGPT’s help) I’ll have backed out the GA4 scripting and gone back to an unstudied, non-monetized blog with no banner. My privacy and cookie policy will have had a makeover as well. I’m no richer for this little exercise, but a bit wiser, and now you are too.

Other albertnet posts on A.I.

—~—~—~—~—~—~—~—~—
Email me here. For a complete index of albertnet posts, click here.

Sunday, March 31, 2019

Responding to Reader Comments


Introduction

As described here, my only goal for this blog is to post four times a month. This morning, March 31 with the pressure on, I had no ideas. In desperation, I searched the Internet for prompts and found “101 Blog Content Ideas To Make Your Blog Post ‘HOT.’” One of the prompts caught my eye: responding to reader comments. That’s the subject of this post.

I don’t have time to reply to all reader comments, of course, but in the spirit of Frequently Asked Questions I’ve chosen the most representative ones. Read these and you’ll feel like you and I are having a cordial face-to-face conversation!

But first – the non-starter blog prompts

Before I get into the reader comments, I want to showcase a few of the “101 Blog Content Ideas” that fell flat. Consider idea #49, “Show off your personal stuff; car(s), house, accessories” to create “a motivational blog post for someone who doesn’t own those kinds of things.” So I should make my readers envious, so that they’ll knuckle down and go make enough money for their own 2006 Volvo wagon or wooden-handled rubber spatula set? I couldn’t really get behind this idea. After all, in my very first blog post I recounted how the first blog I ever saw, in the late ‘90s, “was the web equivalent of a grade school kid shyly showing a friend around his house, showcasing his room and his toys. It seemed sort of sad, kind of a ‘this is my bike, do you like it?’ thing. So I was aware, very early on, of the risk of self-indulgence that a blog presents.”

Even less promising was prompt #51, “Create a blog post about your bad habits,” which said, “Smoking, alcohol, drugs, yes they could be blog ideas too! Tell them something shocking!” In general, not just with my blog but in life, I try to avoid incriminating myself in writing. Meanwhile, my bad habits are not exactly shocking. Sometimes I go to bed without flossing, or get crazy and have a second beer.

Continuing through the “Content Ideas” post, I hit pay dirt with #54, “Answer to every single comment personally.” I’m told this will make my “readers feel special and honored” and that through this kindness I can “get new friends, co-authors or even business partners.” Now, the obvious way to answer comments would be to email the commenters directly (where possible) or post a response directly below their comment, in context, as I’ve done here:

The problem is, if I answered below each comment, I wouldn’t get a new post out of it, and you wouldn’t get to see everything lovingly curated and distilled into the Comment Response Platinum Collection you see here. So I’ll just have to hope those commenters find this post.

Comments on “Nash Bridges Towed My Car

Jeson David: “Incredible articles and extraordinary format. Your blog entry merits the greater part of the positive criticism it's been getting.” elia and ponto michigan auto accident lawyer

Dear Jeson: I’m really glad you like my post, and thanks for saying so. However, I feel a bit awkward being told that my blog format is extraordinary. To be honest, when I was first starting out as a blogger I went with the stock template that Blogger provided and, other than adding an image-based masthead, I never got around to changing a single thing. In other words, my blog format is about as generic as you can get. You should be praising Blogger! Oh, and one more thing: on the topic of the link you helpfully included, to the law firm of Elia and Ponto, I should probably be completely transparent here and let you know that my blog doesn’t necessary reach very many readers in the Detroit area where Elia and Ponto practice. I’ve never catered to a regional audience; in fact, over 60% of my readers are overseas, with some 20% hailing from Russia and the Ukraine. I hope using my blog to promote Elia and Ponto hasn’t been a letdown for you.

Lizza Kim: “If somebody wants expert take on the main topic of blogging next I advise him/her to go to this site, continue the fussy job.” car locksmith Dallas

Dear Lizza: I think with the phrase “fussy job” you have captured the very essence of my blog, in a concise and eloquent way. If I didn’t rely on the momentum that the search term “albertnet” has built up over the last decade, I might strongly consider changing the name of this blog to “Fussy Job.” In fact, I’ve just confirmed that the domain name fussyjob.com is available. Since I’m too busy to do any rebranding at this time, I give you my blessing to take fussyjob.com for yourself! Perhaps this would be a good name for your locksmith service in Dallas, and (frankly) a better way to promote it than linking to this blog.

Genious Person: “Pretty good post. I have just stumbled upon your blog and enjoyed reading your blog posts very much. I am looking for new posts to get more precious info. Big thanks for the useful info.” Mobile diesel mechanic tampa

Dear Genious: I have to be honest with you, I’m feeling a little hurt that you only found my towed car post to be “pretty good.” Since we’re being candid with each other in the realm of self worth, I think my post is nothing short of brilliant. To have it so tepidly acclaimed by a self-possessed genius who spells “genius” wrong kind of stings. (Yeah, I know it’s possible you’re being ironic with your spelling, but that doesn’t really give you the right to damn my work with faint praise.)

Mia Simth: “Our credit repair services work to fix past credit mistakes and verify credit report accuracy. Talk to a credit repair expert today!”  Hungary Grand Prix

Dear Mia: Thanks for writing in. It’s hard to make my reply very personal because in your comment you haven’t really opened up about your feelings on my blog post, or anything else, though I guess I appreciate your helpful attitude. It just so happens that my credit reports are a mess due to a data breach that compromised my SSN, but I didn’t get very far following your link. It took me to a website dedicated to Formula 1 car racing coverage. (At least this ties in nicely with my post!) Now, because I like to get to know my readers, I’d like to ask a kind of personal question, if you don’t mind: are you married, by any chance, to Max Simth, who posted a comment on my Bike Helmets post? The reason I ask is that “Simth” is kind of an odd name. I wonder if there’s some charming story about a bureaucratic goof at Ellis Island when some ancestor of yours or Max’s first came to this country. Please do share!

Comments on Bike Helmets

Max Simth: “I recently came across your blog and have been reading along. I thought I would leave my first comment. I don't know what to say except that I have enjoyed reading. Nice blog. I will keep visiting this blog very often.” Best Mountain Bikes Under 1000

Dear Max: If I guessed wrong about you and Mia (see above), perhaps this is a great way for the two of you to meet! What a nice pair of coincidences: you both have this strange last name, and you both enjoy reading albertnet! And there’s yet another coincidence: even though my Bike Helmet post is over eight years old, and my Nash Bridges Towed My Car post is more than six years old, you and Mia both commented just last month, within a week of each other! When the coincidences pile up like this, it’s hard not to suspect that Fate is at work here. It’s time you and Mia met! Please let me know if you’d like me to make an introduction.

Chaddi Gang: “Please continue this great work and I look forward to more of your awesome blog posts.” eliaandponto.com

Dear Chaddi: Glad you love my blog! And speaking of amazing coincidences, do you know Jeson David? Like you, he recommended the Elia & Ponto law firm via these pages. It’s tempting to think you guys are neighbors in the Detroit area, but I note that your blog, Chaddi Gang, is written in Urdu. Maybe it’s just a coincidence you both like Elia & Ponto and albertnet? Anyway, have a great day!

CompanionLink: I as of late ran over your website and have been perusing along. I thought I would leave my first remark. I don't realize what to say with the exception of that I have delighted in perusing. Decent blog. I will continue going to this web journal regularly.” google sync outlook

Dear CompanionLink: Thanks for the kind words, but I have to ask, what the hell kind of name is “CompanionLink”? And where do you get off committing blatant plagiarism on my blog? The semantic similarity of your comment to Max’s, above, cannot be written off as coincidence. I can’t help but wonder if your text is just boilerplate, as a way to hijack my blog to promote your tool for syncing Google with Outlook. Even that doesn’t seem original, since another commenter on this post, John Butler, has his own blog called “outlook android sync.” All this brings to mind an interesting question: if you and John Butler were to engage in a swimming race from Cuba to Iceland, who would drown first? (Answer: Hard to say, but it’s definitely worth trying.)

Conclusion

Okay Jeson, Lizza, Genious, Mia, Max, et al … I hope you feel special and honored based on my heartfelt responses to your comments. Dare I dream that you and I might become friends, or perhaps co-author some blog posts or comments together? Shoot, maybe we can even become business partners, or those of you with connections to Elia & Ponto can put in a good word for me! I’m so grateful to all of you for your loving attention to my blog. All of you except CompanionLink, that is … CL, you can just get lost, and don’t ever comment on my blog again.

--~--~--~--~--~--~--~---~--
For a complete index of albertnet posts, click here.

Tuesday, February 21, 2017

How to Survive a Phishing Attack


Introduction

This post describes a super easy way to avoid falling prey to phishing and spear-phishing.  While I’m at it I’ll explain about ransomware and botnets so you can sound impressive during fishing  trips and/or ladies’ luncheons.  I’ll even provide a real-life example of a recent situation requiring me to apply my method.

Couple quick notes:  1) You cannot get a virus by reading this blog or clicking on any link within it, ever; and 2) I actually did my homework on this post, and ran my anti-phishing technique past the Chief Information Security Officer of a giant corporation, who gave it her blessing.

Some terminology

In a previous post, I covered plain old spam, which is simply unsolicited e-mail that doesn’t even pretend to be personal.  For example, the subject line is “Enhance your male member!”  The sender hasn’t targeted you based on knowing anything about your, uh, membership … from the sender’s perspective, every man should enhance his mail member!  (And if a woman receives this message, no harm done—she can just forward it to the man in her life.)  Spam is basically electronic junk mail.

Phishing is an attack on your computer which relies on you clicking on an embedded link or opening an attachment, which either loads a virus directly on your computer or takes you to a bogus website that attempts to lure you into disclosing personal information.  Phishing messages are usually blasted out like spam, though the sender will often pretend to be a company you do business with, such as your bank.  There’s usually a sense of urgency, something like “Account locked – update password!” (i.e., “Tell us your old password, sucker!”).

Spear-phishing is more targeted and requires the sender to find out stuff about you in advance (e.g., thru social media) to make the e-mail look more realistic.  Is it important to differentiate between regular phishing and spear phishing?  Probably not.  I think the latter term was contrived mainly to help security experts sound cool.

Ransomware is a computer virus that encrypts your computer’s entire hard drive, so that only the fraudster can decrypt it, which he or she will only do upon being paid a ransom.  (A criminal with no hacking skills can actually buy “exploit kits” from the fraudsters to carry out his own attacks.)  Ransomware is one of the biggest reasons to be careful with your e-mail.

You know how vampires and zombies can make you one of their own by biting you?  Similarly, computer viruses can take over your computer and use it in a separate attack.  Such an infected computer is called a bot, and when hundreds or thousands of them are herded together to mount a large-scale attack, you’ve got a botnet.  (Think of it as an online zombie apocalypse.)  Note that as more devices—not just computers and phones but thermostats, security cameras, DVRs, etc.—are connected to the Internet, they become targets for botnet attacks as well.  In fact, they’re ideal candidates because they’re often cheaply made, poorly designed, and lack security.  They’re like really dumb zombies.

How to survive phishing attacks

My phishing survival technique employs a single simple rule:  if an e-mail appears to be from any bank (even yours), or any other business with which you have an account (e.g., a utility), automatically assume it is a phishing attempt and just delete the e-mail.  You can apply this rule even before opening the message.  It’s that simple.  The decision tree looks like this:


 There is a very small risk, with such a broad rule, that you’ll miss a legitimate e-mail from your bank, but a) it’s better to be safe, and b) remember, your bank knows how to reach you!  They have your money and are very resourceful about getting their business done.  In general, they prefer to phone you or send postal mail because they hate phishing as much as you do and have no interest in training you to fall prey.

The one blanket exception would be account statements.  If you signed up for electronic statements and receive them on a predictable schedule every month, and these statements provide account information without asking you to do anything, you’re probably fine.

As for these “Oh, no, you need to do something!” messages, keep in mind that if there’s really something wrong with your account—like your card number has been compromised, for example—that’s ultimately the bank’s problem.  They are on the hook for the cost of the fraud, so let them do the heavy lifting.  If they can’t be bothered to pick up the phone or mail you a postcard, they can face the consequences.  (For what it’s worth, my card number has been compromised a number of times, and in no case did I get an e-mail.)

All of this being said, I recently decided to amend my very simple rule.  If you’re interested in my amendment, read on.  If you’re already bored and/or have no problem with the simple rule outlined above, you’re done—goodbye!  Go get on with your life!

Sometimes it’s not quite that simple

What if you made a purchase that falls well outside your normal pattern of behavior?  For example, you just made a purchase for $2500, and the largest purchase you’ve ever made previously with this card was $1000?  Or what if you normally shop at J. Crew and Brooks Brothers, and one day get a ghetto impulse and buy something at J.C. Penney?  If you do something outside of your norm and then immediately receive an e-mail purporting to be from your bank, you might consider evaluating it further.

I got an e-mail recently from slcfraud@aexp.com titled “Your Corporate Card.”  This “From” address and subject line didn’t look obviously wrong.  The capitalization in the subject line, “Your Corporate Card,” was a bit odd, but not obviously wrong (e.g., it wasn’t “Security fraud alerted corporate card!!” or “Account info updating needs!” or some other butchered English).  The return address, slcfraud@aexp.com, struck me as feasible, though these things can be spoofed.  Only because I half-expected Amex to choke on a recent transaction, I decided to open the e-mail:


Note how it’s in plain text with no logos or anything.  That might seem a bit odd, but actually it’s completely okay.  Fancy logos and formatting are methods hackers use to make their e-mails look legit.  Don’t be fooled!  It’s far easier to manipulate graphics and logos and such than to say the right things, in perfect English, in an e-mail. 

This brings us to my analysis of the grammar etc. in the e-mail itself.  There is a stray bracket in the message (toward the end:  “Corporate Payment Services}”).  That’s a bit spotty, and such things should be considered suspicious.  There’s also a dangling participle:  “In order to assist you in a timely manner, please call us at the numbers provided rather than responding to this message.”  (The first clause refers to them—i.e., they would be assisting you—but the second clause refers to you; i.e., here’s what you should do.)  Certainly this is bad grammar, but it’s the kind of error a native speaker would make—even an Amex employee.  It’s not the kind of error made by dastardly foreign hackers who hate America.  Even still, as a general rule I would normally delete this e-mail on the basis of this, or any, grammatical error.  If this makes extra work for your bank, shame on them for filling corporate communications positions with people who can’t write a decent sentence.

All of this aside, there was one fundamental characteristic of this e-mail that caused me to take it seriously:  it didn’t ask me to click on anything, and it suggested I call the toll-free number on the back of my Amex card.  That is exactly the kind of action a bank would legitimately ask you to take, and dialing this number is an inarguably safe thing to do.  (I cannot imagine how a hacker could print a fraudulent toll-free number on the back of my card.  He would need physical access to my wallet, in which case he would presumably have no need to do anything online.)

I did note that the number provided in the e-mail didn’t match the number on my card, but it’s not uncommon for a financial entity to have multiple toll-free numbers.   You should never dial a toll-free number provided in an e-mail.  While that’s not as obviously dangerous as clicking on a link in an e-mail, it could still get you in trouble.  What if you reach a voice-response system that sounds authentic, and asks you to enter your card number?  That would be an easy way for a fraudster to hack your account.  Always go with the phone number printed on your statement or card.

Based on the e-mail above I called Amex, and sure enough, they had locked out my card because my last transaction looked suspicious to them.  During the call they authenticated me based on my caller ID, and accurately described the suspicious transaction.  I told them it was legit, they unfroze my account, and all is well. 

So:  does this mean opening the e-mail was a good idea?  No, not really.  If I had my life to live over, I’d probably have deleted the e-mail and just called Amex.  The slightly more complicated decision tree is this:


How common is all this, anyway?

Is this much ado about nothing?  Actually, I think this stuff is important because phishing is so rampant.  Looking in my junk mail (i.e., messages my ISP determined were fraudulent), I see the following: 
  • 2 messages from Apple on 2/11 saying “Your account is locked”
  • 3 messages from my regular bank between 2/3 and 2/9 saying “Action Required”
  • 1 message from my Visa card issuer on 12/21 saying “Notification ID: 2591912…”
  • 1 message from Apple on 11/07 saying “Apple Inc | Security notice”
  • 1 message from PayPal on 10/27 saying “Your PayPal account ha…”
Along with this, I see messages seeming to be from friends of mine that somehow triggered my ISP’s junk mail filter.  What if my ISP hadn’t filtered these?

Address book phishing

I’m not aware that the phrase “address book phishing” has any widespread meaning, but I’m talking about viruses etc. that replicate by forwarding themselves to everybody in the victim’s e-mail address book.  If your ISP lets these through, it can be tricky spotting them.  Here are a few ways.

Message is unexpected – Often I’ll get an e-mail from somebody I know, but who very seldom e-mails me.  For example, my friend’s wife e-mails me every so often and has done so for years.  Why would she?  Either her PC’s got a virus, or she’s trying to start an affair.  Either way, my reaction is the same:  delete that message!  If she really needs to contact me she’ll surely find another way.

Here’s a true story:  my wife e-mailed my brother several times to ask about some bike thing she wanted to buy me for my birthday.  My brother didn’t respond, either because he suspected phishing, or was just really behind on e-mail.  So the next time my brother called me on the phone, my wife intercepted the call and, before fetching me, said to my brother in a low voice, “Call me!”  He was totally perplexed, and she eventually had to call him herself.

Subject line is missing or suspicious – Of the four bogus messages I received recently purporting to be from friends, three have no subject line at all and the fourth has the subject line “RE: ” with nothing else.  The lack of a subject line is usually a giveaway unless you have really lazy friends.  Other suspicious subject lines would be the sender’s name, your name, or something insanely generic like “Hello.”  (If I e-mail a friend just to say hi, I’ll say something a bit more specific, perhaps involving an inside joke.)

Text of message doesn’t read right – Say you’re fooled into opening such an e-mail and now have text to look at.  The hardest thing for fraudsters to get right is grammar (either because they’re foreigners or because they’re stupid).  If your friends use terrible grammar and spelling, I recommend you find some better friends.  Otherwise, be very careful with messages that don’t read right.

If, for whatever reason, you decide not to open an e-mail that appears to be from a friend, it never hurts to create a new message, address it to the friend, give it a subject like “Suspicious e-mail…” and ask if he or she e-mailed you recently.  You can leave the original message in your Inbox while awaiting a response (unless you’re afraid you’ll open it by accident, like if your software is set up to automatically move from one message to the next).

So, here’s a more complete flowchart of how to handle messages:


Will this approach keep me safe?

Actually, avoiding phishing scams is not enough to keep you safe.  We’re probably all eventually doomed, because data breaches of giant databases have become so common.  For example, an insurance company I do business with was hacked awhile back, and had over 70 million customer profiles compromised, including mine.  So, if you screw up and disclose personal information and/or help a virus to spread, you shouldn’t feel too bad. 

Still, I guess it’s nice to have a methodology for not being a complete sucker, and that’s what I’ve endeavored to provide.

--~--~--~--~--~--~--~---~--
For a complete index of albertnet posts, click here.