Table of Contents

From The Chief Editor's Desk

1. Short Topix: IoT Device Disposal A Security Nightmare

2. GIMP Tutorial: Easy Ball Bounce Animation

3. Alternatives To Dropbox: The Conclusion

4. Tabs On Bottom With Firefox 65

5. PCLinuxOS Family Member Spotlight: Francesco bat

6. I Am Not Amused! (Or How To Spot Phishing Attempts In 2019)

7. ms_meme's Nook: Texstar - A Mastermind

8. PCLinuxOS Recipe Corner

9. Casual Python, Part 2

10. Making The Move To Interlink Painless

11. Four More Google Casualties; More On The Way

12. MeWe: A Fitting Google+ Replacement

13. The Ruby Programming Language: Introduction

14. ms_meme's Nook: The Bull Sleeps Tonight

15. PCLinuxOS Bonus Recipe Corner

16. PCLinuxOS Puzzled Partitions

17. Screenshot Showcase

From The Chief Editor's Desk

Let's talk about something a little more fun this month.

This month's cover celebrates the International Day of Awesomeness. I bet you probably didn't know there was such a "holiday." I know, I didn't either until I stumbled across it. Heck, it even has its own website. It is celebrated every March 10.

So, how did such a "holiday" come into being?

As you might imagine, it started as a sort of lark. But the short story goes something like this. On August 6, 2007, a web developer named Kevin Lawver had an intern named Freddie Maneiro, who suggested that the office should celebrate Lawver's awesomeness. Lawver replied that there should be an International Day of Awesomeness. He posted the idea to Twitter and the rest is history.

So why March 10? Well, because that is Chuck Norris's birthday. It isn't to celebrate Chuck Norris the man, but the awesomeness of the myth of Chuck Norris. Two of my favorites are the ICNDb (Internet Chuck Norris Database), and Chuck Norris Jokes, here. There's even a Wikipedia entry about the whole topic.

And truthfully, the day gives us the opportunity to celebrate every person, place, thing, or idea in the world that is awesome. As the official tagline, created by Lawver's daughter, May, points out, "No one's perfect, but everyone can be awesome." The original tagline was "Because everyone needs an excuse to be awesome."

Of course, there's one thing all of us around here can agree on, and that's how awesome PCLinuxOS is. Regardless of which desktop flavor you use, the same core stability forms the foundation upon which our favorite desktops flourish.

Let me add to that initial awesomeness with my own list. Create your own list, if you like. I'm sure there will be as many different takes on what forms awesomeness in your life.

To start with, March 10 is also my wife Laura's birthday. She is one of the most awesome things to ever happen to me!

Next, are my kids. Ryan was born on the same day (albeit six years later) as the idea for the International Day of Awesomeness. That, in itself, is just awesome! Lexi was the cherry on top of the sundae, three years and six days later.

We can all probably also agree on the awesomeness of Texstar. Here's a man who has created this wonderful Linux distro that the rest of us enjoy. That's a whole category of awesomeness that (for us, anyways) is right up there with Chuck Norris.

The PCLinuxOS Forum and family are pretty awesome. Just the fact that RTFM isn't uttered in the forum is a great act of awesomeness. Couple that with the awesomeness of how nice and welcoming the forum is, and you come up with the most awesome Linux forum in existence.

All of the packagers who help maintain PCLinuxOS are many shades of awesomeness. They help make us awesome, by helping to keep PCLinuxOS its awesome, top performing self.

I appreciate the awesomeness of two people I rely on so much every month. Meemaw is an awesome assistant editor, and YouCanToo - Mr Cranky Pants takes care of creating the awesome HTML and eBook versions of the magazine. You guys are awesome, month in and month out. In addition, YouCanToo - Mr Cranky Pants also hosts a LOT of services for PCLinuxOS, including the magazine website, the forum, the main repo, PCLOS-Talk, PCLOS-Cloud, the PCLinuxOS Knowledge Base, PCLinuxOS Mail, PCLinuxOS Graphics, and much, much more. THAT is pretty awesome, just all by itself.

Obvious or not, I appreciate the awesomeness of all the friends and family (yes, I consider many of you part of my extended family) from the PCLinuxOS community, past and present. By banding together and helping one another, we add to the awesomeness of PCLinuxOS.

I definitely appreciate the awesomeness of good health, and the abilities to contribute to the PCLinuxOS community over the years.

So, until next month, I bid you peace, happiness, serenity, prosperity ... and much awesomeness!

Short Topix: IoT Device Disposal A Security Nightmare

by Paul Arnote (parnote)

USB Stick Found In Frozen Seal Poo For Over Year; It Still Works!

Source: NIWA

The National Institute of Water and Atmospheric Research (NIWA) in New Zealand found a USB stick that was embedded in leopard seal scat, and that sat frozen for over a year before being thawed out for study.

The amazing thing, though, is that the USB stick is still functioning, after being ingested by a leopard seal, sitting in a freezer for over a year, and then being thawed out. No one knows who the USB stick belongs to, but it includes pictures taken by a kayaker (the front part of kayak is visible in some images), and even some video, which NIWA posted to their Twitter feed.

From the NIWA account of finding the USB stick:

... the memory stick was in reasonably good condition considering where it had come from. So they left it to dry out for the next couple of weeks in the hope they may be able to see what information it contained.

And, ironically, there are photos of sealions at Porpoise Bay in the Caitlins and a video of a mum and baby sealion frolicking in the shallows, the only clue to who might have taken them is the nose of a blue kayak.

If they're yours and you want the USB stick back, it comes with a price. The leopard seal researchers would like some more leopard seal scat please.

"The more we can find out about these creatures, the more we can ensure they are looked after."

There is information at www.leopardseals.org on what the scat looks like (thick puddles in varying colours), how to collect it (gloves and an ice cream container!), and how to say safe (keep at least 20m away from the animals).

Dr Hupman's work also includes analysing leopard seal sightings in a bid to determine whether they are becoming more prevalent in New Zealand waters.

So, if this is YOUR USB stick, you can reclaim it, but only after you deliver some additional seal scat as payment.

Autoplaying Videos, Audio No Longer Allowed In Firefox

There are few things that irritate me more when browsing the web than autoplaying video and audio. It literally makes me see red. After all, I think I'm perfectly capable of not only pressing the "Play" button, but of also deciding if a particular video or audio file is something I want to see or hear. I should also be able to control when I see or hear that media element, at a time that's convenient to me, and not someone else's idea of when I should see or hear it.

Starting with Firefox 66, due out March 19, autoplaying video and audio will be disabled by default. The end user can decide to make allowances on a site-by-site basis if they want to allow autoplaying media.

Excerpted from the Mozilla Hacks blog:

Starting with the release of Firefox 66 for desktop and Firefox for Android, Firefox will block audible audio and video by default. We only allow a site to play audio or video aloud via the HTMLMediaElement API once a web page has had user interaction to initiate the audio, such as the user clicking on a "play" button.

Any playback that happens before the user has interacted with a page via a mouse click, printable key press, or touch event, is deemed to be autoplay and will be blocked if it is potentially audible.

Muted autoplay is still allowed. So script can set the "muted" attribute on HTMLMediaElement to true, and autoplay will work.

There are some sites on which users want audible autoplay audio and video to be allowed. When Firefox for Desktop blocks autoplay audio or video, an icon appears in the URL bar. Users can click on the icon to access the site information panel, where they can change the "Autoplay sound" permission for that site from the default setting of "Block" to "Allow". Firefox will then allow that site to autoplay audibly. This allows users to easily curate their own whitelist of sites that they trust to autoplay audibly.

Firefox expresses a blocked play() call to JavaScript by rejecting the promise returned by HTMLMediaElement.play() with a NotAllowedError. All major browsers which block autoplay express a blocked play via this mechanism. In general, the advice for web authors when calling HTMLMediaElement.play(), is to not assume that calls to play() will always succeed, and to always handle the promise returned by play() being rejected.

If you want to avoid having your audible playback blocked, you should only play media inside a click or keyboard event handler, or on mobile in a touchend event. Another strategy to consider for video is to autoplay muted, and present an "unmute" button to your users. Note that muted autoplay is also currently allowed by default in all major browsers which block autoplay media.

We are also allowing sites to autoplay audibly if the user has previously granted them camera/microphone permission, so that sites which have explicit user permission to run WebRTC should continue to work as they do today.

At this time, we're also working on blocking autoplay for Web Audio content, but have not yet finalized our implementation. We expect to ship with autoplay Web Audio content blocking enabled by default sometime in 2019. We'll let you know!

All I can say is ... HALLELUJAH! It's about time!

IoT Devices Security Nightmare Continues After You Dispose Of Them!

Left: LIFX Smart Bulb. Right: Tuya smart bulb with cover removed.

I've mentioned IoT things here before. I've never been a fan. In fact, I think they got the name wrong. I call them I(di)oT devices. I don't need my refrigerator connected to the internet. I just need it to keep my food cold or frozen. In fact, I don't need or want most of my appliances connected to the internet. The only items that I want or need to be able to connect to the internet are my computers, my tablets, and my phones.

Why don't I like I(di)oT devices? It's things like the compromised security that we're talking about here. It's because companies and other "entities" just can't help themselves or behave themselves when it comes to keeping OUR private, personal, confidential data just that: private, personal and confidential. It's not that I have anything to hide. But certain things should simply be private, personal and confidential.

A blog owner (who never really identifies himself), on his blog called Limited Results, has done a series of articles about "smart" light bulbs. They range in price from €15 to €30 each (or approximately $17 to $35 each, in U.S. currency). He didn't even look at other IoT devices (yet). What he found is quite alarming. He just looked at "smart" light bulbs. Like those lights that can be turned off and on via your Google Home or Amazon Alexa/Echo device. You expect light bulbs to have a limited service life. Therefore, they are disposable. But once you dispose of them, your security headaches and worries haven't ended.

He looked at (and disassembled) four "smart" light bulbs: LIFX, WIZ Connected, Tuya and Yeelight (Xiaomi). You "activate" these bulbs by downloading the appropriate app on a smartphone, and then use the app to connect the bulb to your internet connection. Once that connection is made, the wifi information (SSID and password) are transferred from the smartphone to the "smart" light bulb.

As part of his disassembly, he read the chips installed with each unit. NONE of the devices encrypted any data. On all four devices, the wifi SSID and password were stored as plain text! On the LIFX device, both the root certificate and RSA private key were also extracted without much difficulty.

All of the companies were contacted and notified of the security flaws identified. All the companies confirmed the security issues. One, the manufacturer of the WIZ Connect, took a rather laid back and cavalier approach to the issues. Their reply is quoted below, from the blog:

"We do take security very seriously. At the same time, we have to find solutions that "fit" into what needs to remain a "cheap enough" product for a consumer. Ensuring perfect security when someone has physical access to the product, as in being able to tear it apart, is always a hard thing to do."

An other extract from the WIZ manager: "Also, we do not provide easy access to flashing GPIO, no JTAG on our PCBs, not to mention that our lamps are sealed and potted, so it would be quite hard to reflash a product and sell it back looking "new"?"

Only one manufacturer responded favorably: the manufacturers of LIFX. Here is their reply, from their website:

LIFX Improve Security Standards with Encryption

A report posted by Limited Results claimed that three categories of security vulnerability exists in our lights. Indeed we have been working in collaboration with Limited Results since he alerted us to these, with thanks, in 2018. In response, we have already addressed each vulnerability with firmware updates during Q4 2018:

#1: WiFi credentials are now encrypted

#2: We have introduced new security settings in the hardware

#3: Root certificate and RSA private key is now encrypted

So, if you have or are using one of these devices (including older LIFX "smart" light bulbs), be extra vigilant when disposing of them. Even after the light producing portion of the bulb has long burned out, the rest of the items inside the container may easily give up information that may risk compromising your network security.

Perhaps, the only way to insure your security would be to take a hammer to such devices when disposing of them, and placing the various resulting small pieces in separate trash bags.

Cyber-Defense Test: Russia To Unplug From The Internet

Russia is planning a "test" of their cyber-defense abilities by briefly disconnecting Russian citizens from the internet in the event of an "emergency," according to a BBC technology article. While no firm date has been specified, the "test" is expected to occur sometime before April 1.

