I’ve Read My Last Free Article for the Month

Photo by Roman Kraft on Unsplash

Could big media profit from paying its readers?

You know the moment I’m talking about. The one where you read that irresistibly juicy headline and have no choice but to click. But when you do, you get the message.

You have no free articles left this month.

Great. Well, I guess my world will have to stay right-side-up for now.

I get it, though. News providers like the New York Times and Washington Post deserve to get paid for their product, and the paywall solves that. To what end, though?

Some people will avoid those sources. I’m one of them. I’m very choosy about which headlines I click because I know I’ve only got so many clicks. I ask myself, Do I really want to spend a free article on this topic?

And yea, I could subscribe. It’s just a couple of bucks, right? I don’t want all those subscriptions, though. I only care about a few articles from each of these sites per month, and other outlets cover the stories themselves.

The relationship between news providers and readers is symbiotic. These sites cannot exist without revenue, and readers are revenue, whether directly through subscription fees or indirectly through advertising. Given the interdependency, why can’t we find an honest, mutually-beneficial solution?

I believe one already exists in the form of a cryptocurrency: the Basic Attention Token (BAT).


Meet Brave

Brave is a browser that focuses on privacy. It has nice features like built-in ad blockers and protection against tracking and data collection. Given that ad prevention is one of its key selling points, it feels somewhat ironic that another feature it offers is Brave Rewards, which lets you opt to receive more ads.

Two things are really cool about Brave Rewards. First, it’s entirely optional. If you don’t want extra ads, no problem — don’t enable ’em. But, if you do turn them on, you get a cut of the ad revenue.

This makes a lot of sense, doesn’t it? Companies buy ads so consumers will see them. Consumers don’t really have an incentive to view ads, though, and will do their best to ignore, block, or avoid them.

Ads that people pay attention to are more valuable — look at the Super Bowl. So, why not take a small percentage of that ad revenue and pay it to people who are eager and willing to participate?

That’s Brave Rewards in a nutshell. You earn BAT by viewing ads. The ads are pretty subtle, too. Just a small OS notification that you can dismiss if not interested. You can make several tokens a month using the browser, and the tokens are currently worth about $0.50 each. So, a couple of bucks.


It’s a win-win-win

So, here’s a novel idea: apply the same opt-in, profit-sharing strategy to news providers.

Think about it. A large provider could give its users two account types. There could be a free plan where readers earn BAT by reading articles that contain paid advertisements. The reader has an incentive to view the ads because it makes them money. The amount earned would be proportional to the amount paid by advertisers, and advertisers would be willing to spend a lot because of the huge audience exposure.

Not everybody likes ads, though, so there could also continue to be a paid plan that removes them. And what if this could be delivered in BAT — the same BAT earned using the Brave Browser?

It feels like the perfect win-win for these media giants. If I could earn BAT by reading articles at the NY Times or Washington Post, they’d quickly become my most-visited go-to sources instead of the paywall landmines that I try to avoid today.

Traffic would be way up. Ad revenue would be way up. Subscriptions would be way up. It could catapult them to the forefront of relevancy and influence.

And it all starts with the simple idea of paying people for their attention instead of treating them as a revenue stream.


This article was originally published in ILLUMINATE on February 17, 2021.

How to Connect Azure Data Factory to an Azure SQL Database Using a Private Endpoint

Photo by Hafidh Satyanto on Unsplash

A step-by-step tutorial

Azure Data Factory (ADF) is great for extracting data from multiple sources, the most obvious of which may be Azure SQL. However, Azure SQL has a security option to deny public network access, which, if enabled, will prevent ADF from connecting without extra steps.

In this article, we’ll look at the steps required to set up a private endpoint and use it to connect to an Azure SQL database from Azure Data Factory.


‘Deny public network access’ setting in Azure SQL

Before we get started, let’s review which setting I’m referring to in Azure SQL. It’s a toggle named deny public network access found under Security > Firewalls and virtual networks in the Azure portal.

Source: author

When this setting is enabled, Azure Data Factory won’t connect without a private endpoint. You can see there’s even a link to create a private endpoint below the toggle control, but don’t use this now — we’ll create the request from Azure Data Factory in a minute.


ADF integration runtime

To use private endpoints in Azure Data Factory, you must use an integration runtime with virtual network configuration enabled. The setting cannot be changed, so you’ll need to create a new runtime if you don’t have one with it enabled already.

