Thursday 27 April 2023

Five New Workplace Buzzwords

Move aside, Quiet Quitting. For months, everyone has been talking about you, but now there are five new contenders to your precariously-balanced throne. I trawled the internet for the hottest workplace buzzwords... and surprise, surprise, they all centered around employment. Honestly, I don't know who coined these phrases (and don't care enough to find out) but the employer and employee, predictably, have very different perspectives about these.

For instance, employers see Quiet Quitting as slacking off and not living up to one's potential. Employees see it as doing whatever they're paid to do, and no more. The same goes for all these buzzwords I'm about to explore.

These buzzwords generally don't describe anything fresh and exciting. People were doing these things long before there were terms for them. Maybe people just like labelling stuff. It's certainly amusing, and makes for quite a fun list to compile.

1. Quiet Firing

This term is a partial inversion of Quiet Quitting. Instead of employees toning down their output to the bare minimum and doing just enough to remain employed, it's the employer who stops giving perks and treating the employee like a valued member of the company. They still pay the employee on time and fulfill the contractual obligations, but the employee is left out of promotional considerations and significant salary raises. In some cases, it's just neglect; but in most, it's done with the intention of hoping that the employee gets fed up enough to leave without having to get fired.

Employer's view
Layoffs require compensation, and they're expensive. Firing for cause requires evidence and due process, and even then this leaves us open to potential litigation. If the employee gets fired, it's a black mark on his or her resume. It's better for all involved if the employee just leaves. Hopefully they can take a hint, or several.

Also, this gives us room to reverse our decision if it turns out the employee was capable of better.

Employee's view

Some of us don't mind getting fired if there's money involved. Quiet Firing is a bitch move for employers who want to avoid uncomfortable confrontation or possible legal repurcussions. Instead of coming out right and saying that they no longer want us around, they disrespect us constantly so that we no longer want to be here. And if our performance drops as a result, this gives them the perfect excuse to fire us outright.

My view
All in all, it's almost universally agreed that Quiet Firing is bad management, not that this stops people from doing it. It's a longer, drawn-out tactic, almost on par with victory via attrition, and it's far less productive than the direct approach. Also, this can lead to a toxic work environment.

Death by a thousand cuts.

Software developers may be familiar with the practice of code reviews, and not merging bad code into an existing code base to minimalize the negative impact. But what if the code was silently excluded and the developer never even knew why his or her code was left out of the merge? Feedback is important. You want people to be comfortable working with you. Whether or not they like you, is a separate matter.

In short, don't play games. Be a professional.

2. Quiet Hiring

At the other end of the spectrum from Quiet Firing, is Quiet Hiring. This is when employers quietly slip employees extra responsibilities or move them into entirely new positions, without a pay raise or promotion to reflect this. Hence, Quiet Hiring - using existing labor resources to get more work done without actually hiring more labor.

Employer's view
This is a tremendously cost-effective way of hiring, and low-risk. We take existing workers who may not be performing well in their current roles, and give them new roles to see if they are able to function better. For high performers, this is a great way of giving them the opportunity to prove themselves with additional responsibilities. Everybody wins.

Employee's view
Everybody wins, except for the ones who aren't being paid more for the additional workload. So in that sense, only the employer wins. This is a really cheap and digusting way of getting more unpaid work out of employees. We'll be assured that this is only a temporary measure and that more help is on the way, but if it's shown that we can handle this workload, we'll just be rewarded with more work.

My view
This can work, but transparency is needed, something that management can be notoriously bad at. If employees aren't paid more for doing extra work (we're talking weeks or months of sustained workload here, not just a one-off weekend) then resentment is going to set in. As an employer, you are going to look like an exploiter, and let's face it, on that evidence it's hard to argue against. Also, the employee needs to agree to the arrangement with the understanding that there are no repercussions for declining the "promotion". Some may jump at the chance, and some may not. Not everyone wants the same thing. Expecting every employee to be grateful for it is supremely delusional. That's not a good look for someone who is expected to steer the direction of the company.

All of your eggs!

Also, consider the fact that lumping additional responsibilities onto one employee, while it may look clever, can backfire. It is the corporate equivalent of putting all your eggs in one basket. If one developer is primarily responsible for QA, DevOps and system security, you are in deep doo-doo if that developer goes down or leaves. From a very pragmatic point of view, you want employees to be as replaceable as possible.

3. Resenteeism

Resenteeism is derived from Presenteeism, which, to put it simply, it showing up for the sake of showing up, even if the employee in question is sick, injured or otherwise in no physical or mental state to be fully productive. It is the rambunctious cousin of Quiet Quitting. Whereas in Quiet Quitting, employees scale back on work to perform only duties they are contractually obliged to, Resenteeism ups the ante by noisily doing it. Those practicing Resenteeism are pissed off with the workplace and while they still show up, they're not at all subtle about having their resentment show in their demeanor, output, or both.

Employer's view
This is selfish, toxic behavior and utterly unprofessional. People who are that dissatisfied with their employment should seek life elsewhere and not be a Debbie Downer to those who are happy to be employed. There are plenty of people who don't like their jobs and still manage to perform like a champ.

Employee's view
Sure, such behavior is not ideal. But this could be a symptom of something deeper. We've all had those days.

My view
When you hire human beings to perform tasks, this is what you get. Find the root of the problem and address it. These things don't happen in a vacuum; seriously, who wakes up and just decides to perform their work tasks like an asshole? Many software developers take ride in their work. Even if their work may not be of sterling quality, they give their best. There's pride at stake. And it would take an extreme scenario for a developer to deliberately turn in bad code out of frustration.

It's always Monday!