There is no definition of what an "emergency" might consist of, but analysts have speculated an "emergency" might include internal unrest, anti-government protests, military confrontation(s), blocking cyber-warfare attacks/counterattacks, or other countries (or block of countries) attempting to cut off internet access to Russia.

When the test occurs, all data passing between Russian citizens and organizations will stay inside the country, rather than being routed internationally. All international connections to the internet will be "unavailable" during the test.

In a September 19, 2014 article, The Guardian reported that Andrei Soldatov, an expert on Russia's spy agencies, stated that "it would be technically possible for Moscow to shut off the internet because Russia has "surprisingly few" international exchange points. All of them are under the control of national long-distance operations, like Rostelecom, which are close to the authorities, he said."

The Russian Parliament introduced a draft law last year, called the Digital Economy National Program, that mandates technical changes be made to operate independently. As a result, and according to a Digital Trends article (quoting ZDNet), "the process of taking the internet in Russia offline involves routing all internal internet web traffic to government-controlled points managed by Roskomnadzor, a Russian telecom watchdog. All Russian internet companies have since agreed to the law that originally mandates the testing, but several have also shown concern over potential disruptions in overall internet traffic."

Despite that none of the current 12 organizations that control root servers for DNS are located in Russia, many copies of the internet's core address book already exist inside Russia. The test will demonstrate that ISPs can direct data to government controlled routing points. One possible goal is to have all domestic traffic routed through these government controlled routing points, believed to be an effort to set up mass censorship, somewhat like that found behind the Great Firewall of China.

The Russian government has been paying ISPs to modify their infrastructure so that all domestic traffic can be properly rerouted internally. Any traffic that is destined for servers and services outside of Russia's borders will simply be discarded.

Remember Internet Explorer? Microsoft Wishes You Wouldn't

Internet Explorer (IE) has officially been dead since 2015, when it was replaced with the newer Microsoft Edge, which is currently being rebased on Chromium. However, it hangs on ... and on ... and on ... and on. It just won't seem to die, living a zombie-like existence.

Microsoft isn't updating IE any longer. The last version was IE 11, which came out in 2014. But they ARE making it available. You'll love the reason why, too. Some IT departments and enterprises rely on IE to power various web based apps. Some of the IT departments take an "if it ain't broke, don't fix it" approach. The apps run as expected on IE, so they are accomplishing their goal(s). In that case, there's no incentive to use anything else. But, there are also IT departments and enterprises who don't have sufficient manpower to migrate all those web apps to more standards-compliant, more modern web browsers -- including Microsoft Edge, or any of its even more capable replacements.

So therein lies the problem. Microsoft doesn't want to "punish" IT departments and enterprises who simply lack adequate manpower to update or replace web apps that are performing their intended function. So, on and on goes IE, which hasn't been updated in five years.

But truly, Microsoft wishes the IE would be allowed to die. They wish it would just finally be able to go away. Microsoft has posted a plea of sorts on their tech community blog. Excerpted from that blog:

Why shouldn't I just keep doing what I have been doing?

So, why was it so important that we invert our approach to legacy? Because if we didn't, you would end up in a predicament--and probably sooner than you think. You see, Internet Explorer is a compatibility solution. We're not supporting new web standards for it and, while many sites work fine, developers by and large just aren't testing for Internet Explorer these days. They're testing on modern browsers. So, if we continued our previous approach, you would end up in a scenario where, by optimizing for the things you have, you end up not being able to use new apps as they come out. As new apps are coming out with greater frequency, what we want to help you do is avoid having to miss out on a progressively larger portion of the web!

Of course, the comments to the blog entry are nearly as informative as the blog entry itself. Take this response, from Martin_Geuss, for instance:

This problem would not exist if Microsoft had delivered a competitive browser with Windows 10.

Now you tell the people not to use Internet Explorer, but you avoid to give an advice.

It's crystal clear: Everybody should switch to Google Chrome. I know Microsoft is building a new chromium based browser, but seriously: why?

Who should be trusted? A company which is struggling in browser development since years? Or the one that has proven it can deliver a modern and capable browser?

Of course, the rest of the world knows and realizes that the problem goes farther back in history then just the introduction of Windows 10. The problem goes way, way back to the earlier releases of IE, and Microsoft's arrogance about it. Microsoft, instead of adhering to established web standards, attempted to set and establish web standards with IE. No one else was listening, and the web went its own way, down the road they already were on. As a result, over the years, IE became less and less compliant with established web standards that everyone else (but Microsoft) was adhering to.

Only when absolutely forced to do so would Microsoft support the established web standards. For many years, the running joke among Windows users was that the next version of IE should just be a link to the latest Firefox installer, since that is what most users did as one of their first acts, anyway.

Gmail Getting Enhanced, More Useful Right Click Menu

For years, Gmail has had the same paltry, pretty-much-useless right click context menu.

To say that its functions were minimally useful would have been an understatement. That right click context menu is shown above, in a screenshot taken from my own current Gmail account.

Well, coming soon to a Gmail account near you, the right click context menu is going to get a facelift. In the process, most Gmail users will find the new context menu much more useful.

The upcoming changes were announced on a G-Suites blog site. The new enhancements will allow Gmail users to perform the most common actions from the right click context menu, with a minimum number of mouse clicks. Not only are all of the current right click context menu items present, by so are several other actions, such as Reply, Reply all, Forward, Delete, Mark as read, Snooze, Move to, Label as, Mute, and the ability to search for additional emails from the selected sender.

The updates will roll out first to G-Suite customers. Those of us who use the free, public, regular Gmail, should see the updates come to our inboxes by the end of February. The updated right click context menu has already come to my Gmail account. Both images above are from my Gmail account.

Ever Dream Of That One-Way Trip To Mars? Keep Dreaming. Company Is Bankrupt.

Mars One, which started up in 2011 with the express goal of sending prospective individuals on a one-way trip to colonize Mars, has filed bankruptcy. While Mars One has touted 200,000 interested individuals, the actual number of volunteers for the project is just less than 2,800. Still, that's quite a few people interested in a one-way trip to Mars, where they will live out the rest of their natural lives, however brief or long that may prove to be.

Actually, Mars One is composed of two parts. There is the non-profit Mars One Foundation, and then there is the for-profit Mars One Ventures AG. It is the latter that has filed bankruptcy, after being bought out by a Swiss financial services company in 2016. The non-profit is reported to remain unaffected, as they work to procure additional and ongoing funding for their project in light of the pending bankruptcy of the for-profit arm of the project.

The actual mission plan to place colonists on Mars via a one-way trip is quite fascinating. You can read more about the mission goals and aspirations here. The news release about the impending bankruptcy of the for-profit arm of the project, and how it impacts the non-profit portion, can be viewed here.

Let's hope that, because of this, Mars One doesn't become Mars None.

GIMP Tutorial: Easy Ball Bounce Animation

by Meemaw

As I've told everyone before, there are a couple of sites I go to which help me learn about GIMP. One of them is GIMP Chat and the other is GIMP Learn. A while ago, I happened upon a fun tutorial on GIMP Learn from one of the masters there, named animicule. I thought it might be fun to do this one. It is an animation of a bouncing ball, but only the ball moving (and bouncing) from left to right. There was no allowance for the ball's change in shape when it hits the bottom, but I'm sure that is easy to do.

I started by creating a "ball" in GIMP, 100 x 100 px, with a transparent background.

We need a canvas for this ball to bounce on, so I created a new file, using an 800 x 600 px preset canvas, with a transparent background. I created a new transparent layer, then copied and pasted the ball onto it. While I could still move the ball, I moved it to the upper left side of the canvas, then anchored the ball to the layer.

You're going to need copies of your ball layer, so choose it, and click on Duplicate layer as many times as you think you need. I made 20 copies, but you can make more or less. If you have too many, you can delete the ones you don't use, and if you need more, you can always make them later.

OK, here is where we make things a bit easier. Instead of choosing each layer and moving it into place separately, let's link them and move everything at once. In your layer dialog is a link function, shown by the chain between the eye (making your layer visible) and your layer name. You can click on each one separately, but if you hold down your Shift key and click on one, they will all be chosen.

In an animation, layers are played form the bottom layer to the top, so we'll move them this way. In my file, the very bottom layer is blank (and can be deleted if desired), so I'm going to click on that link to undo it. Then grab your layers and move them where you want the first ball to be. I moved mine close to the top and a bit off the page so the ball looks like it's coming from off to the left. You have moved your whole stack, so go to the bottom of your layers, and unlink the next to the bottom layer, then grab the stack and move them to where you want your next ball to be.

Continue to move and unlink until you have them all distributed.

When you think you have them arranged, you can choose Filters > Animation > Playback to see if it looks the way you want it to look. Be aware that when you play it back now, all your layers will show up, even if you don't want them that way in the final product.

This is just to make sure each layer is positioned where you want it. If not, you can choose each individual layer and move it to your liking. Saving this as a GIMP file will preserve your layers in case you ever want to go back in and do anything. Now, export as a .gif. One message you'll get is this one:

This just means that since all of our layers were 800 x 600 px, and we've moved most of them, the layer boundaries have spilled off the right and bottom of the canvas. Since the ball was close to the top left corner, the rest of the layers are empty. We can safely crop them off.

The next window you get is the export as GIF window.

Of course, the first thing you choose is "As animation". Then put in the delay between frames (100 ms is the default, and I have changed it to 200 ms here, which will make it slower). I also chose "Loop forever" so it will play over and over until you close it. To make sure your animation looks like one ball bouncing, choose "One frame per layer (replace)" in the Frame disposal line.

Have fun! The animation won't show in the pdf, but you can see it in here.

Alternatives To Dropbox: The Conclusion

by Alessandro Ebersol (Agent Smith)

Over the past three months, I've been reviewing several alternatives to Dropbox that can be used in PCLinuxOS.

The alternatives to Dropbox reviewed were:

- Mediafire

- pCloud

- Cozy.io

- PCLOS Cloud

- Yandex Disk

- Telegram

- Seafile

- Mega

- Spider Oak

Now, I will recap the biggest advantages and disadvantages of each one of the services, in order to analyze all the options and make a comparative table, to assist in choosing if you want to change from Dropbox to some other cloud storage service.

Mediafire

Being primarily a file-sharing and web-service, a cyberlocker, Mediafire may be a file-sharing solution, but as an alternative to Dropbox, it does not have the flexibility of Dropbox, although it offers more free storage space on free accounts. It has good options, both to send files to your account and to share them with others, outside the Mediafire service. So for file sharing, it's a great choice, while as cloud storage service, it leaves a bit to be desired.

pCloud

pCloud is a relatively new service, but it has many features that set it apart from the rest. Primarily its offer for free accounts is up to 20GB of storage space (after doing some tasks).

This service is versatile enough to exchange files with all your devices, be it cell phones, tablets or computers. It has native application for all major operating systems, both desktop and mobile. You can swap files even between machines with different operating systems.

Because its client program comes in Appimage format, it works naturally on PCLinuxOS, as if it were native to the platform.

It is a great option to replace Dropbox, and it is recommended.

Cozy.io

It is a service with ambitious intentions, to differentiate itself from others. But if you do not live near the area of this company activities, you will not be able to fully enjoy the benefits that the company offers.

Regarding the free space offered, it is one of the smallest of the bunch, 5GB, and it is not very recommended if you do not live in one of the European Union countries, where the company has its headquarters and its trading partners. It can be used without fear in PCLinuxOS, because its client application comes in Appimage format.

PCLOS Cloud

As a service offered to a community, it's a great choice. The service maintainer, Mr. David Moore, does a job of love here. And for a service offered so generously, even buying more space and signing up for the paid service of PCLOS Cloud is worth it, as this helps to strengthen the international PCLOS community more.

With an attractive offer of 15 GB free, native client program in PCLOS repositories (which makes it very easy to install), it is a highly recommended service. The downside would be that the infrastructure is not gigantic, with multiple servers and data centers around the world, but if you do not need mission-critical services, with 100% availability, 24/7, 365, it may be a very attractive option.

Yandex Disk

The service that tries to rival Google Drive, Yandex Disk has in its favor the ease to install and operate in PCLinuxOS, an attractive 10 GB free quota to start, protection against snoops from the American security agencies, and, all the infrastructure of Yandex, trying to gain space from Google (and other cloud storage providers).