Source: author
Source: author

Now that you have an integration runtime with virtual network configuration enabled, you’re ready to create a new linked service.


ADF linked service

While still in Azure Data Factory, click to create a new linked service.

Source: author

When you select an integration runtime with virtual network configuration enabled, a managed private endpoint setting will appear in the account selection method section. The setting is read-only and will populate as you enter subscription and server details. If a managed private endpoint is already available — you’re good to go!

If a managed private endpoint isn’t available, click the create new link button to start the process.

Source: author

When you save the new managed private endpoint in Azure Data Factory, it will be provisioned in Azure but remain in a Pending status until approved.


Azure private endpoint

Now we need to hop back to Azure to approve the new private endpoint. Find your Azure SQL database in the Azure portal, and browse to Security > Private endpoint connections.

You should see the connection created by Azure Data Factory with the status Pending. Select its checkbox and click the Approve button.

Source: author

The status will change to Approved in the Azure portal. It takes a minute or two for the status to make its way to Azure Data Factory, but it will show as Approved there after a moment, too.

Source: author

Once it shows as approved, you’re ready to go. You can enter the rest of your connection info and connect!


Recap

Most of the settings I’ve shown can be accessed in several different ways and performed in different orders. For example, you could create the private endpoint from the Azure portal instead of through Azure Data Factory. You can obviously experiment and find the process that works for you.

The important pieces are the following:

  1. Azure Data Factory has an integration runtime with virtual network configuration enabled.
  2. Azure SQL has an approved private endpoint connection.
  3. Azure Data Factory has a linked service using the integration runtime and private endpoint connection.

That’s it — now go have fun with your new connection!


This article was originally published in Towards Data Science on January 20, 2021.


Interested in learning more about Azure Data Factory? Give these books a try. Note that I use affiliate links when linking to products on Amazon.

Light Up Your Razer Peripherals In Linux Mint

Photo by Emmanuel on Unsplash

A tutorial for installing OpenRazer and Polychromatic

I’ve been slowly building a Linux Mint desk setup in the basement, and this weekend I added an old Razer BlackWidow Lite keyboard and Naga Hex mouse to the mix. As expected, they were plug & play functional out of the box, but the keyboard didn’t have its backlighting enabled. This will simply not do.

Luckily, Razer has pretty good support for Linux with its OpenRazer project.

Installing is pretty simple, but lighting still wasn’t enabled. It took a few minutes of research to figure out that I also needed to install Polychromatic.

So it’s really a 3-step process but still very easy. Here’s how to do it!

Step 1 – Install OpenRazer

Open a terminal and run the following commands:

sudo apt install software-properties-gtk
sudo add-apt-repository ppa:openrazer/stable
sudo apt update
sudo apt install openrazer-meta

Step 2 – Install Polychromatic

Open a terminal and run the following commands:

sudo add-apt-repository ppa:polychromatic/stable
sudo apt update
sudo apt install polychromatic

Step 3 – Configure Polychromatic

Now you can run Polychromatic Controller to enable the lighting effects. I found and launched it by typing “poly” in the system menu.

Source: author

Polychromatic detected both of my peripherals and allowed me to configure them just as I expected.

Source: author
Source: author

Once I selected the static lighting effect and turned up the brightness, the keyboard lit up. Very exciting. Now everything’s working exactly how I hoped and expected!

How To Run Websites As If They Were Apps in Linux Mint

Photo by Carlos Lindner on Unsplash

A WebApp Manager tutorial

I’ve been using Linux Mint for just a couple of weeks, and I’ve been very impressed with it. One of my grumbles from previous forays into Linux has been, why is it so hard to add a shortcut to a website?

Like, look at this tutorial for How to Create Desktop Shortcuts on Ubuntu from 2019. The instructions have you installing applications, doing extra steps to customize the icon, and creating .desktop files. It’s a lot.

So, I was intrigued while reading about Linux Mint’s WebApp Manager. You can read the announcement on the Linux Mint blog or check out the WebApp Manager project page on Github, but the idea’s simple: run websites as if they were apps.


Sounds cool. How do I do it?

I don’t know where I got this impression, but I thought WebApp Manager was supposed to be included with Linux Mint. My first hurdle was realizing that it wasn’t and I needed to install it.