Of course, in an ideal situation, if one is that unhappy, they should just leave. But not everyone has that as a viable option. At least the symptom is obvious - and whom to fire is just as obvious. But that's just a band-aid, and simply removing the offending employee does not solve the root problem and may even affect morale. Tread carefully.

4. Career Cushioning

I don't know when this term came to life, but the phenomenon it describes is hardly new.

When an employee wishes to leave, but instead opts to stay while actively looking for a new job, that is what people call Career Cushioning. This could be done in concert with Quiet Quitting or outright Resenteeism.

Employer's view
Employees who do this, are cheating the company which is expending time and resources on training them, only to treat the company as a stepping stone. This is ingratitude at its worst.

Employee's view
Well, it's only pragmatic to do so, isn't it? When companies want to fire someone, do they fire first and worry about replacing later, or do they actively seek a replacement first? It's a little hypocritical to complain when the shoe's on the other foot.

My view
Objective as I often try to be, I'm going to have to side with employees on this one. Honestly, what are employers smoking when they have the audacity to complain about this? It's simple math. Try not to be emotional about it.

Not everyone loves their job. To them, a job is just a job. And that stands even more true if the company you're working for, does not belong to you. So putting up with an unpleasant work situation while actively seeking greener pastures is not only perfectly acceptable, it speaks well of the employee's determination and discipline.

Being used as a stepping stone.

Employers, if you're upset at being used as a stepping stone, get over yourselves. Even large companies like Microsoft and Google get used as stepping stones.

You know what's worse than being a stepping stone? Not being good enough to even qualify as one.

5. Rage Applying