As a minus, the location of servers in Russia can lead to frustrating speeds, depending on where you live.

Nor can we forget that issues of political and legal nature (definitions of user rights in Russia, which today have no clear legislation on the subject), and a possible fragility of cyber attacks may be factors that detract from the experience, and can frighten away potential users.

Telegram

Telegram is a messaging service that is very close to perfection, thanks to its creator, Internet millionaire Pavel Durov. Telegram's excellence can be credited to Pavel's personality. Telegram is a great messaging service, much better than WhatsApp, since idealism is a powerful drive force for Pavel. He finds ways to monetize his Telegram service without compromising the privacy or personal data of its users. Telegram features an unique feature when it comes to file sharing and storage. You can share files with up to 100 people at the same time, just as you can transfer files between various devices and operating systems that Telegram supports. Without limiting the size of files, it can be an option to save files, such as a cyberlock and broadcast them, but it is not very flexible and is contained only to the internal Telegram network.

As the Telegram client is open source, it works great in PCLinuxOS, having clients in the repositories.

Seafile

Seafile, out of China, can be a great choice for storing and exchanging files between work teams, but for an ordinary user, it does not offer the ease necessary in a daily basis. It's an infrastructure, like Nextcloud, to create a private cloud storage. It does not provide free space, but server software and clients, and the individual will have to install and run on his/her infrastructure. Not recommended for personal use, it may be an option for small businesses and workgroups.

Mega

Mega had its glory days in the time when Kim Dotcom ran the company. After he was arrested, and his servers confiscated, the whole thing was never the same.

Kim tried to rebuild his company, but to no avail. Today's Mega no longer has Kim's participation, and when he can, he always speaks badly about the company now. Controlled by a Chinese investor, which is sought after by Chinese authorities, Mega today is a mere shadow of the company that it was in its heydays. Add to this a Linux client that does not work on PCLinuxOS, a web client that has download quotas and you have a beautiful turkey.

Not recommended, in no way.

SpiderOak

SpiderOak is one of the best-qualified cloud storage services in existence today. Being recommended by Edward Snowden is not for everyone, and the company's commitment to its users is something it takes very seriously.

Although it does not have free plans, the service allows a free trial time, so that the user can try out if SpiderOak meets their needs.

With native client for PCLinuxOS, it is also a good option if you value the privacy and availability of your data.

To keep things in perspective, Dropbox IS in the PCLinuxOS repository. Recent changes with Dropbox make it ONLY available to those who use the ext4 file system on Linux systems. Users of other file systems are ... well ... out of luck. Nearly every other service that offers free storage space offers significantly more storage space than Dropbox's paltry 2GB, which hasn't been expanded since Dropbox came about. Dropbox does offer the ability to purchase more storage, but the price can be a bit steep.

So, as we come to the end of this series of articles. I hope you enjoyed it, and you find it useful, especially if you want to subscribe to another service and leave Dropbox. Or, even if you do not leave Dropbox, you now can have an alternative backup service.

Tabs On Bottom With Firefox 65

by Paul Arnote (parnote)

Firefox 65 hit the PCLinuxOS repository in late January, 2019. Along with it, came an unexpected surprise: my previous method of moving the tabs to the bottom of the header part of the Firefox window no longer worked.

When Firefox 57, a.k.a. Firefox Quantum, was initially released, there were a lot of tricks and tips posted in the PCLinuxOS forum on how to control the appearance of the new Firefox window. Among them was how to move the open tab bar to the bottom of the Firefox toolbar, posted by Ramchu.

Call me spoiled, if you want, but I love having my open tab bar just above the active window. Having it just beneath the menu bar puts too much other information/distractions between my view of the information on the screen and which tab is currently opened. For me, it's a quicker and easier connection to determine which tab is displaying which information. And yes, I usually have quite a few tabs open at any given time, depending on what I'm working on.

Firefox, which I've used since the beginning, used to have an option in "Preferences" to move the open tab bar to the bottom. Unfortunately, that option went away with Firefox 29, so it has been MIA for several years. Since then, and up until Firefox Quantum, I had always relied on Firefox add-ons to move my open tab bar to the bottom of the toolbar.

Since Firefox Quantum hit the streets, so to speak, I've relied on a 12 line file, called userChrome.css, in my ~/.mozilla/firefox/[special-user-id]/chrome directory to keep/move my open tab bar to the bottom of the toolbar. Its previous contents were as follows:

/* Tab bar below Navigation & Bookmarks Toolbars

For best results, show Title Bar or Menu Bar */

#nav-bar { /* main toolbar */

-moz-box-ordinal-group: 1 !important;

border-top-width: 0 !important;

}

#PersonalToolbar { /* bookmarks toolbar */

-moz-box-ordinal-group: 2 !important;

}

#TabsToolbar { /* tab bar */

-moz-box-ordinal-group: 3 !important;

}

Easy. Plain. Simple.

But now, starting with Firefox 65, the above will not work. No-siree! After updating and restarting Firefox, my open tab bar was on top, right under the menu bar! Noooooooooo!

Luckily, I wasn't the only one who experienced this problem. On the Mozilla support boards, my frustration was shared with many others. And, fortunately, one person, who goes by cor-el, posted an expanded userChrome.css file that makes the open tabs bar return to its rightful place on the bottom.

While the solution is marked as being for Windows 10, I find that it does its job very well for the Linux version of Firefox 65, too. On the support site, it does mention that this solution is NOT for MacOSX.

Here's the new userChrome.css data to move your open tabs bar to the bottom of the toolbar:

First, give your current userChrome.css file a .bak extension, just to be sure that you can return things to their previous state ... just in case something goes south in a hurry.

Next, open your favorite TEXT EDITOR, such as Kate, Mousepad, Leafpad, Geany, Vim, Nano, etc., etc. (NO! You cannot use LibreOffice Writer, AbiWord, or any other full featured word processor.) Paste the above lines into your text editor, and save it as your new userChrome.css file, located in your /home/username/.mozilla/firefox/[special-user-id]/chrome directory. Note that "username" is your username on the computer you're currently using, and "[special-user-id]" is the directory in your .mozilla/firefox directory that has a funky name. On my computer, it's named g4ef7ma4.default.

Now, restart Firefox 65. If you did everything correctly, your open tabs bar should be at the bottom of your Firefox toolbar. Hallelujah!

Here's a message to the devs at Mozilla. I hope you're listening. PLEASE give us back the ability to move our toolbars around as we see fit. Please, give us back that which was taken away a few years ago, and has been MIA since Firefox 29. Allow us to make these changes via a simple checkbox, instead of having to possess a computer programming degree with a major in cascading style sheets to get Firefox to do what we want it to do. Let some background process take care of writing the CSS file, instead of having to hand code it.

PCLinuxOS Family Member Spotlight: Francesco bat

As Told by YouCanToo

What is your name/username?

Francesco bat

How old are you?

I'm 44 years old.

Are you married, single?

I am married.

How about Kids, Grandkids (names and ages)?

We have no kids. We don't want kids, because we want to be free together.

Do you have pets, what is your favorite?

We have a cat.

Are you retired, still working and if working, what do you do?

Now I am not working because I changed cities some months ago and I sold the old house and bought my new home in another region in Italy. I think I'm going to start working as a computer technician again soon.

Where do you call home? What is it like? IE: weather, scenery

I live in Santa Marinella near Rome.

Where did you go to school and what is your education level?

I have a diploma of commercial technical institute.

What kind of things you like doing? hobbies, travel, fishing, camping?

Computers, music, and the sea.

Why and when did you start using Linux?

Without knowing Linux, I was attracted to it in early 2000. I had a Mandrake Linux cd installer, but my 20 gb hard disk with Win98 wouldn't allow me to add anything else. Then I did live experiments with Slax in 2006 and I really liked it. When I bought a new hard disk, I finally managed to install my first Linux distro: Ubuntu. After that, I met PCLinuxOS and I happily passed here because it had all the requirements that I was looking for.

What specific equipment do currently use with PCLOS?

My PC desktop and my wife's notebook.

Do you feel that your use of Linux influences the reactions you receive from your computer peers or family? If so, how?

It is a great satisfaction to use Linux and it is an honor to have more devices with it installed almost everywhere.

What would you like to see happen within PCLOS that would make it a better place. What are your feelings?

I think it's perfect this way. Other changes could make the community grow, but they could make it worse. Better the good quality.

PCLinuxOS Family Member Spotlight is an exclusive, monthly column by YouCanToo, featuring PCLinuxOS forum member. This column will allow "the rest of us" to get to know our forum family members better, and will give those featured an opportunity to share their PCLinuxOS story with the rest of the world.

If you would like to be featured in PCLinuxOS Family Member Spotlight, please send a private message to youcantoo, parnote or Meemaw in the PCLinuxOS forum expressing your interest.

I Am Not Amused! (Or How To Spot Phishing Attempts In 2019)

by phorneker

Photograph by Alexander Bassano, 1886,

now in public domain and courtesy of Wikipedia

Since I wrote my last article on the state of cyber security, I have had numerous attempts from cyber criminals to steal my personal information by way of phishing. On my Gmail account (which was the apparent target of some data breaches), I was able to detect the attempts by simply looking at the Spam folder.

Here, we see several clues as to why these messages were placed in the Spam folder. Here is a clue that these cyber criminals are not the brightest tools in the shed.

This appeared to have come from FedEx. The fact that these messages were found in the Spam folder and the number of times this was sent is evidence that this was not sent from FedEx. Furthermore, the fact that the first line of the message says "This message is from a trusted sender" to me says that it is not from a trusted sender.

Legitimate e-mails from FedEx would never place "This message is from a trusted sender" at the beginning of the e-mail, nor would they ever have a reason to do so. Also, legitimate e-mails from FedEx would not be found in the Spam folder in the first place.

...and I saw all of this without ever having to open a message in the Spam folder.

Here is another laughable attempt to get information from me.

which came from this apparent sender

First of all, why would "AD PAYMENT OVERDUE" be a name of a sender for a e-mail message? Second, had I opened this message (and apparently clicked in the embedded link in the message), it would have confirmed that my email address is valid, making this email address a gold mine for cyber thieves.

My response in the words of Anne Robinson,

"You are the Weakest Link, Goodbye!"

...and we would have to be complete imbeciles to not notice this to be a phishing attempt:

Notice that the word "G o o g l e" contains spaces between every letter in the word...and who the **** is lorinefugate?

The only unusual activity here is the fact that this was sent in the first place.

I have one simple policy on what to do with these messages:

That's right! Shred them.

Lastly, let us look at these two headers:

The formatting of the headers alone tells me these are from the same scammer!

E-mail is not the only venue where phishing happens. The number of robocalls is expected to spike this year.

In October and November of last year, a number of such calls came to my phone with the following numbers (no doubt spoofed as you will see when you read the list):

- 765-985-9541

- 765-986-1185

- 574-985-9799 (4 times)

- 765-985-9652

- 765-986-1224 (2 times)

- 765-986-2202

There is a pattern here that suggests that not only were these numbers spoofed, but they were spoofed by the same scammer.

The prefixes 985 and 986 in area code 765 are for phone numbers in and near Peru, IN (Miami County). The 985 prefix in area code 574 is for phone numbers in Elkhart, IN. The last four digits are simply arbitrarily assigned to the spoof.

How does 574-985-9799 fit into this pattern? Because, 765-985-9799 is a legitimate phone number for a Peru, IN resident. In order to use this in a caller ID spoof, the 765 had to be changed to 574 for the call to appear to be from the same state.

What tipped me off that this is a scam is not the 574 or 765, but the consistent pattern of 985 and 986 prefixes appearing in the list.

So, what do I do when I get these calls? What else, send the call directly to voicemail. If the call is important, the caller would leave a message.

While the Do Not Call registry eliminates telemarketing calls, it only eliminates legitimate telemarketer calls. (Note that collection agencies are exempt from the Do Not Call list.)

What will ultimately solve the robocall problem will be to simply not answer the phone when one of these calls is received.

Phishing Quiz

