Search This Blog

Saturday, November 28, 2020

Building OSX Julia Command Line Executables

I have been wanting to use Julia (I am using version 1.5.3 installed in /Applications) for some time.  I primarily develop on Mac OSX (I run Mojave 10.14.6) and needed to convert some interpreted code I was developing into a command line executable.

About the closest description of what I needed to do came from this ("Vangelis") and this ("Part 2").

Julia is an JIT/REPL/world language.  By "world" I mean that it's like Smalltalk or LISP: you have a garbage-collected "world" in which everything occurs and gets saved.  There are a variety of tools like Atom/JUNO that make development quite efficient and easy which is why I want to use it (as well as for its data capabilities).

Vangelis was a persistent bastard - it took him almost four months to figure it out.  Unfortunately his work didn't occur on OSX so the instructions didn't quite work.  Similarly with "Part 2" - it almost works but not quite.

Here's what you need to know to do this:

Given Julia's JIT/REPL/world model you have to understand that in order to build a command line (or App under OSX for that matter) you are essentially merging your code into the "world," creating an alternate "entry point" to launch your code, and adding a "glue" .c file to bring everything together.

First you need to (obviously) have Julia and a C-compiler (in my case Clang) installed.

You then build your Julia "module."  It should be structured more or less as follows:

module startup
...
using CSV
using LinearAlgebra
using DelimitedFiles
...
export real_main
export julia_main
...
function real_main()
... your code goes here ...
end
...
Base.@ccallable function julia_main()::Cint
    try
        startup.real_main()
    catch
        Base.invokelatest(Base.display_error, Base.catch_stack())
        return 1    
    end
    return 0
end
...
if abspath(PROGRAM_FILE) == @__FILE__
    julia_main()
end
...
end # startup

Let's call this "startup.jl".  (You can add argv and so on once it's all working.)

Next you need to process this file to extract what is essentially the list of Julia "packages" and internal stuff you will need in your "stand alone" executable. You do this with the Julia command line option "--trace-compile" as follows:

# this executes startup.jl - the --trace-compile saves Julia
# information in app_precompile.jl
#
julia --startup-file=no --trace-compile=app_precompile.jl startup.jl

Julia scans "startup.jl" and builds a list of "precompilations" needed to make your module work.  After this app_precompile.jl will be written to you disk.

Next you need a custom "custom_sysimage.jl" file to cause the precompilations to occur as well as to bring your module in.  Julia is based on dynamic libraries so the goal here is to create a new dynamic library containing your code that can be "built" into your command line app.

The first step is running "custom_sysimage.jl" to build a static library.

This file looks like this:

Base.reinit_stdio() # allows console debug on crash/fail
Base.init_depot_path()
Base.init_load_path()

# the following 2 lines is to tell system image that startup.jl
# shall be included in Main scope. The trick is that you need
# this to cause the elements in the .jl to appear at the "top"
# scope level.  If this is not here your exported symbols will
# not appear in the .o or .o.dylib and the final link will fail.
#

include("startup.jl")

@eval Module() begin
    Base.include(@__MODULE__, "startup.jl")
    for (pkgid, mod) in Base.loaded_modules
        if !(pkgid.name in ("Main", "Core", "Base"))
             eval(@__MODULE__, :(const $(Symbol(mod)) = $mod))
        end
    end
    for statement in readlines("app_precompile.jl")
        try
            Base.include_string(@__MODULE__, statement)
        catch
            # See julia issue #28808
            Core.println("failed to compile statement: ", statement)
        end
    end
end # module

empty!(LOAD_PATH)
empty!(DEPOT_PATH)

To execute this use the following:

# custom_sysimage.jl loads the app_precompile.jl information about
# which packages are used AND to actually include("startup.jl")
# to cause the symbols to appear at the "top level" julia scope
# a sys.o is constructed containing compiled startup.jl code.
#
julia --project=./ --startup-file=no -J"/Applications/Julia-1.5.app/Contents/Resources/julia/lib/julia/sys.dylib" --output-o sys.o custom_sysimage.jl

This will create a static OSX library "sys.o".  The key things are the include("startup.jl") and the "--project=dir".  Vangelis was able to change paths and use a Julia "using" to access his module.  I couldn't get that to work because (I think) my module exists solely as a file in the current folder and isn't some kind of already known Julia package.  In any case your symbols you exported should appear in sys.o (check with "$ nm -gU sys.o").