You can download and install the beta from the Linux Mint blog article mentioned above. Here’s the download link they provide in the article.

Download and install WebApp Manager, and it becomes accessible from the system menu.

Source: author

Once installed, it’s ultra-intuitive to use. Open it and click to add a new website. When you save, the web app becomes accessible from the system menu like all your other installed applications.


Okay, but can I get an example?

The thing that pushed me into figuring out WebApp Manager is that Amazon doesn’t offer a Kindle reading app for Linux. They do, however, have a cloud reader available at read.amazon.com.

So, let’s see how it looks as a web app in Linux Mint.

First, we launch WebApp Manager from the system menu, as shown in the screenshot above. Click the “+” icon to add a new app and enter the URL.

Source: author

There are a few cool things to note. First, when you enter the URL, it automatically grabs an icon, but you can also click the icon next to the address box to look for and select other icons. The Amazon smile icon is okay, but I wanted something a little more Kindle-specific.

Source: author

Other options include which category of the system menu to list the web app under and which browser to use. Also noteworthy is the “Isolated profile” option, which is equivalent to running the app in private or incognito mode.

Enter the details, save it, and you’re done. The application now shows in the system menu with the name and icon specified.

Source: author

Launching it opens a satisfying experience that has a very “native app” feel to it. You can pin the icon to your panel for quick access, or right-click it in the system menu to add it to the desktop.

Source: author

Conclusion

In our increasingly web-based world, having access to installable, platform-specific programs becomes less and less critical. It’s one of the reasons Chromebooks are so popular, and Linux benefits from it, too. Linux Mint’s WebApp Manager does a beautiful job of converting websites into an app-like experience.

WebApp Manager is still in beta, and I couldn’t find much information about it after some (very brief) research. It makes a great first impression, though, and it’s another bullet on my growing list of reasons to love Linux Mint.


This article was originally published on Medium on January 7, 2021.

Trackpad Disabled After Sleep/Suspend Following Upgrade to Ubuntu 20.04

Photo by Andrea Piacquadio from Pexels

As you may have guessed by my previous article, I recently upgraded to Ubuntu 20.04. Since the upgrade, I’ve had an issue where my laptop’s trackpad is disabled until I reboot–which is very annoying.

Today I set out to tackle the problem and found that this has been a recurring problem since at least 16.04, and it actually seems more surprising that I haven’t seen the issue until now! Luckily, there’s an easy solution.

I’m using a T440s, and this article about fixing the trackpad on a T450s was perfect. In this article, I’ll walk through my steps for confirming and fixing the issue.

First, I wanted to assert that I could reproduce the problem by performing the following steps:

  1. Reboot
  2. Confirm trackpad works
  3. Close laptop lid
  4. Open laptop lid
  5. Confirm trackpad is no longer working

Next, per the referenced article, I ran the following two commands to verify that they would re-enable a disabled trackpad:

$ sudo modprobe -r psmouse
$ sudo modprobe psmouse

Yay it worked! So, now I could put the permanent solution into place. I modified /etc/default/grub so that the GRUB_CMDLINE_LINUX_DEFAULT property included psmouse.synaptics_intertouch=0, then ran update-grub. These two tasks can be accomplished by running the following:

$ sudo sed -i 's/GRUB_CMDLINE_LINUX_DEFAULT="\(.*\)"/GRUB_CMDLINE_LINUX_DEFAULT="\1 psmouse.synaptics_intertouch=0"/g' /etc/default/grub
$ sudo update-grub

That’s it! I rebooted, repeated my repro steps, and confirmed that the trackpad was no longer disabled. Wonderful!

Custom Background in Microsoft Teams

Microsoft Teams has had the ability to blur your background for a while, but they just expanded this to allow the use of a background image instead of just the blur effect. Out of the box, you’re only allowed to choose from a selection of Microsoft-provided images, but support for custom images is there–you just have to know where to drop your images.

So, here it is. Copy your images to the following directory, and they’ll show up in Microsoft Teams when you enable background effects:

%APPDATA%\Microsoft\Teams\Backgrounds\Uploads

If the Backgrounds\Uploads path doesn’t exist on your computer, it might be because you haven’t used the background effects feature yet. Turn on your camera, pick a background image, and the folder should get created. Or just go create it yourself.

Microsoft’s images use 1920×1080, so I recommend following suit for best results.

Upgrade to Ubuntu 20.04