I have saved arguably the best for last. Rage Applying is used to describe a situation where employees apply to other jobs after experiencing dissatisfaction with their employers. Kind of like the term "Rage Quit" (one which we won't discuss here) if you think about it. In a momentary fit of anger, the person in question burns bridges, or prepares to do so. The employee starts applying to other jobs like it's going out of fashion.

This, however, is different from Resenteeism in the sense that these employees, as in Career Cushioning, hang on to their current jobs while seeking life elsewhere.

Employer's view
Such employees are unprofessional and immature. There will always be disagreements and unpleasant situations at work. Why throw that all away by looking for a way out when you could confront and fix the situation, like an adult?

Employee's view
Usually, when this happens, it's not due to a momentary stab of anger. It's the accumulation of many injustices and aggravations that have led up to this moment.

My view
Believe it or not, both sides have a point here. There is no job where you won't occasionally have a bad day. The professional thing to do is try to work it out. The employee is also correct in the sense that it's typically not one bad day that leads to this, and possibly they have already tried to fix the situation to no avail.

Don't erupt. Stay cool.

The point I want to make is: quit if you must, but don't Rage Quit. And certainly don't Rage Apply.

This is not to say that employees should not apply for other jobs; in fact, they should regularly be on the lookout for other career opportunities regardless of how happy they are doing their jobs at the moment. Your employer does not own your career. You do. Therefore, you owe it to yourself to know what's out there for you. Techies who allow themselves to stagnate by staying in the exact same role for far too long, are shooting themselves in the foot. I speak from bitter experience.

In other words, look out for other jobs and apply, yes. But don't do it out of rage. Do it with a cool head and a cold heart. This allows you to make better decisions. It's just business. As I mentioned earlier, no sense getting overly emotional about it.

One last (buzz)word...

Neither employers or employees have all the answers. And sometimes their views can be colored by their perspective. Admittedly, as an employee myself, I feel a certain way about certain things. But there are some things that, from a pragmatic standpoint, are either a good idea or a train wreck waiting to happen. I have tried to present that view. Whether or not I have succeeded in that, your mileage may vary.

Did it just get quiet in here?
T___T

Thursday 20 April 2023

Web Tutorial: The SVG Venn Diagram

Hey guys. Hope April's going well.

This month's web tutorial will be light. We are going to explore creating a Venn Diagram using SVG. If you somehow have no idea what a Venn Diagram is, it's a series of at least two shapes (usually circles) that represent different areas of interest and how much (if any) these areas overlap.

In this web tutorial, we will create a Venn Diagram with three circles.

Begin with some HTML. We will just have the svg tag in the body.
<!DOCTYPE html>
<html>
    <head>
        <title>Venn Diagram</title>

        <style>

        </style>
    </head>

    <body>
        <svg>
            SVG not supported
        </svg>
    </body>
</html>


The tag is styled with a width and height. Take note, because width and height are important here. Most of our other calculations are derived off these. There is a solid red outline to show what we are doing.
<style>
  svg
  {
    width: 800px;
    height: 550px;
    outline: 1px solid red;
  }

</style>

Editor's Note: The combination of SVGs and CSS just does not work very well in Safari.

OK, here it is.




Now we have circles!
<svg>
  <circle />

  SVG not supported
</svg>


Since each circle has a unique fill color, we will just put the fill color right here. I have opted for a translucent red. Not that the translucency will be important.
<svg>
  <circle fill="rgba(255, 0, 0, 0.5)"/>

  SVG not supported
</svg>


Now, all the circles will have a 150 pixel radius. Considering the width of the SVG, which has been set to 800 pixels, if the width has to at least accommodate the width of two circles, that would be four times the radius. (4 x 150) = 600 pixels is less than 800 pixels and allows for a bit of buffer at the sides, so this is great.
<style>
  svg
  {
    width: 800px;
    height: 550px;
    outline: 1px solid red;
  }

  circle
  {
    r: 150;
  }
</style>


We will also give the circles a grey 3 pixel outline.
circle
{
  stroke: rgb(150, 150, 150);
  stroke-width: 3;

  r: 150;
}


The circles will be in different positions, so back to the HTML markup, let's determine the center. If the width of a circle is 150 pixels and the center of the SVG is at (800 / 2) = 400 pixels,  We'll want the center of the leftmost circle at 300 pixels thereabouts.
<svg>
  <circle  cx="300" fill="rgba(255, 0, 0, 0.5)"/>

  SVG not supported
</svg>


And if we have the SVG's height at 550 pixels, and the SVG's height is supposed to accommodate the height of two circles, again (150 x 4) = 600 pixels is more than 550 pixels! Do we therefore have a problem? No, because the circles are going to overlap, so they'll take up much less height. If we set the center to be 200 pixels from the top, the topmost line of the circle will have (200 - 150) = 50 pixels from the top. If the bottom circle is also 50 pixels from the bottom, (50 + 50 + 600 - 550) = 150 pixels, which is about how much the top circles and the bottom circle have to intersect. This may be relevant later.
<svg>
  <circle cx="300" cy="200" fill="rgba(255, 0, 0, 0.5)"/>

  SVG not supported
</svg>


Here comes the first circle!




The second and third circle should come in succession. Let's go for the second circle. It will lie vertically flush to the first, so the cy attribute is the same.
<svg>
  <circle cx="300" cy="200" fill="rgba(255, 0, 0, 0.5)"/>
  <circle cy="200"/>
 
  SVG not supported
</svg>


But horizontally, it should occupy the other side of the red rectangle, so we want it at an equidistant position from the mid-point, as the first circle, but in the other direction. So if the cx attribute of the first circle is 300, which is 100 pixels less than the mid-point which is at 400, then the other circle should be (400 + 100) = 500 pixels!
<svg>
  <circle cx="300" cy="200" fill="rgba(255, 0, 0, 0.5)"/>
  <circle cx="500" cy="200"/>
 
  SVG not supported
</svg>


And this circle will be a translucent green.
<svg>
  <circle cx="300" cy="200" fill="rgba(255, 0, 0, 0.5)"/>
  <circle cx="500" cy="200" fill="rgba(0, 255, 0, 0.5)"/>
 
  SVG not supported
</svg>


Pretty good so far. Note how the intersecting portion is a nice (actually rather sickly) green. That's because the translucent red and green circles have now combined colors.




For the third circle, let's make this one blue. The cx attribute is obviously 400, which is the mid-point of the SVG.
<svg>
  <circle cx="300" cy="200" fill="rgba(255, 0, 0, 0.5)"/>
  <circle cx="500" cy="200" fill="rgba(0, 255, 0, 0.5)"/>
  <circle cx="400" fill="rgba(0, 0, 255, 0.5)"/>
 
  SVG not supported
</svg>


The cy attribute now... I know this is very unscientific, but I basically just adjusted it till it looked all right.
<svg>
  <circle cx="300" cy="200" fill="rgba(255, 0, 0, 0.5)"/>
  <circle cx="500" cy="200" fill="rgba(0, 255, 0, 0.5)"/>
  <circle cx="400" cy="372" fill="rgba(0, 0, 255, 0.5)"/>
 
  SVG not supported
</svg>


So far so good.




Optional: The intersections

Now, the next part isn't entirely necessary. If you're happy with the color contrast and want to just get on with adding text, you can skip this because it's a bit of a pain in the behind and doesn't add that much value.

But if you want a different color intersection from what we currently have, let's begin by adding a path tag. It will have a deep brown fill and will be very translucent.
<svg>
  <circle cx="300" cy="200" fill="rgba(255, 0, 0, 0.5)"/>
  <circle cx="500" cy="200" fill="rgba(0, 255, 0, 0.5)"/>
  <circle cx="400" cy="372" fill="rgba(0, 0, 255, 0.5)"/>
 
  <path fill="rgba(100, 100, 0, 0.2)"/>
 
  SVG not supported
</svg>


Now there will be three of such paths, all the exact same shape. So you don't want to repeat yourself. In the styles, set paths to have the same stroke and stroke-width properties of circles.
<style>
    svg
    {
        width: 800px;
        height: 550px;
        outline: 1px solid red;
    }

    circle
    {
        stroke: rgb(150, 150, 150);
        stroke-width: 3;
        r: 150;
    }

    path
    {
        stroke: rgb(150, 150, 150);
        stroke-width: 3;
    }

</style>


We will set the shape here. Use the d property, with the path() function.
path
{
    stroke: rgb(150, 150, 150);
    stroke-width: 3;
    d: path("");
}


We begin by moving the pointer to the middle of the SVG. The first attribute is 400, but the second, needs some trial and error. The "Z" is to specify that the path will be closed at the end.
path
{
    stroke: rgb(150, 150, 150);
    stroke-width: 3;
    d: path("M 400 312 Z");
}


We use "a" to say that we want a curve. But first, we want the end point to be vertically upwards.
path
{
    stroke: rgb(150, 150, 150);
    stroke-width: 3;
    d: path("M 400 312 a 0 0 0 0 0 0 0 -223 Z");
}


And then we want the curve to the right, and slightly downwards. I won't bore you with the math. Actually, there is no math. I totally winged this.
path
{
    stroke: rgb(150, 150, 150);
    stroke-width: 3;
    d: path("M 400 312 a 270 190 0 0 0 0 -223 Z");
}


This is what you should have. See that superimposed green patch? It's supposed to be a very translucent brown, but you won't see this because it's superimposed over the dirty green intersection.




And now you move the point back where the way you came...
path
{
    stroke: rgb(150, 150, 150);
    stroke-width: 3;
    d: path("M 400 312 a 270 190 0 0 0 0 -223 a 0 0 0 0 0 0 223 Z");
}


And curve it exactly the same way.
path
{
    stroke: rgb(150, 150, 150);
    stroke-width: 3;
    d: path("M 400 312 a 270 190 0 0 0 0 -223 a 270 190 0 0 0 0 223 Z");
}


And now you've filled up the entire thing!




Now we need two more of these. One will be a translucent blue-green, and one will be a translucent deep purple.
<path fill="rgba(100, 100, 0, 0.2)"/>
<path fill="rgba(0, 100, 100, 0.2)"/>
<path fill="rgba(100, 0, 100, 0.2)"/>


That area has gotten so dark because there are now three overlapping paths on that same spot.




We will the g tag to encapsulate the first circle.
<path fill="rgba(100, 100, 0, 0.2)"/>

<g>
    <path fill="rgba(0, 100, 100, 0.2)"/>
</g>

<path fill="rgba(100, 0, 100, 0.2)"/>


Here, we translate the second path towards the right and a few pixels down.
<g transform="translate(97 4)">
    <path fill="rgba(0, 100, 100, 0.2)"/>
</g>


You can see the very translucent blue-green path now that it's been shifted out.




Here, I nest the g tag encapsulation, and do a rotation 120 degrees around the point (352, 228). For the first number, I take roughly half of 97 and subtract it from the midpoint, 400. So it's like (97 / 2 = 48) (not exactly, but close), then (400 - 48 = 352). I arrived at the second number through a bit of trial and error, and a lot of adjustment.
<g transform="translate(97 4)">
    <g transform="rotate(120 352 228)">
        <path fill="rgba(0, 100, 100, 0.2)"/>
    </g>
</g>


You see the idea!




Next, of course, we do the last path tag. The transformations are horizontally the exact opposite.
<path fill="rgba(100, 100, 0, 0.2)"/>

<g transform="translate(97 4)">
    <g transform="rotate(120 352 228)">
        <path fill="rgba(0, 100, 100, 0.2)"/>
    </g>
</g>

<g transform="translate(-97 4)">
    <g transform="rotate(-120 448 228)">

        <path fill="rgba(100, 0, 100, 0.2)"/>
    </g>
</g>


There you go, the contrast is more pronounced now! And if you feel like changing the colors, you have more control.



 

Back to text!

I met someone online recently by the handle of "makanprayaloha", and I want to use that handle in this Venn Diagram. The handle is made up of three parts. First, "makan", which is the Malay word for "eat". Second is "pray", which is hopefully self-explanatory. And last is "aloha" which apparently means "love" in Hawaiian (I dunno, "aloha" seems to be the go-to word for everything in Hawaii). So in totality, the entire thing means "eat, pray, love".

We will style text this way in the SVG. The text-anchor property is set to middle so that no matter where you place the location, the text just uses that as its center point. The rest of it is visual and not all that relevant.
<style>
    svg
    {
        width: 800px;
        height: 550px;
        outline: 1px solid red;
    }

    circle
    {
        stroke: rgb(150, 150, 150);
        stroke-width: 3;
        r: 150;
    }

    path
    {
        stroke: rgb(150, 150, 150);
        stroke-width: 0;
        d: path("M 400 312 a 270 190 0 0 0 0 -223 a 270 190 0 0 0 0 223 Z");
    }

    text
    {
        font: bold 15px sans-serif;
        fill: rgba(255, 255, 255, 0.8);
        text-anchor: middle;
    }

</style>


So we first put text in the circles. We should adjust the x and y attributes as desired.
<circle cx="300" cy="200" fill="rgba(255, 0, 0, 0.5)"/>
<circle cx="500" cy="200" fill="rgba(0, 255, 0, 0.5)"/>
<circle cx="400" cy="372" fill="rgba(0, 0, 255, 0.5)"/>

<path fill="rgba(100, 100, 0, 0.2)"/>

<g transform="translate(97 4)">
    <g transform="rotate(120 352 228)">
        <path fill="rgba(0, 100, 100, 0.2)"/>
    </g>
</g>

<g transform="translate(-97 4)">
    <g transform="rotate(-120 448 228)">
        <path fill="rgba(100, 0, 100, 0.2)"/>
    </g>
</g>

<text x="270" y="200">MAKAN</text>
<text x="530" y="200">PRAY</text>
<text x="400" y="402">ALOHA</text>


Simple right?




Here's what is not so simple - what if the text spans multiple lines? We are going to put text in the intersecting areas, and as you may have noticed, they're kind of small. We could make the text smaller, but that's an unsustainable solution. So we use tspan tags! For the text, we have "SAY GRACE", "LOVE FOOD" and LOVE GOD". The words are supposed to b on separate lines.
<text x="270" y="200">MAKAN</text>
<text x="530" y="200">PRAY</text>
<text x="400" y="402">ALOHA</text>

<text x="400" y="170">
    <tspan>SAY</tspan>
    <tspan>GRACE</tspan>
</text>

<text x="335" y="301">
    <tspan>LOVE</tspan>
    <tspan>FOOD</tspan>
</text>

<text x="465" y="301">
    <tspan>LOVE</tspan>
    <tspan>GOD</tspan>
</text>


Since we didn't specify anything else, even enclosed in tspan tags, the text still functions as though there were no tspan tags. Looks cramped, right?




The x attributes should mirror the x attributes of the parent.
<text x="400" y="170">
    <tspan x="400">SAY</tspan>
    <tspan x="400">GRACE</tspan>
</text>

<text x="335" y="301">
    <tspan x="335">LOVE</tspan>
    <tspan x="335">FOOD</tspan>
</text>

<text x="465" y="301">
    <tspan x="465">LOVE</tspan>
    <tspan x="465">GOD</tspan>
</text>


The dx attribute for all of these is 0, which means the tspan text does not move relative to the text tag. But in the second line of each text tag, the dy attribute is 15, which means the text moves 1 pixels downwards from the y attribute of the previous line.
<text x="400" y="170">
    <tspan x="400" dx="0" dy="0">SAY</tspan>
    <tspan x="400" dx="0" dy="15">GRACE</tspan>
</text>

<text x="335" y="301">
    <tspan x="335" dx="0" dy="0">LOVE</tspan>
    <tspan x="335" dx="0" dy="15">FOOD</tspan>
</text>

<text x="465" y="301">
    <tspan x="465" dx="0" dy="0">LOVE</tspan>
    <tspan x="465" dx="0" dy="15">GOD</tspan>
</text>


Falling into place!




Now for the last one, we have three lines. Again, the second and third lines have the dy attribute set to 15, because they're 15 pixels vertically from the previous line.
<text x="400" y="170">
    <tspan x="400" dx="0" dy="0">SAY</tspan>
    <tspan x="400" dx="0" dy="15">GRACE</tspan>
</text>

<text x="335" y="301">
    <tspan x="335" dx="0" dy="0">LOVE</tspan>
    <tspan x="335" dx="0" dy="15">FOOD</tspan>
</text>

<text x="465" y="301">
    <tspan x="465" dx="0" dy="0">LOVE</tspan>
    <tspan x="465" dx="0" dy="15">GOD</tspan>
</text>

<text x="400" y="243">
    <tspan x="400" dx="0" dy="0">MAKAN</tspan>
    <tspan x="400" dx="0" dy="15">PRAY</tspan>
    <tspan x="400" dx="0" dy="15">ALOHA</tspan>
</text>


And here's your text!




Some cleanup. Remove the red outline and set the stroke-width properties of circles and paths to 0.
svg
{
    width: 800px;
    height: 550px;
    outline: 0px solid red;
}

circle
{
    stroke: rgb(150, 150, 150);
    stroke-width: 0;
    r: 150;
}

path
{
    stroke: rgb(150, 150, 150);
    stroke-width: 0;
    d: path("M 400 312 a 270 190 0 0 0 0 -223 a 270 190 0 0 0 0 223 Z");
}


Finally...




Be ad-Venn-turous!
T___T

Sunday 16 April 2023

Do Not Confuse Data With Information

There are two terms that are often erroneously interchanged - data and information. To the layperson, they may sound like the same thing and indeed, they are synonyms in the Thesaurus; however, I submit that they should not be confused with each other even to a layperson. Especially to a layperson.

What is the main difference? In a word, context.

Information is made up of different pieces of data that form a coherent whole. Data, therefore, is information that has no context. It is simply text, numbers, dates and even images and audio clips, few of which make any sense on their own. For data to become useful information, often it has to be sorted, arranged and recalculated, and even paired with other data.

Data center.

This is why a data center is not known as an information center. The contents of a data center's servers are data, not information. It has not yet been processed; it has merely been stored.

This is why an information counter is not known as a data counter. Data counters are vastly different things; consider a data counter on your mobile phone to show you how much data you have used for this month. But an information counter is, literally, a counter on which one obtains information.

Adding significance to data

Let's say I have some data. "My wife's birthday is on 16th April." When I see this, my first response would be to say - so what? Why is this a big deal? Pfft, that's just a day and month, I even know the year she was born.

Birthday girl.

But... what if the next piece of data was "Today's date is 11th April."? Again, that's just today's date. On its own, it is hardly significant.

However, when you put these two pieces of data together, there's context. It has become information. And the information is that my wife's birthday is in five days! The provided context now has important implications. Now the data is significant.

Editor's Note: Yes, I'm writing a blogpost about Data Analytics on my wife's birthday. Talk about having a death wish.

Adding depth to data

Let us use a soccer example this time. Say, "Mohamed Salah has scored a total of 44 goals in the 2018 / 2019 season." OK, that sounds impressive already on its own. But this has no context.

What if I was to add in a few more statements?

"The last player to score 44 goals in one season was Christiano Ronaldo, in the 2008 / 2009 season."
"The next highest scorer this season was Harry Kane, with 22 goals."

Goal!

Now we have context. Firstly, the last time this record was equaled was ten years ago. Secondly, no other player in the 2018 / 2019 season even came close, with the next highest score half of this! This helps to provide understanding of exactly why 44 goals in that season was such a great feat. We establish that it is not something that gets achieved frequently.

Editor's Note: These are not actual statistics.

Possibly changing a conclusion

My dearly departed grandmother once said that I am "her favorite grandson". Statistically, that means I rank Numero Uno out of all the grandchildren she had. All well and good, right?

Grandmas are great.

So let's add in another bit of data. How many grandsons did my grandmother have?

One. Me, obviously.

Well, shit, of course that would make me Number One in the popularity rankings by default. Because there is no Number Two! This could turn into a conversation on how a decent sample size is required for meaningful statistical analysis, but my point is - context was added and this changed the conclusion that was inferred by one singular piece of data.

Finally

Data can be misleading or incomplete if presented on their own. Often, other data is required to provide context, and convert data into actual, actionable information. The examples presented were actually pretty simplistic. This was meant for simple illustration, but I trust they proved my point adequately!

For your data information,
T___T

Tuesday 11 April 2023

TikTok Congressional Hearing: The Good, The Bad and The Ugly (Part 3/3)

Now we go onto the ugly! Not literally ugly, even though some of these faces won't be winning beauty pageants anytime soon. No, this section is reserved for the truly astounding levels of either ignorance or bad behavior.

The Ugly


Kat Cammack

Kat Cammack of Florida is the quintessential occupant of this section. There have been other members of Congress, such as Richard Hudson, that were, in my opinion, unfairly raked over the coals of Social Media. Cammack was not one of them. She was belligerent beyond the point of necessity, interrupted constantly, and as she kept talking, I wondered - who the fuck let this Karen in here?!

There was also this segment where she threw out accusations and as Chew Shou Zi tried to answer, she kept talking over him, answering her own question with "Yes. Yes. Yes." I detest these theatrics, and Cammack really piled it on.

"You damn well know that you cannot protect the data and security of this committee or the 150 million users of your app because it is an extension of the CCP."


Also, and I realize that this is completely subjective, her face and constant finger-wagging annoyed me. This lady did not need to be here. She needed to be in a McDonalds somewhere chomping on a cheeseburger and demanding to see the Manager.

Gus Bilirakis

Gus Bilirakis of Florida (what is it with Florida?!) is another deserved inclusion in this section. He spoke with a slur and I was almost convinced that he was going to slip into a coma at some point. Like some others before him, he kept droning on and insisting on "Yes or no?" even as Chew Shou Zi tried to give detailed answers. Not only was this guy insanely annoying, he was useless, which is arguably worse, and came across as supremely sanctimonious as he detailed the case of Chase Naska, a teen suicide.

"Your technology is literally leading to death."


No Mr Bilirakis, your school shootings are doing a much better job of that.

Bill Johnson

Bill Johnson of Ohio was a surprise inclusion into this category. The moment he introduced himself as an I.T professional, I was pre-conditioned to receive him positively. Unfortunately, he did himself absolutely no favors with his particular brand of douchebaggery.

"You've been evasive in many of your answers. I'm going to talk to you in some language that maybe you'll better understand - ones and zeros."


Like wow, Johnson really took the term "condescending asshole" to a whole new level there. Chew only appears evasive because your fellow idiots are asking for "yes or no" answers when he's trying to give detailed ones. Something which I'm now sure is deliberate. Well played.

"Here's the truth. In a million lines of code, the smallest shift from a zero to a one on just one of thousands of versions of TikTok on the market, will unlock explicit CCP censorship and access to American data."


Here's the truth. Johnson is a know-nothing masquerading as a know-something, and I'm sick of his bullshit.

Did this guy say he'd been in I.T most of his life? How in the ever-loving fuck does a shift from a zero to a one, accomplish that much? That could certainly work if it was just a configuration object, but the code to do what he claims, would actually have to exist in the first place. This guy talked about code like he'd never written a line of code in his life. Seeing as it's a Federal crime to lie during Congress (or so they kept reminding us ad nauseam) he could be one of those guys who think they know shit just because they own a tech company or two, and have never been in the metaphorical foxholes like us grunts. I've certainly encountered plenty of those.

"...can byte code be manipulated? We’ve talked a lot about source code. What about the byte code? The ones and zeros that actually execute on the device?"


Even assuming this was true, what could be gained from asking this? Would the CEO of a tech company necessarily know this? The CEO, not the CTO. And even if he could answer the question, how many others at the hearing or the audience would understand? This was performative politics, nothing more. At some point Chew was even seen smiling as if to say, wow, this guy. I think Bill Johnson would benefit greatly from observing Jay Obernolte from the "Good" section. Take note, Mr Johnson - this is what a real tech professional should sound like. This is what you might sound like with some genuine expertise and a lot less hot air.

Earl Carter

I wanted badly to like Earl "Buddy" Carter of Georgia. With his thick accent and his jovial demeanor, he exuded a certain Southern charm. But to be fair to the others, he unequivocally belongs in this section due to some of the astonishingly clownish things he uttered.

For example, he was questioning why the American version of TikTok had dangerous challenges while Douyin didn't.
"Do you know whether they have these kind of challenges like this over in China? Because it's my understanding they don't,"


And when Chew said no, he wasn't sure if Douyin did, Carter went:
"And, and you don't look at any of your other competitors or look at anything similar to yours."


Chew had already mentioned that Douyin is used in China, and TikTok is used outside of China. They're not competitors because they have to exist mutually exclusive of each other. They do not operate in the same market segment. This would be like calling Weibo a competitor of Facebook. There was no reason for Chew to be checking Douyin out at all. Was Carter taking the piss, or just dense?

There's also that back-and-forth where Carter badgered Chew about pupil dilation or some shit like that, but at that point, I was convinced I was listening to the ravings of someone either drunk or stupid. Perhaps both.

Chew was starting to explain how TikTok determines the age of their users.
"We rely on age gating as our key age assurance. Age gating, which is when you ask the user what age they are, we have also developed some tools where we look at the public profile to go through the videos that the post..."


And Carter was like,
"Well that's creepy. Tell me more about that."


What's creepy about going through a public profile?! Can I suggest that Carter hire an entire audit team to check the stuff that comes out of his mouth? Because this guy is a bona fide liability.

Entertainment value aside, Carter was a complete waste of the time spent listening to his drivel. I'm firmly convinced that while he's a likeable guy due to the informal and buddy-buddy way he talks, someone like him does not belong in Congress, for the same reasons someone like me does not.

Debbie Lasko

Around the four hour mark of this hearing, we got some more posturing from Debbie Lesko of Arizona.

"Mr. Chew, do you agree that the Chinese government has persecuted the Uyghur population?"


I'm frankly perplexed that anyone thought this was anything but irrelevant. Would it have mattered if Chew had said yes? Would it have mattered if he said he believes in Santa Claus or Jesus Christ? I know what Lesko was trying to prove, but Chew was not going talk shit about any government, never mind the Chinese government. Hell, there was so much shit he could have said about the USA government (and a lot of it would absolutely be relevant in this hearing), but he held back!

Aside from that, Lesko also performed the tactic that many of these politicians seem so fond of - interrupting, talking over, and badgering. So performative. So puerile. In other words, she earned her place in this section.

August Pfluger

I have no words to describe what a tool August Pfluger of Texas  was during his time.

"Does TikTok support genocide?"


Like, this has to take the prize for useless questions. Aside from that, he was argumentative and full-on spoiling for a fight. And at the end of the exchange, he had this to say in reference to Project Texas.
"Please rename your project. Texas is not the appropriate name. We stand for freedom and transparency, and we don't want your project."


Guy probably thought this was a mic drop. If I could roll my eyes any harder, they'd be doing a Neymar Jr. I even saw Chew Shou Zi crack a smile at this. Pfluger, if you're under the impression that you're witty, no, you really aren't. If it's any consolation, you are pretty comical. Unfortunately for you, American Congress is not the place. Or maybe it is, I can't tell anymore at this point.

Morgan Griffith

Morgan Griffith of Virginia. Whoo boy, this guy. Originally, I was feeling charitable and put him in the "Bad" section, but as his five minutes wore on, his theatrics got worse and worse. He kept badgering Chew Shou Zi to tell him the political affiliations of his employees.

Sir, I thought it was illegal to ask your employees what their political affiliations are, being that this is the USA, the land of the free and all that. Dude was grasping so hard, it was just sad.


Will TikTok be banned?

That's not a question I feel equipped to answer. A better question would be: do I give a shit? No, I really don't.

TikTok is installed on my phone, yes. But I can't remember the last time I used it, much less surrendered an entire hour to it. Sure, a whole bunch of teenagers will lose their favorite toy, and several people who currently make a living off it will have to go out and (gasp!) get jobs. Would it really be so terrible if there were a few (or several) less Social Media influencers in this world? Not from where I sit.

So, no. I really have very little skin in the game, and thus I'm answering this as objectively as humanly possible.

Let's face it - if Tiktok does get banned, people are not going to stop being trash on Social Media. They're just going to flock to other platforms and be trash there. Maybe that was the entire point of the exercise, eh? I mean, if the concern was data getting mined and sold, the problem would be a lot bigger than TikTok. If the concern was objectionable content, there's a whole lot of it elsewhere as well. So maybe the real concern is that American-made Social Media platforms just don't want the competition.

Is it possible that China really is using TikTok as a tool for espionage or propaganda? Sure, anything's possible. I may even go so far as to say it's probable. Is a TikTok ban going to help? I'd say that ship has sailed, wouldn't you?

Finally...

Firstly, some acknowledgements are in order. I referenced this link extensively so I could copy-paste rather than manually transcribe. Though there were parts where the transcript was off, it's nevertheless saved me a lot of labor and it's much appreciated.

Secondly, I understand that my comments may be hurtful and sound unprofessional. I suspect the American politicians who got roasted here will sleep just fine; I'm neither an American citizen and have no voting rights, nor do I have millions of Followers that I can influence in the USA. In other words, like a lot of people, I'm a complete non-entity with an opinion, or several.

Lastly, this was my first time watching American Congress. Not impressed.

What a Shoudown!
T___T

Sunday 9 April 2023

TikTok Congressional Hearing: The Good, The Bad and The Ugly (Part 2/3)

The next section focuses on the congressmen and congresswomen who could have done better. Some of them had a good idea but flubbed the implementation. These are the ones that didn't exactly cover themselves in glory. They were bad, yes, though not to excruciating levels - that's for the "Ugly" section.

I'm not going to hit below the belt and base this on pronounciation, even though it was painful to hear them mangle Chew Shou Zi's name, or the names of Douyin, or Zhang Fuping, or even TikTok. Let's give a little grace. Despite the USA's reputation as a melting pot of cultures and races, roughly 80% of Americans speak only English, and some don't even speak it that well. Thus, expecting them not to slip up is grossly unfair.

Besides, we have more substantial things to focus on.

The Bad


Cathy McMorris Rodgers

The Chair, Cathy McMorris Rodgers, definitely qualifies for this one. Right off the bat, she set the tone for some heavy-handed hypocrisy with this...
"I do want to remind the guest in the audience that the chair is obliged under the house rules and the rules of the committee to maintain order and preserve decorum in the committee room. I know that we have deep feelings on these issues and that we all may not agree on everything, but I ask that we abide by these rules and be respectful of our audience members, our viewers, and our witnesses."


...and then this.
"Your platform should be banned. I expect today you'll say anything to avoid this outcome. Like you are 100% responsible for what TikTok does, that you suddenly endorse a national data privacy standard. That Project Texas is more than a marketing scheme, that TikTok doesn't harm our innocent children, or that your ties to the Chinese Communist Party through ByteDance is just a myth. We aren't buying it."


That was not only disrespectful to the witness, more importantly, it was  unprofessional. Talk about playing to the gallery. I'd expected better from American Congress. Maybe I shouldn't have.

"Can you say with 100% certainty, that ByteDance, the CCP cannot use your company or its divisions making content to promote pro CCP messages for an act of aggression against Taiwan?"


"The question is, are you 100% certain that they cannot use your company to promote such messages?"


"I wanted to hear you say with 100% certainty that neither ByteDance nor TikTok employees can target other Americans with similar surveillance techniques as you did with the journalists."


You don't need to have technical know-how to understand that in any system run or used by human beings or by algorithms created by human beings, "100% certainty" is a statistical impossibility. Thus, answering a question like this basically forces the answerer to lie or say "no". This was not stupid; it was malicious. The only reason why this lady is not in the "Ugly" section is because I acknowledge that unlike many of the speakers, she had an tricky job to do as Chair, and thus I'm going to cut her a little slack.

Bob Latta

Bob Latta of Ohio started out OK, but at some point he got ridiculous, repeatedly pushing "yes or no" despite the complexity of the questions he posed, kept interrupting like a petulant child. He gave me the impression that he was entirely superfluous to this hearing. Like, what value did he really provide to the hearing? He seemed to have already made up his mind; why was he even here?

"It's impossible for me to conclude that the video is anything different than the type of propaganda the CCP requires Chinese companies to push on its citizens..."


Sir, it's impossible for me to conclude that you're anything but a waste of the last five minutes. I'm gonna move on.

Richard Hudson

Sad to say, Richard Hudson of North Carolina belongs in this section even though most of the internet might opine that he belongs in the "Ugly" section. The clips of him asking Chew Shou Zi about whether TikTok can connect to his WiFi have gone viral and he's been the target of much derision.

But here's the thing - while his question might have come off as moronic clumsily phrased, I believe he had a larger point to make about TikTok potentially being able to access other device in the network. While that's certainly possible, that is also currently in the realm of science fiction. If this is a real and present danger; forget TikTok, shut down your entire goddamn internet.

To be fair, that segment aside, he was serious as a heart attack and didn't resort to theatrics. This was professional, no matter what you think of the WiFi question. I don't think he deserves to be in this section with the likes of, say, Bob Latta; alas, there are only three categories.

Brett Guthrie

Brett Guthrie of Kentucky is included here not because of his behavior. He conducted himself properly. By my standards anyway, which sadly seem to be higher than those of American Congress. However, he slipped up by constantly harping on how different the content is between China (Douyin) and the USA (TikTok). Even when Chew Shou Zi tried to let him off the hook by gently suggesting that this was a less meaningful comparison than against other Social Media platforms in the USA, he insisted on walking right into it.

"What's the difference? I'm sorry, I'm out of time, but what's the difference in China? And here?"


And Chew finally just let him have it.
"Let me give you an example, Congressman. In my home country, Singapore, there is almost no illegal drug content because Singapore has very strict drug laws."


Wow, the sheer shade. Brett Guthrie moved on pretty quickly from that one. Yeah, you better run.

Mr Guthrie, content on Social Media is a reflection of the laws of the land. If drug content is not present in China and Singapore, that is because these countries have no tolerance for that content. It's not that TikTok needs to do better (although they certainly do), but that America herself needs to do better.

Tim Walberg

Tim Walberg of Michigan's main questions were about data access by the CCP. It was hard to follow this conversation. This dude was giving off the impression he barely understood English, much less tech or business. Waste of five minutes, moving on.

Gary Palmer

Gary Palmer of Alabama. Tried to shut down Chew multiple times with the tired old "yes or no", and failed quite amusingly. Blustery, pompous and a real windbag. I would have put him in the "Ugly" section, but he didn't merit even that much recognition.

Greg Pence

Greg Pence of Indiana did the whole "old man shaking his fist at technology" routine and frankly it was funny AF.

"...this is the 32nd hearing we have held about privacy and big tech. Each hearing I've been part of, we've heard the same stories about our constituents' experience, and the same promises for big tech to do better."


Did this dude just whine about doing his job on National Television? The only thing this tells me is that if so many hearings have gone by and nothing has been done, some people just aren't doing their jobs. If this was supposed to convince me that it's all TikTok's fault, it sure wasn't very successful.

Troy Balderson

Troy Balderson of Ohio was not especially pugnacious, and I do feel a little bad about having to put him in this section with some of these losers, but some things he said bothered me strongly on a logical level.

"Can you explain to parents back in my congressional district why it should be their burden and not to set up that guardian parental controls for their children so that they do not view content, which is encourages eating disorders or committing suicide?"


Now, I'm not a parent. Partially because I recognize that it's a lot of work. But this should be a no-brainer - Social Media is not anyone's parent, let alone TikTok. Therefore it is not the job of Social Media to filter objectionable content from the young. It is the job of parents.

Russ Fulcher

Russ Fulcher
of Idaho just made a five-minute speech and asked zero questions. Like, seriously, dude.

"And the whatever is what bothers me. And I'll use myself as an example again, if for whatever reason I became a target in this, I became somebody you didn't like. And I know that'd be hard to believe cuz you gotta like me. But let's say you didn't or a company didn't, or for whatever reason I became an app, app target, that artificial intelligence algorithm could be shared or spread selectively to a targeted audience that with negative information that maybe they has been paired up with that knowledge and that app to make me look really, really bad."


Tried to slip a joke in there somewhere. I appreciate that. What I didn't appreciate was that five-minute speech he could have given literally anywhere else but a hearing that was set up to elicit information from Chew Shou Zi. Fail!

The following are those who were both combative and useless. A potent combination, though not quite enough to bump them to the "Ugly" section.

Neal Dunn of Florida.
John Joyce of Pennsylvania.
Raul Ruiz of California

The following are reluctant additions into this section. They tended to be inflammatory though not over-the-top rude. Again, I didn't necessarily disagree with anything they said; that's not why they're here. They're mostly here because I don't think they raised any interesting points. At worst, their presence did not strike me as being particularly useful.

Paul Tonko of New York
Tony Cárdenas of California
Marc Veasey of Texas
Randy Weber of Texas
Angie Craig of Minnesota
Rick Allen of Georgia
Diana Harshbarger of Tenessee
Jeff Duncan of South Carolina

Now do bear in mind that these aren't always outright condemnations. Some of them were just very middle-of-the-road and it didn't feel fair to place them in the "Good" or "Ugly" section. As such, I've generally tried to be very restrained in my criticism. I haven't started getting savage yet.

Next

The Ugly