This takes a while and a lot of meaningless crap comes out on the console.

Next use clang to make a .dylib.  The reason to use clang is the "-all_load" which is not supported on OSX gcc.  Each different platform has different ways to do this, e.g. "--whole-archive" but on the Mac I could only figure out how to get clang to work in this way.

# clang is used here (due to the availability of -all_load)
# to convert the sys.o to a dynamic library sys.o.dylib
# This is standard Mac OSX faire.
#

clang -fpic -shared -Wl,-all_load sys.o -L"/Applications/Julia-1.5.app/Contents/Resources/julia/lib/" -ljulia -o sys.o.dylib

The result is you app as a .dylib.  Next we need to build in Julia and its components.

Create
a .c wrapper to call your library (put this into "startup.c" let's ay):

// Standard headers
#include <string.h>
#include <stdint.h>

// Julia headers (for initialization and gc commands)
#include "uv.h"
#include "julia.h"

JULIA_DEFINE_FAST_TLS()

// Forward declare C prototype of the C entry point in your application
int julia_main();

int main(int argc, char *argv[])
{
    uv_setup_args(argc, argv);
    libsupport_init();
    // JULIAC_PROGRAM_LIBNAME defined on command-line for compilation
    jl_options.image_file = JULIAC_PROGRAM_LIBNAME;
    julia_init(JL_IMAGE_JULIA_HOME);

    // Initialize Core.ARGS with the full argv.
    jl_set_ARGS(argc, argv);
    // Set PROGRAM_FILE to argv[0].
    jl_set_global(jl_base_module,
    jl_symbol("PROGRAM_FILE"),
        (jl_value_t*)jl_cstr_to_string(argv[0]));

    // Set Base.ARGS to `String[ unsafe_string(argv[i]) for i = 1:argc ]`
    jl_array_t *ARGS = (jl_array_t*)
        jl_get_global(jl_base_module, jl_symbol("ARGS"));
    jl_array_grow_end(ARGS, argc - 1);

    for (int i = 1; i < argc; i++) {
        jl_value_t *s = (jl_value_t*)jl_cstr_to_string(argv[i]);
        jl_arrayset(ARGS, s, i - 1);
    }

    // call your work function entry point, and get back a value
    int ret = julia_main();
    // Cleanup and gracefully exit
    jl_atexit_hook(ret);
    return ret;
}

And finally use this command line to link things together:

clang -DJULIAC_PROGRAM_LIBNAME=\"sys.o.dylib\" -o startup startup.c sys.o.dylib -O2 -fPIE -I'/Applications/Julia-1.5.app/Contents/Resources/julia/include/julia' -L'/Applications/Julia-1.5.app/Contents/Resources/julia/lib' -ljulia -Wl,-rpath,'/Applications/Julia-1.5.app/Contents/Resources/julia/lib:$executable_path' -ljulia

If this succeeds you'll have your new command line app "startup".

Depending on your pathing either the -rpath will work (I couldn't get it too) or you'll need to define 

export DYLD_LIBRARY_PATH=/Applications/Julia-1.5.app/Contents/Resources/julia/lib

in the path when executing startup.

That's basically it.



Sunday, August 16, 2020

Wolf and Levine: Masks and Empty Bar Stools Before Starving Children

According to this August 16th, 2020 WSJ article (https://www.wsj.com/articles/more-americans-go-hungry-amid-coronavirus-pandemic-census-shows-11597570200) "As of late last month, about 12.1% of adults lived in households that didn’t have enough to eat at some point in the previous week, up from 9.8% in early May, Census figures show. And almost 20% of Americans with kids at home couldn’t afford to give their children enough food, up from almost 17% in early June."

At least one economist quoted in the article believes this is worse than the Great Recession (for those with a college education it started in September of 2008).  “It is clear to me that there is a big problem here, and the problem seems to be worse than it was at the height of the Great Recession,” said Diane Whitmore Schanzenbach, a Northwestern University economist.

From the article as to "why" children are starving:  "First, it can take a while for laid-off workers to begin receiving unemployment benefits. Getting enough food can be a challenge during that interval.

Second, some schools and child-care facilities that provided free meals are closed. Paying for those meals can be expensive, even for parents with jobs."



And, based on the 20% statistic underlined in the first paragraph, it would seem that the result of this is starving children - a lot of them: based on (https://www.infoplease.com/us/census/pennsylvania/demographic-statistics) about 26% of Pennsylvania's 12,281,05 people are 19 years old or younger: 3,254,479 children.

And 20% of these 3,254,479 children, so 650,000 plus or minus, don't get enough to eat as of August 2020 based on the above stats.

This is an every day thing, mind you - these children don't eat each and every day.

Yet our friend Tom Wolf (along with is cohort Rachel Levine) threatened the children back on July 15:  to wit (according to https://www.pennlive.com/news/2020/07/wolf-would-pull-the-plug-on-school-reopening-if-new-covid-surge-cant-be-stopped.html) "Gov. Tom Wolf said Wednesday he’s willing to “pull the plug” on school reopening if a new surge of COVID-19 infections continues to grow."

To be clear: many children eat only because of school and other food programs.

Also to be clear: cases are surging along (or perhaps in parallel) with testing, not deaths, not hospitalization.

So why is Tom Wolf taking work away from parents (hospitality industry forced to operation at 25% of capacity) and not "covering the nut" on their children's food bills?  (Actually according to https://www.bls.gov/eag/eag.pa.htm the industry represents around 600k jobs in PA - and it dropped to half that during the "lockdown.")

I would have thought the concept of "public health" would involve everybody (including "the children") in the state and not just those killed by Wolf and Levine putting Covid-infected patients in otherwise healthy nursing homes...?

(Are hospitals overrun? No.  Is care being rationed? No. Are people dying in the streets? No.)

According to PA's website (https://www.health.pa.gov/topics/disease/coronavirus/Pages/Cases.aspx) daily Covid-19 deaths hover around 15-20 a day (and have since June).

So the mask and bar thing are more important than people feeding their children?

That's the take away here.

So how does history spin this?

Take a look at what Cris Dush, a PA State Representative, had to say back in May of 2020 (https://www.pennlive.com/news/2020/05/pa-lawmaker-compares-gov-wolfs-handling-of-covid-19-crisis-to-socialist-playbook-used-in-nazi-germany-ussr.html): 

"State Rep. Cris Dush said Gov. Tom Wolf’s lack of transparency in his management of the coronavirus crisis resembles a page out of a “socialist playbook.”
...
“More and more I go back to the German Democratic Nationalist Socialist Party, the Nazi party. I go to the Union of Soviet Socialist Republics, the USSR,” Dush said. “This is a socialist playbook.”
...
Dush responded, “It’s a statement of history. It’s history. It’s history.”

Nazis, Mao, Stalin, etc. all had a hand in this sort of thing: Children are simply cannon fodder for the larger political aspirations of the "leader."

These are facts.

Uncomfortable facts.

Given substantial evidence (for example: https://www.primarydoctor.org/masks-not-effect?fbclid=IwAR2r8QsmWaWpduM4rvz24TlZTAjoMo4Nq2ftmES8KBEWP7fsFq3WjbqSQMM) that things like masks and lockdowns are of dubious value you have to wonder at the motivation here?


Though, of course, the posts themselves are criticized as "offensive to Jews" and so forth.  

Ironically those complaining seem to miss the point of what happens when those in charge are given free reign to control a population as they see fit...

There is, of course, a reason for the US Constitution (not that anyone with a college education would think it as anything but racist hog wash).

Doesn't it seem better to keep the infrastructure that supports children (jobs, schools) functioning rather than "punishing" some group for a "surge of COVID-19 infections"?

(As you hide at home all smug that you are saving people by wearing your mask in the bathroom remember this: you are starving children.)

Monday, July 27, 2020

The Covid: Mass Hysteria in Colorado

I became aware of this web page (https://covid19.colorado.gov/data/surveillance-data) recently.


It compares Covid diagnostics with flu and other types of Emergency visits in the state of Colorado.


You will notice that by March 28, 2020 the flu has vanished entirely from Colorado.


How is this possible?


In the past (over a decade ago) I wrote about the flu.  It’s quite well defined as a medical condition.


You can see for this link (http://just-got-lucky.blogspot.com/2010/11/flu-shots-and-magical-thinking.html and the linked CDC page: https://www.cdc.gov/flu/weekly/) that the flu is ever present.


Yet it (the flu, influenza) has vanished in Colorado…  apparently completely...


Recently I came upon this Wall Street Journal article: Suffering From Covid For Months—and Battling Murky Test Results Too (by Sumathi Reddy at: https://www.wsj.com/articles/suffering-from-covid-for-monthsand-battling-murky-test-results-too-11595865869).


This gist of it is simple: people suffer on and on with Covid-based “symptoms” though they have not received a positive Covid test.


Endless excuses are provided by doctors in the article about why this “might” be the case: various timing issues with antibody tests, lots of “belief” they have Covid on the part of both doctors and patients, and so on.


The truth is no one really knows.


(But obviously the tests don't work or there would at least be consistent results - which there aren't.)


Which brings us back to the chart I discussed initially.


“… by March 28, 2020 the flu has vanished entirely from Colorado.”


This is physically impossible.


So what other explanations might there be?


How about mass hysteria?


DID MASS HYSTERIA CAUSE 40 PUPILS TO FAINT AT A REMEMBRANCE SERVICE?


From https://www.independent.co.uk/life-style/health-and-families/features/did-mass-hysteria-cause-40-pupils-to-faint-at-a-remembrance-service-a6732426.html:


“In November 2012, more than 1,900 school children and five teachers across 15 schools in Sri Lanka were treated for skin rashes, vomiting, vertigo and cough, believed to be caused by mass hysteria. Meanwhile, in late 2011, 12 high school girls in New York developed Tourette-like symptoms, with several more students and an adult coming forward with similar symptoms.”


It seem fairly obvious that the flu didn’t just pack its bags and leave Colorado in March of 2020.


The evidence is plain for all to see.


Facebook, Google, Twitter, social media in general, the news and so on have created mass hysteria.


(Certainly people still get diseases and die, even in Colorado, but from what exactly?  Clearly not the flu in Colorado according to the chart.  Yet the flu kills tens of thousands every year.)


Covid seems irrational because it is.


What people think of as “Covid” is an idea, a meme.


They choose not to see the flu in Colorado so now they all die of Covid.


In fact, if you believe enough thinker bell lives you can never die from the flu.


Yet “tests” don’t work…


Just like at the Salem witch trials...

Saturday, June 6, 2020

How Facebook is Monitoring What You Do...

When you click on an "outside" URL in Facebook, for example this ad:


You will see this in the search bar where URL's appear in your browser (highlighted in BLUE):


The important part is this portion of the URL:

?fbclid=IwAR1xz5K7idy1FhzROVUmPPLThvUkrSPKEGce7uGH93a2RIxDWIeb7fArqow

This is a Facebook token that tells the site you are visiting, ReMarkable in this case, who and what you are.  Presumably Facebook get's paid for this.

The URL without the Facebook portion works fine by itself (https://techcrunch.com/2020/03/17/remarkables-redesigned-e-paper-tablet-is-more-powerful-and-more-papery/) - it just doesn't tell ReMarkable you came from Facebook.

If you try and get around this by right clicking the story and saying "copy link" you get a URL encrypted URL of the ReMarkable site that takes you through Facebook to the linked story:

https://l.facebook.com/l.php?u=https%3A%2F%2Ftechcrunch.com%2F2020%2F03%2F17%2Fremarkables-redesigned-e-paper-tablet-is-more-powerful-and-more-papery%2F%3Ffbclid%3DIwAR1sgpvYg7QtCOdrbHgKYsMeb1CE47puwY3MtRATty5DSdunBSMHEcG2yOo&h=AT1U1jSllxJA_o6yIUaGynH-TnJ0U1TQE8rsfj-YSiELNGPZPqSPhdROwo0u4yKyXky1VTya0qinr_1e0LaiCPuVpUuEU5of5AwBL5FxvTnbU8R3paqg07HSDg7_PO8R5Y6lmmt65UBoMysJDlTEMu6B&__tn__=H-R&c[0]=AT1KVli6XCIbsIvffER7UO0WGhqRaniOqcivCYCK7JBPkukTNJG4mm-x4-WzlwMQdMKcBBgTJJiZBabz5qhxVt0Puy8YD9rs28EfDS8RpWX2wrxuUvEsLBPG_ahQ99dP90eBVB2m52bl1-72IgrNStLON91SJerGIEIrnjXnFzKKFzsk8c7bkhJjH8xGtICAbnh6jZEyJ_1_uHeD6jw5tfEeMOdoSa4lPiVnZJj6zbl8lyowVVvci73xZF_RneSAD1cEaVjwjlu3rf2TxSkjtFBRxN42KCEla9TPZRpZL2ymUc3qFDEcnz2YOWGxuYgEkrw4hUJ9aSlMSpSdS3G640c

Of course this also tells Facebook what you are doing.

If you want to skip putting money in Facebook's pocket right click (or whatever for your browser or phone) and use the "Search Google" for the same topic:


Since Facebook and Google don't get along the ?fbclid portion of the URL is stripped off (cause presumably Google wants to get paid instead and the advertiser doesn't want to pay twice):

https://www.google.com/search?q=SOCIAL.TECHCRUNCH.COM+ReMarkable%E2%80%99s+redesigned+e-paper+tablet+is+more+powerful+and+more+papery+%E2%80%93+TechCrunch+It%27s+no+secret+I%27m+a+fan+of+the+reMarkable%2C+a+tablet+with+a+paper-like+display+that%27s+focused+on+text+and+sketching+rather+than+rich+media+and+games.+The+sequel+to+the+original%2C+announced+today%2C+looks+to+make+a+good+thing+even+better.&oq=SOCIAL.TECHCRUNCH.COM+ReMarkable%E2%80%99s+redesigned+e-paper+tablet+is+more+powerful+and+more+papery+%E2%80%93+TechCrunch+It%27s+no+secret+I%27m+a+fan+of+the+reMarkable%2C+a+tablet+with+a+paper-like+display+that%27s+focused+on+text+and+sketching+rather+than+rich+media+and+games.+The+sequel+to+the+original%2C+announced+today%2C+looks+to+make+a+good+thing+even+better.&aqs=chrome..69i57&sourceid=chrome&ie=UTF-8

So there you have it...

You are being tracked and helping Facebook do it.

For this blog I always remove the ?fbclid portion of a URL - and you should too...

Sunday, May 17, 2020

PA Brings "Dram Shop Law" to Nursing Homes

Pennsylvania establishments serving liquor are subject to "Dram Shop Law" (https://palawblog.stark-stark.com/2010/09/articles/personal-injury/pennsylvania-dram-shop-law/) - basically the idea is that if you server a "visibly intoxicated person" you, the waitstaff, owner, etc. is responsible after an accident regardless.

Wait, are the service people driving the car?

No.

How is this reasonable?

It's not.

It's a hand out to trial lawyers to get you and your insurance company to fund irresponsible behavior.

Lawyers have turned this into a tool to extract money from the misery of others an accident.

You, the bar owner, are never convicted under the "Dram Shop Law"- the responsible person (who drove the car) finds a lawyer and blames the bar owner who should have known the patron was intoxicated.

Note that someone with a .1 (PA is .08) comes in behaving normally - no visible symptoms - and is served on drink.  This person leaves and has an accident.  The last waitstaff/bar/restaurant to have served this individual is now responsible...

Now look what the Pennsylvania Attorney General is up to: "Pennsylvania AG Opens Criminal Probes Into Nursing Homes Long-term care facilities have struggled for months to contain the coronavirus" (https://www.nbcphiladelphia.com/news/coronavirus/pennsylvania-ag-opens-criminal-probes-into-nursing-homes/2394287/).



We KNOW that Levine and Wolf forced home to take Covid-19 ill patients.

And boom, just like a bar, now the home will be responsible for lack of testing, death, harm, etc.

Why would anyone want to run a nursing home or bar in Pennsylvania?

Why would anyone want to live where people who are not responsible have the behavior of those that are forced onto them?

Wake up!

Where will grandma go if all the nursing homes are forced go out of business?

It's not like anyone predict any of this: the nursing home owner could never have predicted this.

Will you, soccer mom, quit your job to take care of grandma?

The problems here are much, much larger than Wolf and Levine...

General lack of owning responsibility for your own actions is the problem here.

Mr. Attorney General needs to start with those responsible: Wolf and Levine.


Coronavirus: Georgia's Early ReOpening "Human Sacrifice?"

A few weeks ago I wrote how government and health care workers were responsible for Covid deaths (https://lwgat.blogspot.com/2020/04/coronavirus-real-angles-of-death.html).

About the same time this article appeared in "The Atlantic:" Georgia’s Experiment in Human Sacrifice - The state is about to find out how many people need to lose their lives to shore up the economy (link: https://www.theatlantic.com/health/archive/2020/04/why-georgia-reopening-coronavirus-pandemic/610882/)...



Human sacrifice...

(Remember this was published April 30, 2020 - probably reflecting information from a few days earlier.)

First let's look at the facts from Gerogia (snapshot from today): https://dph.georgia.gov/covid-19-daily-status-report (see "Deaths" under "Georgia Cases by County"):


As you can see there is a steep decline in death over the last few weeks indicating a distinct lack of "human sacrifice." (Note recent cases are dimmed due to confirmation - these are estimates based on death reports not given time to "settle.")

Modeling (from Dr. Frank Models on Facebook) indicates the same:


A bit further down on Georgia's page we see "Demographics" - if you select the "Healthcare Workers" tab you will find this chart:


So these are confirmed "Covid" cases by people working in health care.

What do you see?

The cases have been reduced to near zero, and well ahead of the "general population" cases.

If over-all Covid cases in the general population were driving the "Healthcare Workers" infection rate we should see it continue to rise.  (Pick March 16th, for example, where both general population and healthcare worker rates are rising, comparing we see a vast decline in May in health care infection rates even though over all cases are much higher.)

We see Covid declining.

We also know anecdotally that some 10% of Georgia's healthcare workers have Covid (for example: https://www.wabe.org/10-of-confirmed-covid-19-cases-in-georgia-are-among-health-care-workers/).  This is probably low because there is no reason to test people that appear to be healthy.

(As compared to Pennsylvania nursing home cases make up a much lower percentage of cases in Georgia, perhaps 25% according to this : https://www.13wmaz.com/article/news/health/coronavirus/assisted-living-facilities-make-up-big-portion-of-central-georgia-virus-cases/93-cf15b72e-068d-40a7-98e5-0a122948c5a0)

So if general population is not driving the healthcare worker rates perhaps it's the other way around:  Healthcare workers were driving the cases in the general population. It would seem that as Georgia figured this out and pushed down the infection rate of their healthcare worker population the case load in the general population declines.

If the healthcare workers were "just like" the general population we would expect their caseload to decline in sync.  But it doesn't.  It declines faster.

This "human sacrifice"nonsense is total, utter idiocy!

You'll die if you are older, have comorbidity factors and in close contact with someone who has it, like a healthcare worker.

If states like Pennsylvania had any notion at all of "real science" it would see the same thing.

Thursday, May 14, 2020

Nursing Home Democide in PA and NY

Democide (https://en.wikipedia.org/wiki/Democide) is a term proposed by R. J. Rummel since at least 1994[1] who defined it as "the intentional killing of an unarmed or disarmed person by government agents acting in their authoritative capacity and pursuant to government policy or high command."

Here in Pennsylvania we see this story: Police: New Kensington mother left son, 3, in care of abusive boyfriend charged with killing him (https://triblive.com/local/valley-news-dispatch/police-new-kensington-mother-left-son-3-in-care-of-abusive-boyfriend-charged-with-killing-him/) "Police charged the boy’s mother, Teresa Lynn Fetterman, 23, on Wednesday with involuntary manslaughter and other offenses. She was charged less than a week after police charged Keith Dale Lilly Jr., 31, with homicide following the boy’s death. Both were being held Wednesday in the Westmoreland County Prison."

So let's play a word game...

Let's change these words:

"New Kensington mother" => "Governor Tom Wolf and Rachel Levine"
(https://justthenews.com/politics-policy/coronavirus/pa-forced-nursing-homes-take-covid-patients-health-secretarys-mother)

"New Kensington mother" => "Governor Andrew Cuomo and Howard Zucker"
(https://www.wsj.com/articles/new-york-sent-recovering-coronavirus-patients-to-nursing-homes-it-was-a-fatal-error-11589470773)

"left" = "ordered"
("ordered" when coming form a state official)

"son, 3" = "elderly nursing home patients"

"abusive boyfriend" => "facilities unable to handle, ill prepared for Covid-19"

So if Ms. Fetterman is a criminal, why aren't Wolf, Cuomo, Zucker and Levine?

Clearly if they were disadvantaged in some way they would be guilty...

Maybe it's time to call the FBI.

Sure sounds like Democide, Mass Murder, Crimes Against Humanity or Genocide to me?