Image by rockiger from Pixabay

The newest LTS version of Ubuntu is scheduled to release on April 23. Once it’s released, upgrading is as easy as running a few commands. In this article, we’ll walk through the process of updating the current system and then performing the upgrade.

Before you upgrade, make sure your system is as up to date as possible. Do this by running the follwing commands:

sudo apt update 
sudo apt upgrade
sudo apt dist-upgrade
sudo apt autoremove

Now that you’ve confirmed you’re up to date, it’s time to do the upgrade.

sudo apt install update-manager-core
sudo do-release-upgrade

If you receive a No new release found message, it means the upgrade hasn’t been made available to you. It’s been noted that the upgrade path from 19.10 will not be enabled until a few days after release, and the upgrade from 18.04 LTS will not be enabled until a few days after the 20.04.1 release expected in late July. However, you can force the upgrade at your own risk by using the -d flag.

sudo do-release-upgrade -d

Change Default Application For File Type Via Command Line

While I was setting up Windows Terminal, I found that trying to modify settings would open a new instance of Visual Studio since that was my system’s default application for .json files. That’s a pretty heavy choice for what amounts to a text editor, so I thought I’d change my default app to Visual Studio Code. Should be easy, right?

The usual way to do this is through Windows Settings:

Settings > Default Apps > Choose default apps by file type

The problem is, when I did that, Visual Studio Code wasn’t an option!

That’s okay, though. We can change the default app through the command prompt. Open a command prompt in Windows Terminal (note: Command Prompt, not PowerShell) and run the following:

assoc .json=jsonfile
ftype jsonfile="%AppData%\Local\Programs\Microsoft VS Code\Code.exe" "%1" %*

Solution credit, here.

Windows Terminal, For a Handsome Command Line Experience

A co-worker was giving a demo a few weeks back, and my key takeaway wasn’t what it should’ve been. I left with, “Why did their command prompt look so much better than mine!?”

Now, I’ve admittedly done zero customization with my command prompt. I’ve been using the plain blue default PowerShell prompt for as long as I can remember. I learned they were using the new Windows Terminal. I invested a little time in setting it up & customizing, and I feel super cool now.

Scott Hanselman has a great article on how to get it & make it look good, and that’s a great place to start.

My journey deviates from his a little, though, for unrelated reasons. First, my Windows Store doesn’t load. Not a problem, though, since you can also install it using Chocolatey.

$ choco install microsoft-windows-terminal 

You can follow Hanselman’s steps for installing posh-git:

$ Install-Module posh-git -Scope CurrentUser
$ Install-Module oh-my-posh -Scope CurrentUser

And for updating your profile (run notepad $PROFILE) to include the following. Note that I prefer the Sorin theme for Oh My Posh:

Import-Module posh-git
Import-Module oh-my-posh
Set-Theme Sorin

I also installed his suggested font, Cascadia Code PL, which can be obtained here.

My last step was to make a few more customizations via Windows Terminal’s profile settings (ctrl+, from Windows Terminal). I adjusted the color scheme, font size, and starting directory by adding the following:

"profiles":
{
    "defaults":
    {
        // Put settings here that you want to apply to all profiles
        "colorScheme": "One Half Dark",
        "fontFace":  "Cascadia Code PL",
        "fontSize": 10,
        "startingDirectory": "c:/source"
    },

Multiple Chat Windows in Teams (Workaround)

My company recently made the full switch from Skype for Business to Microsoft Teams. For calls, it’s fine and mostly feels the same if not better since I prefer the aesthetic of Teams. The one thing that drives me insane about Teams is that I can’t have more than one chat window.

This is particularly irksome when I’m on a call where somebody’s screensharing, and I want to have a side-chat or ask/answer a question from somebody outside the call. As soon as you open another chat, the screenshare is reduced to an unusably-small size, and switching back makes the other chat go away. There’s a similar problem with managing multiple conversations or team chats at the same time.

Here’s an easy workaround: use the Teams web client. Just login at teams.microsoft.com, and you can have as many windows as you want. This works pretty well for side-chats on a conference call, for example if you want to have a parallel internal conversation while speaking to a client or customer. If you have frequent contacts, you can even create bookmarks to specific conversations.

Use bookmarks for conversations or contacts you access frequently

Featured image photo by 🇨🇭 Claudio Schwarz | @purzlbaum on Unsplash