There is a quiz you can take to test your knowledge on phishing and how to spot it. ( The quiz can be taken at this legitimate URL: https://phishingquiz.withgoogle.com/ )

Click on "Take The Quiz" to begin. You will need to create a name and email that is used in some of the questions.

The name and e-mail address does not have to be real. In fact, It is best to use fake names and e-mail addresses here for purposes of this quiz.

For this quiz, I used "Bob McKenzie" for the name and bobanddoug@noemail.com for the email address.

Bob McKenzie was a fictional character created by comedian and actor Rick Moranis as part of the SCTV sketch "The Great White North" back in the 1980s in response to a request from CBC Television for Canadian content as SCTV was filmed in Toronto and in Edmonton. The show aired on NBC in the US and on CBC in Canada.

Click on Get Started to begin the quiz.

The correct answer here is "Phishing" as the link to the document points to a fake domain "drive-google.com", instead of docs.google.com as one would expect from the Open in Docs link.

This is a Phishing email as well. The sender address reads "noreply@efacks.com" instead of noreply@efax.com as the logo on the email would suggest. Also, the link contains a URL with a domain of mailru382.co, instead of the proper efax.com domain in the URL.

The next question is similar with the link to an improper domain for Google Drive. The fourth question is a legitimate e-mail.

...from Dropbox nevertheless (which in 2012 experienced a data breach). The correct answer here is Legitimate.

The next question contains a PDF of 186KB in length. This one is a Phishing email.

Any attachment that large should be treated as suspicious. This file has either got to be a PDF containing a ton of graphics, which is very unlikely for a financial report, or the file contains malicious code which will compromise (most likely) Windows or Mac OS-X systems. In any case, it is best to not open attachments, especially if you are not expecting anything of the kind in the e-mail.

(I liked the "Good day Bob McKenzie" in this message as that was the greeting used on the Great White North sketch.)

This next one should be self explanatory.

The domain of google.support (up to now) does not exist. The link to change the password links to the domain of ml-security.org, which to my knowledge is unknown or nonexistent.

Whoever composed this garbage obviously knew nothing about writing business correspondence. This reads like something a third grader would write.

The following question is worse, and is also a Phishing email.

The next question most likely would happen on a Android tablet or smartphone.

Notice that the dialog asks us to allow "Tripit" to View email messages and settings. Why would we even want that to happen. "View email messages and settings" suggests that we allow whatever process to login to G-Mail as if it was a normal user and physically view the entire inbox of email messages.

Allow this to happen? H***, No!!!!

However, this turned out to actually be legitimate. Though the links did not show on the quiz, the links were indeed legitimate.

In any case, the lesson here is to err on the side of caution, and not allow anything that could be perceived as suspicious from accessing our digital assets. After all, digital assets are just as important as our real world assets (that we pay hard earned money for).

WHOIS Lookup

Earlier in the quiz, there was a domain of ml-security.org. How do we find out if this is legitimate? Simply install whois from the repository and type in whois ml-security.org from a command line. The following are the results from the command:

Domain Name: ML-SECURITY.ORG

Registry Domain ID: D402200000005044277-LROR

Registrar WHOIS Server: whois.markmonitor.com

Registrar URL: http://www.markmonitor.com

Updated Date: 2018-12-31T10:37:54Z

Creation Date: 2018-02-01T01:26:30Z

Registry Expiry Date: 2020-02-01T01:26:30Z

Registrar Registration Expiration Date:

Registrar: MarkMonitor Inc.

Registrar IANA ID: 292

Registrar Abuse Contact Email: abusecomplaints@markmonitor.com

Registrar Abuse Contact Phone: +1.2083895740

Reseller:

Domain Status: clientDeleteProhibited https://icann.org/epp#clientDeleteProhibited

Domain Status: clientTransferProhibited https://icann.org/epp#clientTransferProhibited

Domain Status: clientUpdateProhibited https://icann.org/epp#clientUpdateProhibited

Registrant Organization: DNStination Inc.

Registrant State/Province: CA

Registrant Country: US

Name Server: NS1.MARKMONITOR.COM

Name Server: NS3.MARKMONITOR.COM

DNSSEC: unsigned

URL of the ICANN Whois Inaccuracy Complaint Form https://www.icann.org/wicf/)

>>> Last update of WHOIS database: 2019-01-27T03:56:37Z <<<

What do we learn from this? The domain is registered in the state of California at a company called MarkMonitor, which is a part of Clarivate Analytics.

With the tools like whois available at our disposal, we can at least attempt to track the source of these problems.

...and now the fun part begins.

E-Mail Collection of Failed Phishing Attempts

January 2019

As there seems to be some kind of scam, scandal or data breach every week, it would only be appropriate that I start a new series with the title of this article "I am not amused!"

The phrase "We are Not Amused!" (of which I derived the title of this article) was first attributed to Queen Victoria. Whether that is true or not is still under debate (more than 100 years after Queen Victoria's death). Legend has it this phrase was a response to an equerry who told a story that had some impropriety and lack of decorum at the dinner table in Windsor Castle. (This was in the late nineteenth century.)

Season 3 of Victoria has aired on your local PBS station for those interested in knowing the story of Queen Victoria. The series was produced for ITV in the United Kingdom.

January 27, 2019

First of all, who is this Jessica? When accessing G-Mail with Chrome or Firefox, you can hover over the sender's name to get the email address from which the message originated. For this message, the email address was enough to tell me this is not a legitimate email:

ImOR8hhAqrupUDW3B2p@kpgv5i391rl0pscmi.edu.se

A WHOIS search on kpgv5i391rl0pscmi.edu.se gave me corroborating evidence I needed to prove this fact. Just looking at the domain name suggests that this cannot possibly be a legitimate domain, but rather looks like either a cheap imitation of a strong password, or an encrypted form of the actual domain name and/or sender name.

The .edu.se would suggest that this came from a Swedish college or university. When I researched colleges and universities in Sweden, it turns out that domains for these campuses end in .se and not .edu.se hence providing another reason this email is not legitimate.

After several previous attempts these guys are at it again. This time only once. This time, I hovered the mouse over FedEx and discovered it came from

Fedex@returned.your-server.de

Not exactly fedex.com is it?

I found out from FedEx that the link supplied in the fraudulent email points to a site containing malware. Even if this malware were targeted at Linux, the worst case scenario here would be to have the malware terminate with a Segmentation Fault message. (Thank God we do not run systemd, and that I delete these messages immediately.)

January 28, 2019

Then, the very next day, these three consecutive messages appeared in my Spam folder.

I had the mouse pointer on the top Final Notice, and found the address to read as

support@usermanld.com

...of which usermanld.com is not a valid domain.

The headers in these three messages start with a unknown character as represented by the box before the word Request, and end with the trademark symbol. While the name Google is trademarked, Google does not place that trademark in legitimate emails.

The first message has only the username, the third message contains the full email address, and the second message has a different email address. (Who is brazilbrazilia on Google Plus or YouTube?)

...and then there is this gem:

The date on this email is January 28, 2019. The previous message in the header shows the original message sent March 29, 2018, which would have been nine months ago.

So, I checked the Sent folder, and found messages that were sent around that date (March 29, 2018).

Notice that there is no message in the Sent folder between March 15 and April 13 of last year.

Also, who is this Jazmin Adams, and why would it take nine months to respond to this so-called message? For starters, the email address is at teckvar.com which is located in Panama, according to the whois client.

I researched the name and found there are several Jazmin Adams in Florida, one that is a RPN in Hannibal, MO, one that is an artist in Fort Worth, TX. The name Jazmin itself lead to a floral shop in the Pilsen neighborhood in Chicago.

So, whoever wrote this fake email took a respectable name in vain.

...and our old friend FedEx is at it again...twice!

Remember, these messages stated "Last Reminder". Imagine FedEx sending out that many "Last Reminders" to one customer in a six day period. Last time I checked, Last Reminders for any given package should only be sent out once!

This "Last Reminder" supposedly came from

cv0vc@ec2-13-54-123-19.ap-southeast-2.compute.amazonaws.com

...which as we could figure out is incorrect, and definitely not fedex.com. In fact, this is not a valid domain for email generated from applications that run on Amazon Web Services. (It does not specify the country where the application is running. There is a southeast showing in the domain, but the southeast part of where?)

The second one is more lame as the first as Notification has been abbreviated to Notif. Interestingly enough, the word Notification appears in the same email, unabbreviated!

I also love it that it says:

Dear client, Unfortunately we were not able to deliver postal package...

There are enough evident clues to tell this is a phishing attempt, and the email address is just as obvious:

FedEX.Notification@fcvtaifb.mdb.com

I'm sure that the people at FedEx are getting FedUp with this nonsense.

Online dating sites are targets to this type of phishing. Even the dating site eHarmony falls victim to this:

First of all, eHarmony would never solicit business in this manner, let alone allow a third party vendor to do likewise. But whoever owns info.q8ffitul471@fgz.newgiftshere.com seems to disagree.

The message should read "Sign up today...and get your identity stolen!" (These people didn't sign up for eHarmony.)

De Staalmeesters - The Syndics of the Drapers Guild, Rembrandt van Rijn, 1669

Public domain, courtesy of Wikimedia

This next one should be self explanatory:

Sounds like those late night ads that appeared on analog television back in the 1990s and early 2000s. The email address should tell the whole story.

5g98dantrwy4jfzac@qb3bbncuz5ivm5zzn.luu.ignorantinterest.com

ignorantinterest.com? You said it!

January 29, 2019

What an appropriate way to nearly end this collection than with Victoria herself (or should I say Viktoria)

This one came from sexy_victoria@vatulop.com.

By John Tenniel - Transferred from en.wikipedia to Commons., Public Domain, https://commons.wikimedia.org/w/index.php?curid=5827242

January 30, 2019

Just when I thought this was over for the month, another such phishing attempt was made, this time as a fake offer for a personal loan. This phishing attempt comes with an email address of: info.05chtnxfu0e@mx4.medicalinnovationz.com

I don't know about you, but any name that has a "z" at the end of it should never be trusted to be legitimate. This is one of the oldest tricks in the book when it comes to scamming.

Even if it were legitimate, why would a company that is in the health care business be offering personal loans (other than to cover the high cost of healthcare)?

...and then there is this:

This one somehow ended up in the Primary folder instead of the Spam folder. I will not open this one due to the fact that this message is empty.

KetoSlimDiet. has an email address of

contact_U8ziS@31259017.triviamail.me.uk

This is the KetoSlimDiet. :-)

...and once again, another "Last Reminder from FedEx" shows up.

This is getting rather old, isn't it? This one is from FedEx@book.your-server.de, which happens to be from the same domain as the email I got three days ago, which had an email address of FedEx@returned.your-server.de...and true to form:

from 18r6c@ec2-13-54-123-19.ap-southeast-2.compute.amazonaws.com

which resides on the same infected server as

cv0vc@ec2-13-54-123-19.ap-southeast-2.compute.amazonaws.com

...and in about three days...(two, sir)...two days, I should get another one or more of these messages, and attempts to infect this machine.

Eventually, whoever is sending this garbage will give up.

This one has "Phishing!" written all over it. The sender name "e b a y" is spelled with extra spaces, and has an email address of support@onsarsnbz.com.

Note the poor quality formatting of the message. There are two spaces between "has" and "sucessfully", which itself is misspelled, and there is no period after the word "received". Even if there were a period there, there should have been two spaces after the period to properly separate the sentences. Also, "Your request has successfully received" is not a complete sentence.

"Night Watch", Rembrandt van Rijn, in public domain courtesy of WikiCommons.

There is a third message in the list for January 30, 2019:

This appears to be from a Farmers Insurance agent, of which the message has a trademark symbol after the word "Insurance". The email address appears to be one from Farmers Insurance itself: ADIAZ@mail.farmers.com.

But it is not!

The Farmers Insurance website has a feature that allows you to find an agent. It turns out that the scammer used this tool to come up with the sender name. Clicking on the Contact Me link at the website pops us a form where messages can be sent. In other words, the agent's email address is not listed on the website!

Also, the sender name is in all capital letters, which is very unusual for a legitimate email address.

January 31, 2019

From the people that brought us the FedEx notifications and the Terminate Your Google emails of a few days ago comes this so-called granted request email.

Offers.Notification@minjundv.mdb.com

Initially, mdb.com told us they were unable to "deliver postal package". Now, they are telling us that the "request has been granted" to unsubscribe, but to what?

As this is one of the cyber criminals that attempted to infect my laptop with whatever c*** they were planning to install (not that it mattered as it would fail to work on PCLinuxOS), this email message could well have made things worse.

The message started with "This message is from a trusted sender." Where have we heard that before? Oh yeah, in those many FedEx "Last Notification" emails sent over the past week!

Ha! You think this is going to stop these messages? I don't think so! Responding to this will do just the exact opposite, and then some.

The first one has an email address of Laura.wthxta4bnn@wthxta4bnn.dwy, which is obviously not a valid domain name.

But that second one. This looks familiar. Oh yeah, the message from Jessica received on January 27.

At least with an email address of ImOR8hhAqrupUDW3B2p@kpgv5i391rl0pscmi.edu.se, the sender attempted to make an effort to mask the real email address. But today's version of the message has an email address of a1b3a7fc7fb@a1b3a7fc7fb.singlehosti.com, which is evident of two things. First, the sender name and subdomain for ".singlehosti.com" is a laughably obvious copy and paste operation. (Anyone can do that.)

Second, whoever is doing this is becoming increasingly frustrated with the lack of success (in getting personal information needed to steal money and identity).

This is good, as the success here is that this method of combating phishing attempts is so far successful.

Not to mention this is reminding me of the Aesop fable "Boy Who Cried Wolf".

The fact that these messages come to the Spam folder daily suggests that a network of unattended machines (or even processes in a certain public cloud) simply use a form letter and one or more databases to create the messages. One would think that after a while, these people would simply give up and move on. However, machines (without artificial intelligence) do not have that capability.

Francis Barlow's illustration of "Boy Who Cried Wolf", 1687, in public domain and courtesy of Wikipedia.

Conclusion

While we had some fun (and maybe some good laughs) with these phishing attempts, phishing itself is no laughing matter. Whoever is doing this is serious about stealing your identity and your money.

By presenting these emails the way I did, hopefully we can be more vigilant about our use of electronic messaging systems, and one day, make this type of activity much less profitable, and hence make this type of activity stop for good.

As I get these messages in the Spam folder almost every day, there is more than enough material to create a new column for this magazine, at least until the phishing stops.

ms_meme's Nook: Texstar - A Mastermind

MP3                                                                       OGG

PCLinuxOS Recipe Corner

Loaded Mashed Potato-Stuffed Biscuits

Ingredients

4 1/2 cups Original Bisquick™ mix **

1 1/3 cups milk

10 slices (12 oz) cooked and crumbled bacon

1/2 cup chopped green onions (8 medium)

1/4 teaspoon garlic powder

1 pouch Betty Crocker™ homestyle creamy butter mashed potatoes, prepared as directed on pouch

1 cup shredded sharp Cheddar or Monterey Jack cheese (4 oz)

3/4 cup shredded mozzarella cheese (3 oz)

** See our homemade Bisquick mix recipe here http://recipes.dm-enterprises.net/?p=recipe&recipe=289

Directions

1. Heat oven to 375F. Lightly grease or spray bottom and side of 9-inch round cake pan.

2. In large bowl, mix Original Bisquick® mix, milk, 1/2 cup of the crumbled bacon, 1/4 cup of the green onions and the garlic powder until smooth soft dough forms.

3. On surface lightly sprinkled with Bisquick mix, pat dough 1/2 inch thick. Use round biscuit cutter to cut dough into 16 (3-inch) biscuits.

4. On 8 of the biscuits, spoon a heaping tablespoon of the mashed potatoes and a tablespoon of the crumbled bacon onto the centers (you may not use all the potatoes). Top with another biscuit; pinch edges to seal. Transfer to cake pan. Arrange biscuits evenly in pan, with 1 biscuit in the center and 7 surrounding it. Sprinkle tops and sides of biscuits with 3/4 cup of the shredded Cheddar cheese.

5. Bake biscuits about 20 minutes or until golden brown on top and toothpick inserted in center comes out clean. Sprinkle remaining 1/4 cup Cheddar cheese and the mozzarella cheese on top of biscuits. Bake about 5 minutes longer or until cheese is melted. Top with remaining green onions and crumbled bacon.

Tips:

Be careful not to overwork the biscuit dough so it stays soft and fluffy.

Serve the biscuits with an egg bake, fruit, granola or yogurt for a full "brinner" meal.

Casual Python, Part 2

by Peter Kelly (critter)

A real application

Now that we have our template working, we can start to make things that are actually useful. The first application is extremely simple to create from our template, and requires very little understanding of the python language, which is where we are right now.

Sometimes, when you know what you want to say but can't think of the correct word to express it, then a thesaurus is the place to turn. A thesaurus will list similar words, similarly spelled words, words with similar meaning. In fact, any word that could be suggested by the word you pass to the thesaurus.

In the repositories, you will find an application called 'aiksaurus,' which is a command line thesaurus program. This is a good candidate for us to build a graphical front end from our template. Install this and the aiksaurus-data dependency. The first version will look like the image shown, but in the final version we will do a few tweaks to the appearance, and add some additional code to enhance the applications behaviour.

The design

Create a new directory called thesaurus, and copy into it the following files renaming them as shown:

qt5_template.py ==> thesaurus.py

template.ui ==> thesaurus.ui

update_res.sh ==> keep the same name

Also, place a suitable icon in there (look in /usr/share/icons for the icons installed on your system).

Edit update_res.sh, replacing both of the words 'template' with 'thesaurus' like this.

#!/usr/bin/env bash

pyuic5 thesaurus.ui > thesaurus_ui.py

Start up Qt designer and open thesaurus.ui. Right click on the background, and select layout -- break layout. Drag the form to make it larger, something like the example image above. We will fix the size later. In fact we will manually set the size and position of everything in the object inspector

Add a groupbox, a lineedit, 2 labels and a horizontal line. Move them around to look approximately like the image on the right and right click on the groupbox then select 'send to back'.

The Object inspector window should look like this image.

Now, in the property editor, for each of the 10 items that comprise the form locate and set the following properties:

The form should now resemble the first image.

This will get a lot easier as you become familiar with the designer. Most of the values are just my suggestions, so alter them as you think fit, but do make sure the the object names of the lineedit, textedit and the two buttons are spelled correctly. This is how we will refer to them in the final python code.

Save the form, and then use the update_res.sh script to generate the new python file.

Creating the executable application

Aiksaurus is a command line utility that works by typing the the word aiksaurus, followed by the word you want to reference. In the example, I used the word 'register,' so:

aiksaurus register

Simple. But we want to do this in a graphical window. Here is the new code -- no line numbers this time and the changes have been highlighted:

As you can see, very little has changed, and yet this is a completely different application.

I have added another import statement. This one brings in the subprocess module from the standard library. The subprocess module is a part of python that gives us the code we need to execute processes on the system, just as you would if you were in a command line terminal.

All of the references to 'template' have been changed to 'thesaurus' ( or 'Thesaurus').

The textedit widget has been renamed to resultslist.

The lineedit widget we added now gets the focus instead of the textedit, and I have renamed this lineedit to 'textinput' to make its purpose more obvious. I have added a tooltip to textinput to advise the user of usage. This widget is also made sensitive to the return or enter key being pressed so that the application connects to a new method named find_it.

The clearButton now connects to a method named reset which clears everything and gives the focus back to the textinput.

The find_it method is new. It clears the textedit widget named resultslist of any previous results. Names the text in the textinputbox 'target' (we'll get to this 'self ' thing later), and then makes a terminal type of command, as required by aiksaurus, by adding the word aiksaurus plus a space and our 'target'.

This next line is the one that does the work. It checks the output from executing the constructed command in a new process, just as bash would, and stores it in a variable named result. 'shell=True' is required by subprocess when passing an argument(s) to a command and the decode bit on the end is always required. Utf-8 encoding is a big subject, but one that you should, eventually, be aware of. If you are curious, then the best explanation I have found is at http://kunststube.net/encoding/

Finally, in this method, the text in result is placed into the resultslist textbox. And that's it. Done. Hover the mouse pointer over the input box of the running application to display the tooltip.

The appearance

At the moment, the applications appearance is a little flat. Also I like all of my own applications to have a similar look and feel. Things can be improved considerably by the use of style sheets, similar in use to those applied to web sites. With style sheets (we have already used them in the property editor to apply colors to some of the widgets) we can add radii to button corners, add borders, apply gradients -- horizontal, vertical, radial and conical and a whole bunch of other effects.

In the property editor of designer add or change the following stylesheet entries:

textinput and results list

background-color: white; border: 2px solid #8f8f91

This simply applies a mid gray border

groupbox

background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1,

stop: 0 #bbbfc8, stop: 1 #e9eefd);

Applies a vertical gradient

All three labels

background: transparent

Without this, we would see the outline of the label widget. Try removing it and notice the difference.

For the buttons, I have added a border and a corner radius. I have also added two gradients, one for the button in its normal state, and one when the button is pressed. The button pressed gradient is the reverse of the buttons normal gradient. That is, it changes from 'top-to-bottom' to 'bottom-to-top,' giving the illusion of movement.

More information on customizing the style of qt widgets can be found at: http://doc.qt.io/archives/qt-4.8/stylesheet-examples.html

When you have the appearance that you like, add the style sheets to the template to maintain a consistent look and feel to all of your home grown applications. Below is the thesaurus, in both light and dark themes.

If there is a particular widget style that you prefer in your desktop environment such as Gtk+, Plastique or Cleanlooks you can force any widgets styles that you don't override to follow that style by including a line like this;

QApplication.setStyle(QStyleFactory.create('Cleanlooks'))

in the __init__ method at the top of your code between the super(... ) statement and the self.setupUi(self) statements.

And there's more...

Now you may think that we just created a graphical thesaurus. Well, we did, but we also created a generic command execution utility in python and Qt5. This can be easily converted to execute almost any simple command line utility.

As an example, suppose that you had been hired to ghost write some documents for a famous celebrity, and that you frequently need to access these. You can now make a simple application that will list them for you in a nice, professional looking, graphical window.

Using the top down method I have mentioned goes like this:

Select one of your master works

To do this you need a list of the documents

List all available documents

select one of your master works

That is actually enough to give us some direction to start coding the changes to our application.

We need a command that will bring us the list. All of the documents are in your Documents directory in a sub-directory named 'wills_plays,' and they are all in LibreOffice writer format. We also need them listing one per line. The command that does this is

ls -1 /home/seth/Documents/wills_plays # That's a number one -1

Instead of using the template application, we can re-use the thesaurus app which saves us even more work. Make a new directory named 'docz'. Copy over thesaurus.py, thesaurus.ui and update_res.sh. Rename the thesaurus files to docz.py and docz.ui and in update_res.sh change 'thesaurus' to 'docz' in two places. Add an icon to the directory. Can you see a pattern here in what we are doing? This is part of the 'development cycle'. Also in our development cycle we regularly edit the user interface in designer, save the changes, run update_res.sh to incorporate those changes, edit the python code, and re-launch the application. This second part we must do each time we make some changes.

In designer, remove the redundant reset button, line input box and 'Results:' label. Resize the results list box to use the freed up space and change the icons. Change the text in the other label from 'Enter the search word' to 'Select a document'. Save the changes and run update_res.sh.

Change docz.py as below. I have highlighted the textual changes and removed some redundant lines, but overall, the changes required are trivial and will explained as soon as we have learned a little more of the python language.

Oops! The bar at the top still says 'Thesaurus'. In designers property editor change form -- window title to Docz, save it, run update_res.sh and re-launch the application to correct it.

Again this application is of no real use but does demonstrate the usefulness of code reuse. This only displays a list, but we could have made the items sensitive to a mouse click to open the document in writer and then close the docz application. This is an idea that I will expand in the next section, but first we will need to know just a little more of the python language. That's next up.

Making The Move To Interlink Painless

by David Moore (Mr Cranky Pants - YouCanToo)

So you got fed up with the problems using Thunderbird, or perhaps you need to find something new to replace Fossamail, which is no longer being supported. Enter Interlink Mail and News client, based on Mozilla-sourced Community Code and built on the Unified XUL Platform.

Interlink works on both Windows 32 and 64 bit machines, and Linux 64 bit distributions. 32 bit is NOT and never will be supported, according to their website. Thanks for our fearless leader Texstar, we do not need to download and build it. Texstar has already built an RPM for it, and it is ready to be installed with Synaptic. Just search for interlink in synaptic and mark it for installation. Now, that was easy.

The hardest part is setting up your account(s) and saving your old email and perhaps getting them into Interlink. Well, luckily we can make that a bit more painless to do, with a few easy steps. So let's get started.

Make sure that you have installed Interlink from the Synaptic Package Manager. OK, now that you have interlink installed, let's get to work.

First and foremost, make sure you have a backups of your important information. If you haven't done so, be sure to do it now. Yes, we really do stress you make a backup first. Don't worry, we'll wait for you. OK, welcome back. You did make a backup, didn't you?

We are going to be moving the hidden folder/files for Fossamail or Thunderbird, depending on which email client that you have been using.

For Thunderbird, it is called .thunderbird. NOTE the dot before the folder name. This is a hidden folder located in your home directory. For Fossamail, that folder is called .fossamail. Again, NOTE the dot before the folder name.

We need to make the interlink hidden folder before anything else. Now open a konsole window. At the prompt enter the following command:

makdir .'binary outcast' <press enter>

This creates the required hidden folder for Interlink. When you have created the new folder, you should see something like this when you enter a ls -la command in the konsole window.

You should find a listing for the new folder, like in my listing below.

Now here is where you want to be careful, and pay attention before pressing the enter key.

We are going to move the hidden folder for your current email client into the hidden folder for Interlink. At the same time, we will rename the .fossamail or .thunderbird folder to interlink.

One last time BE SURE YOU HAVE BACKED UP YOUR INFORMATION BEFORE COMPLETING THIS STEP.

Select either the .fossamail or the .thunderbird folder. Again NOTE the dot before the folder name. Since I use fossamail for my email client, I will using the .fossamail folder. Be sure your are in your home directory.

Enter the following command in to the Konsole window:

For fossamail use this:

mv .fossamail/ .binary\ outcast/interlink

For thunderbird use this:

mv .thunderbird/ .binary\ outcast/interlink

Now we should have have a interlink folder within the .binary outcast folder, like this:

Now for the moment of truth. From the PC Start menu -> internet, start your Interlink Email client.

If everything has gone well, you will see your familiar folder(s) setup. Don't worry, as it may take interlink a few moments to start up. Once it has started up, if it is asking you to setup up an account, something has gone wrong. DO NOT setup an account from the setup page. Close out the program and check every step you just completed carefully. Hopefully, you did make backups of your information before your started this. Remember, you were warned.

I have found that on some of my machines, it has asked me for the password the first time I check mail, and on other systems it didn't. It may also complain if you used any special plugins in Thunderbird. Not all of the Thunderbird plugins are compatible.

Four More Google Casualties; More On The Way

by Paul Arnote (parnote)

As the sun sets low on the horizon, the silhouette of a lone trumpet player appears beneath a tree. The song is a familiar one.

Google Answers. GOOG-411. Google Buzz. Google Blog Search. Squared. Desktop. Aardvark. Google Notebook. Knol. Google Wave. Jaiku. Meebo. Google Reader. Google Talk. iGoogle. Google Checkout. Orkut. Google Code. Picasa. Inbox.

The sad song played by the silhouetted trumpet player plays for these discontinued Google services, and many, many more.

Get ready, because four more Google services are joining their fallen brethren in the next couple of months. Google+, Google Notifications, Allo, and Google Fiber in Louisville, KY are all closing up shop.

Allo

Originally touted as a secure messaging app, Allo sported apps for Android and iOS, as well as web clients for Google Chrome, Firefox and Opera.

Image source: Wikipedia

Well, the initial intent was for it to be a secure messaging app, anyways. By the time it finally arrived, end-to-end encryption had been turned off by default, and Google kept logs of all messages sent, unless the end user deleted those messages. As a result, many faulted Allo for its lack of security. That lack of security made it easy for nefarious folks and prying governments to access raw, unencrypted data from Allo users. Google's explanation for why end-to-end encryption was turned off by default? They said it would help with the automated reply abilities of Allo. [cough] [cough]

If you're an Allo user, you can still keep using the app through the end of March, 2019. After that, Allo will be no more. If you want to download all of your Allo messages before they close up shop, you need to do a few things. First, you will need to update to the latest version of Allo, which should be version 27. It should be available in either the iOS app store, and in the Google Play store. This version has been updated with an export tool, to allow users to export their messages, conversations, and media.

Then, proceed according to an article on The Verge:

Go to Settings --> Chat. Right at the top, you'll see two options for exporting Allo data.

Choose "export messages" to preserve your conversations. This will create a CSV file with a log of all your current chats in the Allo app.

Choose "export media" to preserve the photos, videos, and other files contained in your Allo chats. Allo will combine everything into a single ZIP file.

Picking either option will bring up the Android system share sheet, which will let you conveniently transfer either the chat log or media package to any app you have installed that will accept them. Obvious candidates for backup purposes would be Google Drive, Dropbox, or OneDrive. But you should also be able to attach them to an email or drop them into any number of services. You can't just transfer your Allo chats into Google's Messages app, however.

Allo will be replaced by Google's Messages app. While most of Allo's best features have been migrated to Messages, some haven't yet made it to Messages, like the ability to change text sizes to indicate shouting (larger text) or whispering (smaller text). It's not yet known if all the features of Allo will make it into the Messages app. Reports claim that Google Messages is used by 175 million people each month.

Notifications Widget

Introduced around the time that Google+ came into being, the notification widget on most Google pages alerted you to when new people followed you on Google+, or if someone +1'd or reshared items from your Google+ postings. It was later expanded to include Google Photos and Google Hangouts.

Anyone who opened it up from a Google service during the month of February would have seen something similar to the image above. Notice the nice little message at the bottom of the popup window. Yes, folks, the Notifications Widget will be going away on March 7, 2019.

Clicking on the "Learn More" link in the image above leads you to a support page, like this one below:

So, Google wants everyone to turn on and use browser notifications, instead. Well, that would be nice, except turning on browser notifications is ONLY available in the Google Chrome browser. If you're a Firefox user, you aren't even presented that option. If you're an Opera user, you're in the same boat as Firefox users, with that option never being presented.

Thanks a lot, Google! There really IS a reason that I avoid running the Google Chrome browser kind of like ... THE PLAGUE ... even though I do have it installed for those rare times that I'm forced into using it (like my Chromecast that no longer works thanks to funky upgrades/updates, or receiving certain messages from my son's school).

Google Fiber (Lexington, KY)

In 2012, Google rolled out Google Fiber to Kansas City (my hometown). Kansas City was the first city that Google offered the service in on a large scale basis. However, they stopped just short of where I actually live, in Independence, Missouri. Literally, they stopped less than two miles from my home. Within the Kansas City area, they eventually expanded to include several other suburbs around the Kansas City area (I am literally surrounded by Google Fiber, since it's in every community surrounding me), but never Independence.

When Google built their fiber network in Kansas City, they used the more traditional approach of running their cables on existing utility poles, if I remember correctly. Google Fiber was the first service in the area that offered gigabit speed to the masses. Its availability did lead to other providers in the area seriously increasing their internet speeds, eventually.

Then, in 2014, Google Fiber rolled out in Austin, TX, and Provo, UT. After that, Google Fiber expanded to Charlotte, N.C., Atlanta, GA, Orange County, CA, Salt Lake City, UT, Raleigh-Durham, N.C., and Nashville, TN. In 2017, Google Fiber expanded into Huntsville, AL, Louisville, KY, and San Antonio, TX.

The fiber network in Louisville was unique and different from previous Google Fiber networks, in that it would be the first city to be built on Google Fiber's infrastructure that used wireless technology to connect to homes and businesses, according to a TechRepublic article. The article goes on to mention that Google used a different construction method, called microtrenching, where the fiber optic cable was placed into shallow trenches cut into the streets and sidewalks, rather than using traditional (and deeper) trenches.

The announcement came via a Google Fiber blog post on February 7, 2019. Here is the bulk of their post there:

Today, we're saying goodbye to one of our Fiber cities. And it ain't easy.

After a lot of analysis, we've made the tough decision to leave Louisville, Kentucky. As we told our customers today, we will be turning off the network on April 15 and their next two months of service are on us.

We'll work with our customers and partners to minimize disruption, and we're committed to doing right by the community, which welcomed us as we tested methods of delivering high-speed Internet in new and different ways.

This decision has no impact on our operations in any of our other Fiber cities, where we continue to sign up and install new customers every day.

When we launched Fiber service in Louisville in October 2017, we noted at the time that it was the fastest we've ever moved from construction announcement to signing up customers. That's because we were trialing a lot of things in Louisville, including a different type of construction method — namely, placing fiber in much shallower trenches than we've done elsewhere.

Innovating means learning, and sometimes, unfortunately, you learn by failing. In Louisville, we've encountered challenges that have been disruptive to residents and caused service issues for our customers.

We're not living up to the high standards we set for ourselves, or the standards we've demonstrated in other Fiber cities. We would need to essentially rebuild our entire network in Louisville to provide the great service that Google Fiber is known for, and that's just not the right business decision for us.

The lessons we've learned in Louisville have already made us better in our other Google Fiber cities. We've refined our micro trenching methods and are seeing good outcomes elsewhere.

For that, and many other reasons, we are deeply grateful to Mayor Greg Fischer, the City of Louisville and its residents for their partnership and spirit of innovation over the past two years.

After clamoring for and wanting access to Google Fiber where I live, this is starting to make me glad that it isn't even an option for me. Plus, given Google's history of abandoning projects, often before they've had a legitimate chance to catch on or despite their popularity (most "service providers" would be ecstatic to have 25, 85, 100 million users, even though Google appears to consider those numbers to be failures), anyone that relies on Google for necessary services should be nervous. Of course, there are other compelling reasons to NOT use Google as your internet provider, too, but we'll save that for another time.

Google+

Boy, oh boy! Do you want to talk about a service with an identity problem, plagued by missteps and miscues that are beyond any reasonable explanation or rationale? You would, of course, be talking about Google+.

Originally started in June, 2011, it was originally touted as a Facebook killer. Many users out there had high hopes that Google+ would be just the thing to knock Facebook down several pegs. In fact, it was originally designed to compete with Facebook and Twitter. Google+ was Google's fourth attempt at creating a social networking site, after Google Buzz, Google Friend Connect, and Orkut (all now defunct).

Then, in the first of many miscues, Google angered a LOT of users by making signing up for any Google service contingent upon that user ALSO signing up for a Google+ account. Keep in mind that this included signing up for an account on YouTube, Gmail, and just about any other Google service. Existing users were "threatened" to sign up for a Google+ account (whether they wanted it or not), or risk their existing Google accounts being deleted.

Then came the poorly received (along with poorly executed and poorly thought out) redesign of the Google+ site. The original two column presentation of "panes" was replaced with a single column, and TONS of wasted screen real estate on both sides. Posts in the beginning used to be in chronological order. But that logical presentation was replaced with some arbitrary order that no one has yet figured out or deciphered, and that never made any sense.

This was followed by Google+'s change of direction. They stopped trying to be a social network that competed with Facebook and Twitter, and started referring to themselves as a social layer across all Google services. Say what?! From then on, it was an ever tightening downward spiral, until we arrived to where we are now.

So, where we are now is with the public version of Google+ being shut down on April 2, 2019 (Google+ will live on in enterprise applications). Google has cited diminishing use of the service, coupled with some programming snafus on its part that potentially exposed private Google+ user data to hackers. The original programming snafu forced Google to announce that Google+ would be closing down in August, 2019. The discovery of some more bungled code (and another vulnerability) caused Google to accelerate the closing of the service to April, 2019. Come April 2, 2019, Google will start deleting Google+ data.

If you've been a user of Google+ (full disclosure: I've been on Google+ since the beginning), you might be interested in downloading your Google+ data. This includes all videos, images, content, +1's, and any thing else you may have ever done through Google+.

First, go to this link to download your Google+ data, via Google Takeout. Select at least one category (but I recommend choosing all four) that represents the data you want to download. Then, select the "Next" button.

Next, select the format you want your data archived in. The default is ZIP, but you can also select a tar.gz (tgz) format. With the ZIP format, the maximum archive size is 2GB. If your data exceeds 2GB, you will receive links to multiple ZIP files containing your content. With the tgz format, the maximum archive size is 50GB. I chose the tgz format, which is easily accessed from Linux. Windows users may have some difficulty accessing tgz formatted archives, so they are advised to choose archives in the ZIP format. I chose to keep the default action of receiving a link via email to download my completed archive. You can also choose to have the archive delivered to your Google Drive account, added to Dropbox, added to OneDrive, or added to Box. Click on the "Create Archive" button.

The next screen will confirm your selection. Now, sit back and wait for the confirmation email (if you, like I did, chose to have the link emailed to you). It shouldn't take too long. I received my email with my download link within an hour of telling Google that I wanted the archive of my Google+ data.

Now, just click on the "Download archive" button, and you will be taken to the next screen. You are given one week to download your data. If you don't download it by then, the archive will be deleted, and you'll have to go through the whole process again.

From here, you will able to download the archive of your Google+ data, by clicking on the "Download" link. My archive was 9.21 GB in size, so keep this in mind if you are on a metered internet account.

The new social networking site, MeWe, has turned into quite the refuge for Google+ refugees. You can read more about MeWe in a separate article elsewhere in this month's issue of The PCLinuxOS Magazine. MeWe is coming out with a tool on or before March 12, 2019 that will allow Google+ users to transfer all of their Google+ content and circles to MeWe, in JSON format.

More To Come

Never fear, there are more Google services closing up shop soon. Inbox by Gmail is supposed to be completely closed by March, 2019. The Goo.gl URL shortening service is expected to be discontinued by March 30, 2019.

There are rumors circulating that Google Hangouts may be the next Google casualty. There are reports on The Verge and TechTimes of Hangouts pending demise sometime in 2020. This shouldn't come as a surprise. It has suffered an identity crisis ever since being introduced as the replacement for Google Chat in 2013. The Google Hangouts app has been stripped in recent years of popular features, like SMS texting ability. In fact, the app hasn't been updated in over a year, boding a not-so-bright future.

Summary

Google's products have become central to how I work with my computer. Gmail and Google Photos are key aspects of my computing life. All of my photos of my kids are in Google Photos (and most are archived here at home). Gmail is my primary email resource. The use of Google Drive, Google Groups and Gmail are central to how the production process of this magazine currently works. Without those tools, we'd have to seriously alter the way this magazine is produced.

Given Google's propensity for shutting down services on a whim, it's enough to make anyone who depends on those services nervous.

Do no evil. I wish Google would go back to that method of operation.

MeWe: A Fitting Google+ Replacement

by Paul Arnote (parnote)

With Google+ shutting down basically at the end of the month (there are reports that Google plans to start deleting Google+ data on April 1, 2019, even though the service doesn't officially shut down until April 2, 2019), remaining Google+ users are flocking to a new alternative. It's called MeWe.

Here's the MeWe backstory, from their "About" page. They tell it best.

MeWe began in Albuquerque, New Mexico, as a vision hatched over a dinner between good friends who were early founders of social media. With Facebook all the rage, they felt something critically human was getting lost: the spirit of our democracy and the backbone of our privacy. The big technology companies, you know who they are, had reverted to treating us as commodities. They somehow mistook people signing up to use their services as a welcome invitation to target, track, spy, and sell our information to advertisers and the government. All in all, it felt pretty creepy.

MeWe founder, Mark Weinstein, dreamed of the next generation in online communications, envisioning a social and chat app that would give people everywhere the most exciting and helpful sharing technology with privacy built into the design - where members would feel safe and respected.

Mark relocated to Mountain View, California, in the backyard of technology's established Goliaths, and built a worldwide team of visionary individuals - fun, good people determined to revolutionize social media and build a new platform to go head-to-head with Facebook and restore decency, privacy, and respect for social media users.

Mark created the Sgrouples beta project, hiring an engineering team to design and build the world's first social network with privacy-by-design for its members. The 3-year Sgrouples beta project served as the testing platform for the launch of MeWe.

Making its official launch during SXSW 2016 (South by Southwest), MeWe was honored as the 2016 Start-Up of the Year Finalist for "Innovative World Technology." World-renowned thought leaders proudly serve on MeWe's Advisory Board, including the inventor of the World Wide Web, Sir Tim Berners-Lee.

MeWe is the visionary culmination of three years of determined efforts, research, and development to provide people around the world with a communication network they love and trust.

If you're wondering if MeWe is right for you, just take a look at the graphic above from their website. MeWe was built from the ground up to compete head to head with Facebook, and to offer the privacy and security that Facebook only ever scoffed at. On MeWe, you also won't have to worry about your posts being censored because of your political views. It truly is a welcoming destination for everyone.

Still not convinced? Take a look at MeWe's "Privacy Bill of Rights" (above). You're not likely to find anything else quite like it, anywhere. No, I'm not affiliated with MeWe. I've not been "paid" to say anything about them. I'm just happy to find such a welcoming place in a post-Google+ world.

When you visit the MeWe site, you should see something like the screenshot shown above. There, you can sign up for an account. If you already have an account, just click on the "Member Log In" button at the upper right corner.

The above is a screenshot of my own MeWe Home page.

This image is a screenshot of my own MeWe Groups page.

MeWe has been a sort of "in your face" Facebook competitor. In May, 2018, they took out a full page "Dear Facebook" ad in the New York Times. In July, 2018, MeWe CEO Mark Weinstein released a press release, faulting Facebook's business model and calling them out for data mining and selling user data to the highest bidder.

Most recently, cognizant of the flood of Google+ refugees, MeWe has announced a special tool to import Google+ users' data into MeWe. Expected by March 12, 2019 (and maybe earlier), the tool will allow Google+ users to transfer their Google+ circles, data, and content into MeWe. All Google+ users have to do is download their data in JSON format, and then use the tool to upload that content to MeWe.

So, if you're a Google+ user, you have a new, warm home just waiting for you to move in. I already have a presence on MeWe, as does Meemaw. The PCLinuxOS Magazine also has its own page on MeWe. Texstar has also joined at MeWe. There is a PCLinuxOS Fan Club group on MeWe.

There's your first five contacts on MeWe. See ya there!

The Ruby Programming Language: Introduction

by phorneker

Over the years, I have worked in some way with traditional languages such as Pascal, Fortran, C, C++, Java, Forth, Prolog, LISP, Smalltalk, assembly language for 8 and 16-bit processors, Ada, REXX (from my OS/2 days) and yes, even BASIC. In short, I have explored just about any programming language that was ever created.

Yes, I have had some exposure to Perl, Python, Erlang and Falcon (all of which are available in the PCLinuxOS repository). But, the one language I really want to learn is Ruby.

What is Ruby?

Ruby was created in 1995 by Japanese computer scientist and programmer Yukihiro Matsumoto and could be described as a object oriented general purpose scripting language with a philosophy, namely so that programmers can be productive (and have fun doing it). In Matsumoto's words, the philosophy is described as follows (from Wikipedia):

I was talking with my colleague about the possibility of an object-oriented scripting language. I knew Perl (Perl4, not Perl5), but I didn't like it really, because it had the smell of a toy language (it still has). The object-oriented language seemed very promising. I knew Python then. But I didn't like it, because I didn't think it was a true object-oriented language -- OO features appeared to be add-on to the language. As a language maniac and OO fan for 15 years, I really wanted a genuine object-oriented, easy-to-use scripting language. I looked for but couldn't find one. So I decided to make it.

...and he did indeed make it. The current version in the PCLinuxOS repository is 2.6.1 at the time of this writing and version 3.0 is under development.

Trivia Note: The language Ruby was named for the birthstone of one of Matsumoto's colleagues, according to FAQ 1.1.3 on the Ruby Documentation website.

The original release of Ruby was developed on this Sony workstation running NEWS-OS, which was based on BSD 4.3.

This particular machine ran on two 68030 processors, not unlike the processors used in classic Macintosh (running Mac OS 7.x and earlier), Atari ST/STE/TT/Falcon series, Sharp X68000 series, and most Commodore Amiga machines of that day.

One thing these machines were great at is desktop publishing and graphics, given the 1280x1024x256 color resolution of the displays, outdone only by the SGI (Silicon Graphics) machines of that same era, which cost thousands more than this machine did.

(Imagine producing this magazine on one of these machines!)

More than just a programming language interpreter

Ruby comes with its own package manager. Like Python, TeXLive, and Perl, Ruby's libraries are maintained in packages. The package manager, called rubygems, is used to install and maintain the Ruby installation the same way we maintain PCLinuxOS itself, and its public repository has a URL of https://rubygems.org/gems.

Source code files written in Ruby are saved with the .rb extension. Ruby packages are created and maintained with a file extension of .gem .

The .gem extension is also used in the OpenGEM product for its configuration files.

The GEM product here refers to Digital Research's product from the 1980s that supplied a graphical interface to CP/M and was intended to compete with Windows and Mac OS (classic) systems, which themselves were attempts to reimplement the Xerox Alto.

Fortunately for us, Xerox never enforced its patent on the graphical user interface. Otherwise, much of the technology (hardware and software) we use today, would never have come into existence.

GEM had been implemented for DOS, Atari ST series, Apple IIgs, CP/M, and Commodore 64/128. Today, GEM itself is now free software under the GPL, but there is no need for the original since we now have OpenGEM as a replacement.

Ruby, similar to many other language interpreters, can be run in interactive mode by opening a terminal window and typing irb (for Interactive Ruby).

Like most everything else in Linux command line interpreters, typing exit will get you out of this interpreter and back to the command prompt.

There are numerous tutorials available online for you to check out. I used the Ruby in Twenty Minutes tutorial at https://www.ruby-lang.org/en/documentation/quickstart/ to learn the language. It starts out with using irb for the famous "Hello World" program, and then using irb as a glorified calculator.

For this introduction to Ruby, let us start with two simple tasks we can do inside irb. This interpreter can be used as a glorified calculator, or as a replacement for the bc command line calculator. (For this demonstration, I exited out of irb, and launched bc.)

For those of you not familiar with the bc command, this is what happens when you launch this rudimentary command line calculator. Notice that there is no prompt, so if you are not used to running command lines in a UNIX terminal, you would think the system has stopped.

In fact, bc is waiting for you to type something in. Even in 1991, one would think that having some kind of prompt to tell you that it is ready for your next command would be central to any successful user interaction.

In the tutorial I used, a simple addition equation, namely "5 + 5" was entered into irb to get the desired result (which should be "10"). Let us try this in bc.

As we can see, there is nothing to distinguish what was typed from the result I got except that the result appears on another line, and then only because I pressed the return key.

Exiting from bc is not intuitive. Pressing Control-Z, when exiting from the DOS command cp con: <textfile>, gracefully exits from the copy command (cp in DOS). It turns out that pressing Control-Z here gives me this:

...which is what I would expect when pressing Control-C in most command line operations. It turns out that pressing Control-D gracefully exits bc, which in my opinion should have appeared somewhere in the banner when bc was launched.

Now, let us try the same thing in irb.

As we would expect, we got the correct result. Note that the result generated by Ruby is preceded by a right arrow (=>) and a space, making the result readable and distinguishable from what was typed.

What Ruby did was evaluate the equation "5 + 5" directly from the command line.

Now, look at the prompt.

Before I typed "5 + 5", the prompt displayed "irb(main):001:0".

After the expression was evaluated, the prompt now displays "irb(main):002:0".

This is normally used to keep track of how many commands or statements were executed, not unlike what could be found in a LISP interpreter (i.e. the clisp package in the PCLinuxOS repository).

As I stated earlier in this article, the exit command gracefully exits irb as would be expected of any well implemented language interpreter (including bash), hence making this a glorified calculator, and hence would eliminate the need for bc.

Mathematical expressions are not the only type of expressions Ruby can evaluate. As Ruby was written in C, any expression that can be evaluated in C is also evaluated in Ruby...and this brings up to the famous "Hello World" program.

From what I have shown you so far, there are two ways to get "Hello World" to display in Ruby.

We could simply type "Hello World" in irb (quotes included) as shown here:

...of which irb simply evaluates the string as it is. Ruby implements the puts command, for "put string", to do the same thing that I did just now. When I type puts "Hello World", in irb, we get the following:

?

...and look what happened. As we would expect, "Hello World" was displayed. But, there is one notable difference, namely the "=> nil" on the next line. Normally, puts expects one or more variables to be passed as parameters. The "Hello World" here could have been replaced with any arbitrary text enclosed in quotes. Since puts had no variables passed as parameters, the nil result was shown indicating that nothing additional was available to output, other than the "Hello World".

As with C and C++, everything in Ruby is either a function or an expression. As puts is considered to be a function, it has to return some kind of value. The nil result means that there is no value to be returned and hence will always be the result of executing puts. If you were to assign the result of puts to a variable, that variable will always be assigned a nil value.

The equivalent in C (and C++) is printf("%s", "Hello World");, which evaluates to the same thing as the Ruby expression puts "Hello World".

Ruby is a general purpose calculator

When I typed in "5 + 5" in irb, we got 10. The spaces inside the equation are optional and are shown here for readability.

While both are readable in this (partial) screenshot, it is clear which statement is more readable on the screen.

As we would expect, the "+, -, * and / " function as we would expect. When it comes to powers and exponents, such as 2^8, Ruby implements exponents as 2**8, rather than 2^8 as it would be typed in a 1-2-3, Quattro Pro or LibreOffice Calc spreadsheet.

Square roots, however, are implemented in Ruby differently. On a spreadsheet, we would type =sqrt(1048576) to get 1024. The equivalent in Pascal is var := sqrt(1048576); , and the equivalent in C is var = sqrt(1048576); .

In Ruby, however, we would type Math.sqrt(1048576), and voila:

we get the result we need, but as a floating point number. Why Math.sqrt instead of just sqrt?

Earlier I mentioned that Ruby installations are maintained the same as PCLinuxOS itself with the rubygems package manager. Ruby modules are what is generally contained inside Gems. Some modules such as Math are packaged with the stock Ruby installation, and it is possible for sqrt to be implemented in a third party module. Therefore the Math.sqrt statement tells Ruby to use the sqrt function from the Math module.

One of Ruby's influences is Smalltalk. In Smalltalk, interaction between modules is by way of message passing, a concept that should be very familiar to those who have programmed applications for Windows, the X Window System, OpenGEM and classic Mac OS environments. The concept is commonly referred to as event driven programming.

What happens in this example was that the sqrt function contained in the Math module is passed a message, that is a message containing the number 1048576 as a parameter of which the sqrt is instructed to return the square root of 1048576, which should be 1024.

Note, the result is always a floating point number. If sqrt were to be implemented as an integer function, the result would not be reliable enough for everyday use as what would be returned would not be accurate. For example, the square root of 2 is 1.4142135623730951 as implemented in Ruby.

Many cheap physical calculators do not get this much precision in the result, but if this were to be implemented as an Integer function, Math.sqrt(2) would simply return "1", and that would not be very usable, or correct for that matter.

Let us try the square root of zero. As we would expect, we get 0.0, as it should be.

Now, can this function handle imaginary numbers? Those of us with a mathematical background know that the square root of -1 is i (for imaginary).

Can Ruby's Math module handle this function?

As we can see here, support for imaginary numbers has not been implemented in Ruby, yet..at least not with the Math module. Also, we see how Ruby handles exceptions with no exception handling module in use.

Therefore, the Math.sqrt function requires a number that is greater than or equal to zero for a parameter.

There is a Method to this Madness

As we saw, the square root function in the Math module does not support imaginary numbers. The code used to implement the sqrt function is considered to be a method, or a set of instructions that implement a function in one way.

Suppose someone were to call a similar function that supports imaginary numbers, and then decides to call this sqrt but with different parameters. The code contained in this sqrt function is another method for implementing the square root function.

According to Wikipedia,

A method in object-oriented programming (OOP) is a procedure associated with a message and an object. An object is mostly made up of data and behavior, which form the interface that an object presents to the outside world. Data is represented as properties of the object and behavior as methods.

This definition comes close to what I just described. Perhaps, in a future release of Ruby, imaginary support could be implemented in the Math module by including a (built in) data type that supports imaginary numbers, and then adding new code (the method) for each function where imaginary numbers are the parameter(s) used.

As Ruby is an object oriented language, the additional code to the Math module will not change existing code for programs that call functions from the Math module. In fact, existing programs that used the Math module will not notice the difference. However, programs that use a imaginary number data type will need the new version of the Math module to function properly.

Now that we have an idea on what methods are, let us see what we can do in irb.

If you have ever programmed anything in Pascal, what we call a method here is nothing more than a Procedure. This is true even in object oriented implementations of Pascal such as Delphi (supported in FreePascal, or the fpc package in the PCLinuxOS repository).

Defining Methods in Interactive Ruby

We can indeed define methods using irb. Let us write our "Hello World" program as a method.

Each method in Ruby starts with def, meaning "define function" or simply "define" depending on how you look at it. This is followed by the name of the method.

Look what happens in the irb prompt. Ruby took the def statement and is now storing anything we type in irb from this moment until we type end on a separate line into memory allocated for the method called hi.

The "001:0" changed to "002:1". The line counter increments with each instruction, but note that the ":1" indicates that this is a method (or procedure) being defined rather than an instruction to be immediately executed.

Next, we retype the puts "Hello World" statement.

Again, Ruby took in the statement, and is waiting for the next line in the method. Since this is a "Hello World" program, all we need to do is place the end statement in a separate line.

We have now successfully defined a new method and Ruby has acknowledged the method by typing a " => :hi " for a response. We have just added a new function to the Ruby interpreter, namely hi. Unlike the built in functions, this new function will be effective as long as the Ruby interpreter is running in this session.

Type hi next to see what we have done.

Where have we seen this before? When we typed puts "Hello World" on a line by itself before we defined this function.

As with any object oriented language, the name of the function can have more than one method associated with the function. Which method is used depends on the parameters passed to the function.

The first hi function contains no parameters.

def hi

puts "Hello World"

end

Let us redefine the hi function with one parameter.

def hi(name)

puts "Hello #{name}"

end

Let us try out this method of hi. The name you type in must be in quotes or Ruby will give you an error message.

When parameters are properly supplied, we get this:

But, what is this #{name}? This tells Ruby to use the variable name within the {} instead of printing out "name". If this looks like something from a Perl script, it is because Perl is one of the influences for the Ruby language design.

Before this def statement was entered, I had to restart the Ruby interpreter. The current version of Ruby does not allow the method name to be used more than once in a session. When I tried to call hi without any parameters, Ruby spat out an error message to that effect.

Let us examine the existing code.

def hi(name)

puts "Hello #{name}"

end

What if there was a way to set a default value if no name is supplied for a parameter? There is a way to do that with what we have. Just place a default value inside the parameter in the def statement as shown (in italics):

def hi(name = "World")

puts "Hello #{name}"

end

So what else can we do to improve the code? Make sure the name is properly capitalized. Ruby contains a function for that, and you simply need to append .capitalize to the variable name. (Remember, everything in Ruby is an object.)

def hi(name = "World")

puts "Hello #{name.capitalize}"

end

Now, let's try this code out.

We can see that everything worked out so far. When no parameter was supplied, Ruby set World to the variable name.

Creating Objects

As Ruby is an object oriented language, and that everything in Ruby is an object, it only makes sense that we should be able to create objects. As in C++ and Java, we can create class objects that encapsulate what we have learned already. Let us revisit our existing code.

def hi(name = "World")

puts "Hello #{name.capitalize}"

end

How can this be encapsulated into an object? By defining a class. We start with a class statement. The tutorial I used calls this class "Greeter", and it is only appropriate that I use the same name for the class being defined.

class Greeter

Classes contain methods and their data. In a class, the data contained in that class is defined first usually initialized to a set value for each variable. This is important as variables that are undefined can contain arbitrary values at the time objects of this class are created, and if those undefined values are inappropriate for the data being represented, such as strings where floating point numbers are expected, what could happen would be nonsensical output at best, in other words, what could happen would be unpredictable.

Having said that, we need to create a variable that is local to the class.

class Greeter

def initialize(name = "World")

@name = name

end

The end statements are similar to the end statements in several languages (including Pascal) in the sense that they end fragments of code. In this case, the end statement here ends the declaration for the initialize method, which should be the first method defined in any class as that gets executed first with the creation of class variables.

Now, let us add two methods to this class (and close out the class with an end statement).

class Greeter

def initialize(name = "World")

@name = name

end

def say_hi

puts "Hello #{@name}"

end

def say_bye

puts "Bye, #{@name}, come back soon"

end

end

After typing all of that in, we get:

Ruby responds with a "=> :say_bye" (the name of the last method defined in the Greeter class). We have just defined a new class. Unlike methods, classes are not directly executed in irb. Instead, new objects of that class have to be defined.

We accomplish this by typing in the following:

greeter = Greeter.new()

where <name> is the name you want to use enclosed in quotes. Let us use the same example.

Now, we have an object named greeter, derived from the Greeter class. We can now invoke each of the two methods we defined in the class.

...and everything works as we expected.

We've just barely scratched the surface. This gives you an idea of how object oriented languages work. As with any programming language, there is much more to cover. Ruby is billed as an easy to learn language, and should be familiar to those of us who programmed in C, C++, Java, Python, PERL, and Smalltalk. The philosophy behind this is indicative of the hard work and dedication Matsumoto put into creating and maintaining Ruby, and I am looking forward to working more with this language.

What I just showed you was the Interactive Ruby interpreter, and the ways methods and classes are written in Ruby, and a little exposure to handling of variables. 5From what I have read so far in the documentation, I can see infinite possibilities for what could be done with this language,

Next time, I will show you how to create Ruby source files and introduce you to some other basics of the programming language such as control structures, data types, and arrays.

ms_meme's Nook: The Bull Sleeps Tonight

MP3                                                             OGG

PCLinuxOS Bonus Recipe Corner

Slow-Cooker Korean Barbecue Pork Shoulder

Ingredients

1/2 cup soy sauce

1/2 cup packed brown sugar

2 tablespoons chili garlic sauce

2 Braeburn, Gala or Fuji apples, unpeeled, cored and chopped 12 cloves garlic, peeled

1-inch piece ginger root, unpeeled

4 lb boneless pork shoulder roast

2 tablespoons vegetable oil

1 teaspoon salt

6 cups cooked white rice

Directions

1. In medium bowl, mix soy sauce, brown sugar and chili garlic sauce. Stir in apple, garlic and ginger root.

2. Rub pork shoulder with oil, then rub in salt. Heat 12-inch nonstick skillet over medium-high heat. Cook pork in hot skillet 2 to 3 minutes on each side or until browned. Transfer to 5- to 6-quart slow cooker. Pour sauce over pork. Cover and cook on Low heat setting 7 to 8 hours or until very tender.

3. Transfer pork to cutting board; let stand until cool enough to handle. Strain sauce through fine strainer; discard any solids. Wipe out slow cooker; pour strained sauce back into cooker. Shred pork; return to slow cooker, and coat with sauce. Serve over rice.

Tips:

No need to peel the ginger root and apples! They will contribute plenty of flavor before being strained out of the sauce.

You can measure, cut and mix all your sauce ingredients the night before, and refrigerate to make the morning prep time even quicker.

PCLinuxOS Puzzled Partitions

Scrappler

Download Puzzle Solutions Here!

Sudoku

Download Puzzle Solutions Here!

Crossword

Download Puzzle Solutions Here!

WordFind

Download Puzzle Solutions Here!

Cryptograms

From the computer of ms_meme:

Everyday I work the daily crosswords and cryptograms in the paper. I like the cryptograms as they are wise/silly sayings of famous people.

The magazine article about secure passwords made me think of the cryptograms. We have people in the forum who are always posting famous/wise/silly sayings.

I have made a few into cryptograms, and hope our readers will enjoy them.

Download Puzzle Solutions Here!

Screenshot Showcase

Posted by hurricane, February 3, 2019, running Mate

Posted by jogurtmen, February 4, 2019, running Mate

Posted by Mr. Cranky Pants - YouCanToo, February 3, 2019, running KDE

Posted by Meemaw, February 7, 2019, running Xfce

Posted by OnlyHuman, February 13, 2019, running e17

Posted by parnote, February 16, 2019, running Xfce

Posted by sammy2fish, February 9, 2019, running KDE

Posted by seaplane_tux, February 14, 2019, running Mate

Posted by smileeb, February 20, 2019, running Xfce

Posted by tuxlink, February 7, 2019, running KDE