[ / / / / / / / / / / / / / ] [ dir / asmr / aus / cyoa / leftpol / russian / tijuana / vore / zoo ][Options][ watchlist ]

/tech/ - Technology

You can now write text to your AI-generated image at https://aiproto.com It is currently free to use for Proto members.
Name
Email
Subject
Comment *
File
Select/drop/paste files here
* = required field[▶ Show post options & limits]
Confused? See the FAQ.
Expand all images

File (hide): fdfc4ad9a9c9508⋯.jpg (54.62 KB, 499x396, 499:396, tech and g.jpg) (h) (u)

File (hide): 960d4d890e61e19⋯.jpg (100.82 KB, 3068x506, 1534:253, DMl6upAW0AA7_u0.jpg) (h) (u)

[–]

 No.809021>>809023 >>809026 >>814907 [Watch Thread][Show All Posts]

>A federal judge this week unsealed the source code for a software program developed by New York City’s crime lab, exposing to public scrutiny a disputed technique for analyzing complex DNA evidence.

>Judge Valerie Caproni of the Southern District of New York lifted a protective order in response to a motion by ProPublica, which argued that there was a public interest in disclosing the code. ProPublica has obtained the source code, known as the Forensic Statistical Tool, or FST, and published it on GitHub; two newly unredacted defense expert affidavits are also available.

>“Everybody who has been the subject of an FST report now gets to find out to what extent that was inaccurate,” said Christopher Flood, a defense lawyer who has sought access to the code for several years. “And I mean everybody --- whether they pleaded guilty before trial, or whether it was presented to a jury, or whether their case was dismissed. Everybody has a right to know, and the public has a right to know.”

>Caproni’s ruling comes amid increased complaints by scientists and lawyers that flaws in the now-discontinued software program may have sent innocent people to prison. Similar legal fights for access to proprietary DNA analysis software are ongoing elsewhere in the U.S. At the same time, New York City policymakers are pushing for transparency for all of the city’s decision-making algorithms, from pre-trial risk assessments, to predictive policing systems, to methods of assigning students to high schools.

https://archive.fo/aEjqm

Wanna see the pajeetcode that sends people to jail for life?

https://github.com/propublica/nyc-dna-software

 No.809023>>809057

>>809021 (OP)

>Wanna see the pajeetcode that sends people to jail for life?

HAHAH Indians bad at code hahah do I fit in yet guys?


 No.809026

>>809021 (OP)

> may have sent innocent people to prison

If they are black, they're guilty of something though, best keep them locked-up to err on the side of caution.


 No.809028>>809160

https://github.com/propublica/nyc-dna-software/blob/master/FST.Common/IndividualReportPrinter.cs


/// UGLY HACK: we hide the second page from the PDF report for the Identifiler kit that doesn't have all the loci... I am sorry for doing this, but it works
List<int> PageIndices = new List<int>(bytes.Locate(ASCIIEncoding.Default.GetBytes("/Pages ")));
List<int> CountIndices = new List<int>(bytes.Locate(ASCIIEncoding.Default.GetBytes("/Count ")));

Pajeeeeeeeeeeet!!!!!


 No.809029>>809034

YEAR OF THE LINUX COP


 No.809030>>809042


/// <summary>
/// This function picks up the no of persons involved in a case
/// Added by Dhruba
/// </summary>
/// <param name="dropout"></param>
/// <returns></returns>

Literally, Pajeet.


 No.809031>>809033 >>809042 >>809145 >>809146 >>809154 >>809162 >>809192


///Objective : This screen interacts with the database through the procedures and is the Database Layer
///Developed by : Vivien Song
///First Developed on : 7/24/2009
///Modified by : Dhrubajyoti Chattopadhyay
///Last Modified On : 1/14/2010


 No.809033>>817152

>>809031

You just can't make this shit up.


 No.809034

>>809029

Nah, it's all .NET C# stuff.


 No.809037

There's a lot of DB queries being made by simple string joins, I hope Pajeet sanitized his inputs. I haven't used C# before, but I didn't see any prepared statements being used, which help mitigate SQL injections.


 No.809038

>FST.Common/Comparison.cs

>big chunk of code literally copy-pasted between ReadDropoutRate and ReadDegradedDropoutRate

pajeet pls.xcf


 No.809040>>809042


/// <summary>
/// Default consturctor initiates a conenction to the database
/// </summary>


 No.809042


 No.809043>>814920


// if we have a single value then we duplicate it (sorry for this)
foreach (DataColumn dc in dt.Columns)
if (dc.ColumnName != "ID" && dc.ColumnName != "Ethnicity")
if (!dr[dc.ColumnName].ToString().Contains(",")
|| string.IsNullOrEmpty(dr[dc.ColumnName].ToString().Trim().Split(new char[] { ',' })[1]))
if (!dr[dc.ColumnName].ToString().Contains(",") || string.IsNullOrEmpty(dr[dc.ColumnName].ToString().Trim().Split(new char[] { ',' })[1])) dr[dc.ColumnName] = dr[dc.ColumnName].ToString().Trim().Replace(",", "") + "," + dr[dc.ColumnName].ToString().Trim().Replace(",", "");


 No.809044

> Assign default value

> Immediately overwrite it.


public string SaveLabKit(string labKitName, string creator)
{
string strResult = "";
strResult = m_dbinstance.SaveLabKit(labKitName, creator);
return strResult;
}
public void SaveLabKitData(string guid, DataTable dropOuts, DataTable dropIns, List<int> labKitLoci)
{
string strResult = "";
strResult = m_dbinstance.SaveLabKitData(guid, dropOuts, dropIns, labKitLoci);
}

He does this a lot too. A simple return would suffice, but perhaps this boilerplate was generated by his IDE. In any case, the compiler elides such silliness, but it's ugly to view.


public DataTable GetDropOutTypes()
{
DataTable dt = m_dbinstance.GetDropOutTypes();
return dt;
}
public DataTable getDropOutOptions()
{
DataTable dt = m_dbinstance.getDropOutOptions();
return dt;
}


 No.809046


// holds our comparisonID so the property below can have some other code in the setter method
private int compareMethodID;
// hack around serializer limits
public int compareMethodIDSerializationBackupDoNotMessWithThisVariableBecauseItsAnUglyHackAroundACrappyLimitiationOfTheFCLsCrappyXMLSerializer;
// this method calls the configureComparison() method
public int CompareMethodID
{
get { return compareMethodID != 0 ? compareMethodID : compareMethodIDSerializationBackupDoNotMessWithThisVariableBecauseItsAnUglyHackAroundACrappyLimitiationOfTheFCLsCrappyXMLSerializer; }
set { configureComparison(value); }
}


 No.809047

>acquired by ProPublica

Into the trash it goes


 No.809048>>809049 >>809050 >>809069 >>809303

Yeeeeeesssssssss!!!!!!!! This is what I was looking for, the CS GRAD SOLUTION.


// copy the comparisons alleles from the dictionaries
if (this.ComparisonAlleles.Count >= 1)
{
DataRow dr = dtAlleles.NewRow();
dr["Type"] = this.Comparison1Name != string.Empty ? string.Format("{0} (Comparison)", this.Comparison1Name) : string.Format("Comparison{0}", this.NumeratorProfiles.ComparisonCount > 1 ? " 1" : string.Empty);
dr["Profile"] = string.Empty;
foreach (string locus in loci) if(ComparisonAlleles[1].ContainsKey(locus)) dr[locus] = ComparisonAlleles[1][locus];
dtAlleles.Rows.Add(dr);
}

if (this.ComparisonAlleles.Count >= 2)
{
DataRow dr = dtAlleles.NewRow();
dr["Type"] = this.Comparison2Name != string.Empty ? string.Format("{0} (Comparison)", this.Comparison2Name) : "Comparison 2";
dr["Profile"] = string.Empty;
foreach (string locus in loci) if (ComparisonAlleles[2].ContainsKey(locus)) dr[locus] = ComparisonAlleles[2][locus];
dtAlleles.Rows.Add(dr);
}

if (this.ComparisonAlleles.Count >= 3)
{
DataRow dr = dtAlleles.NewRow();
dr["Type"] = this.Comparison3Name != string.Empty ? string.Format("{0} (Comparison)", this.Comparison2Name) : "Comparison 3";
dr["Profile"] = string.Empty;
foreach (string locus in loci) if (ComparisonAlleles[3].ContainsKey(locus)) dr[locus] = ComparisonAlleles[3][locus];
dtAlleles.Rows.Add(dr);
}

if (this.ComparisonAlleles.Count >= 4)
{
DataRow dr = dtAlleles.NewRow();
dr["Type"] = this.Comparison4Name != string.Empty ? string.Format("{0} (Comparison)", this.Comparison2Name) : "Comparison 4";
dr["Profile"] = string.Empty;
foreach (string locus in loci) if (ComparisonAlleles[4].ContainsKey(locus)) dr[locus] = ComparisonAlleles[4][locus];
dtAlleles.Rows.Add(dr);
}


 No.809049

File (hide): e65fc33965a4041⋯.jpeg (33.19 KB, 638x359, 638:359, apu am i disabled.jpeg) (h) (u)


 No.809050

File (hide): 46f743c41d899c6⋯.png (512.49 KB, 878x900, 439:450, 46f743c41d899c68b4bed91b6a….png) (h) (u)

>>809048

If I had to guess a pajeet cianigger wrote this miserable pile of copy pasted shit.


 No.809051>>809052 >>809053 >>809136

Oh shit, look at the Switch statement on line 63.

https://github.com/propublica/nyc-dna-software/blob/master/FST.Common/ComparisonData.cs#L63

Coding horror.


 No.809052

>>809051

I'll give you guys a taste, there's 38 of these cases...


case 20:
NumeratorProfiles.ComparisonIDs.Add(1);
NumeratorProfiles.KnownIDs.Add(1);
NumeratorProfiles.KnownIDs.Add(2);
NumeratorProfiles.KnownIDs.Add(3);
DenominatorProfiles.KnownIDs.Add(1);
DenominatorProfiles.KnownIDs.Add(2);
DenominatorProfiles.KnownIDs.Add(3);
CompareMethodLongName = "Comparison + 3 Knowns / 3 Knowns";
CompareMethodShortName = "C + 3 K / 3 K";
hpHeadFormatString = "{0} (Comparison) + {4} (Known) + {5} (Known) + {6} (Known)";
hdHeadFormatString = "{4} (Known) + {5} (Known) + {6} (Known)";
break;
case 21:
NumeratorProfiles.ComparisonIDs.Add(1);
NumeratorProfiles.UnknownCount = 1;
DenominatorProfiles.UnknownCount = 1;
CompareMethodLongName = "Comparison + Unknown / Unknown";
CompareMethodShortName = "C + U / U";
hpHeadFormatString = "{0} (Comparison) + Unknown";
hdHeadFormatString = "Unknown";
break;
case 22:
// this is an example with two comparisons
NumeratorProfiles.ComparisonIDs.Add(1);
NumeratorProfiles.ComparisonIDs.Add(2);
DenominatorProfiles.UnknownCount = 2;
CompareMethodLongName = "2 Comparisons / 2 Unknowns";
CompareMethodShortName = "2 C / 2 U";
hpHeadFormatString = "{0} (Comparison) + {1} (Comparison)";
hdHeadFormatString = "2 Unknowns";
break;


 No.809053

File (hide): 225cb0e5b99114e⋯.png (148.85 KB, 784x762, 392:381, 225cb0e5b99114ec37c8e17eff….png) (h) (u)

>>809051

Cianigger skill level confirmed, the line.


 No.809054>>809056

// copy the evidence dictionary
Dictionary<string, DictionaryProxy<int, string>> tmpEvidenceAllelesProxy = new Dictionary<string, DictionaryProxy<int, string>>();
foreach (string key in EvidenceAlleles.Keys)
{
Dictionary<int, string> curDict = EvidenceAlleles[key];
DictionaryProxy<int, string> tmpDict = new DictionaryProxy<int, string>(curDict);
tmpEvidenceAllelesProxy.Add(key, tmpDict);
}
EvidenceAllelesProxy = new DictionaryProxy<string, DictionaryProxy<int, string>>(tmpEvidenceAllelesProxy);

// copy the comparisons dictionary
Dictionary<int, DictionaryProxy<string, string>> tmpComparisonAllelesProxy = new Dictionary<int, DictionaryProxy<string, string>>();
foreach (int key in ComparisonAlleles.Keys)
{
Dictionary<string, string> curDict = ComparisonAlleles[key];
DictionaryProxy<string, string> tmpDict = new DictionaryProxy<string, string>(curDict);
tmpComparisonAllelesProxy.Add(key, tmpDict);
}
ComparisonAllelesProxy = new DictionaryProxy<int, DictionaryProxy<string, string>>(tmpComparisonAllelesProxy);

// copy the knowns dictionary
Dictionary<int, DictionaryProxy<string, string>> tmpKnownsAllelesProxy = new Dictionary<int, DictionaryProxy<string, string>>();
foreach (int key in KnownsAlleles.Keys)
{
Dictionary<string, string> curDict = KnownsAlleles[key];
DictionaryProxy<string, string> tmpDict = new DictionaryProxy<string, string>(curDict);
tmpKnownsAllelesProxy.Add(key, tmpDict);
}
KnownsAllelesProxy = new DictionaryProxy<int, DictionaryProxy<string, string>>(tmpKnownsAllelesProxy);

// copy the evidence 
Dictionary<string, DictionaryProxy<int, string>> tmpEvidenceAllelesProxy = val.EvidenceAllelesProxy.ToDictionary();
foreach (string key in tmpEvidenceAllelesProxy.Keys)
{
Dictionary<int, string> curDict = tmpEvidenceAllelesProxy[key].ToDictionary();
val.EvidenceAlleles.Add(key, curDict);
}

// copy the comparisons
Dictionary<int, DictionaryProxy<string, string>> tmpComparisonAllelesProxy = val.ComparisonAllelesProxy.ToDictionary();
foreach (int key in tmpComparisonAllelesProxy.Keys)
{
Dictionary<string, string> curDict = tmpComparisonAllelesProxy[key].ToDictionary();
val.ComparisonAlleles.Add(key, curDict);
}

// copy the knowns
Dictionary<int, DictionaryProxy<string, string>> tmpKnownsAllelesProxy = val.KnownsAllelesProxy.ToDictionary();
foreach (int key in tmpKnownsAllelesProxy.Keys)
{
Dictionary<string, string> curDict = tmpKnownsAllelesProxy[key].ToDictionary();
val.KnownsAlleles.Add(key, curDict);
}

Copy-pasting is a powerful programming technique.

t. Rajesh


 No.809056

>>809054

After beholding that awful switch, I had to close the tab, and peruse some fine scheme. It beggars belief what horrors lie deeper in the Ganges abyss.


 No.809057

File (hide): dfcfab4f7f7efd2⋯.png (81.34 KB, 191x264, 191:264, Indian_hygiene.png) (h) (u)

>>809023

>t. poo


 No.809063>>809129

File (hide): 8ac82c7c1355bfe⋯.jpg (163.66 KB, 518x333, 14:9, trump_crop.jpg) (h) (u)

>Think OP is a fucking faggot trying too hard to fit in with the Pajeet shit

>It turns out it really was Indian code

>mfw

It's like how /pol/ is always right about the Jews, /tech/ is always right about the Indians


 No.809069>>809081

>>809048

Other than creating a and adding new row every if statement rather than having them be in their respective spots above and below the block and having >= as operators, how else could this be improved?


 No.809081

>>809069

Loop from HIGH to LOW, access the constants he needs from an arrays indexed by the loop variable.

His this.Comparison1Name shit should be turned into an array.


 No.809129>>816946

>>809063

Well then. You are fucked. At least i have Jewish friends.


 No.809136>>809194

>>809051

I thought this kind of shit poo was just a meme.


 No.809145>>809306

>>809031

>started by an affirmative action college grad

>outsourced to India in less than a year

What a surprise.


 No.809146>>809213

File (hide): d40517633f36ee9⋯.jpg (30.6 KB, 400x353, 400:353, 1496311758567.jpg) (h) (u)

>>809031

>important software in the us is LITERALLY written by women and pajeets

wake me up


 No.809154

File (hide): 1a481d020af98bb⋯.gif (1.63 MB, 360x270, 4:3, 1464015453779.gif) (h) (u)


 No.809160>>809315 >>817103

>>809028

 /// <summary>
/// This helper class is used to find patterns in byte arrays. Found on stack overflow. Thank you, Internet!
/// </summary>
static class ByteArrayHelper

/// <summary>
/// This is called by Windows when the service is stopped.
/// </summary>
protected override void OnStop()

// start our threads
dequeuerThread.Start();

Gee they sure know how to use comments.


 No.809162

File (hide): c121ab0a9edbf7e⋯.jpg (15.38 KB, 480x712, 60:89, 1469483260013.jpg) (h) (u)

>>809031

>vivien

>poodaboojapoodi


 No.809192

File (hide): 6bd5a93853ab8d6⋯.webm (567.03 KB, 578x360, 289:180, keeek.webm) (h) (u) [play once] [loop]

>>809031

>Dhrubajyoti Chattopadhyay

>Chattopadhyay

>yay


 No.809194

>>809136

>I thought this kind of shit poo was just a meme.

And now you know why they need a meme language.


 No.809204

https://github.com/propublica/nyc-dna-software/issues/1

>it would be breaking the terms of the license of some code they used

lel

MIT cuck doesn't know that proprietary licenses doesn't give a dam.

Even if the MIT license stipulates that there's no legal action possible because the MIT just like the BSD is permissive there's nothing that can be done.


 No.809213>>809216

>>809146

If she's a dev from the US there's nothing wrong (well except if she's bad)

But the pajeet is inexcusable.


 No.809216>>809225

>>809213

>female programmer

>ever good


 No.809225>>809226

>>809216

Yes they exist, just like good pajeets (even tho I know only two good ones).

Good female devs are either very autistic, have health related problem that don't let them go outside or are housewife that don't have much to do.


 No.809226>>809240 >>809284

>>809225

They do exist, but diversity hires have ruined their reputation. Twenty years ago you could assume that a female programmer was hired based on merit, now it's much more likely that she was hired because of her "diversity".


 No.809240>>809284

>>809226

>diversity hires have ruined their reputation.

One nigger I knew was really mad when they started with the quotas since he knew everyone would think he was there for being a nigger instead of making it on his own. He was right.


 No.809284>>809286 >>809296

>>809226

Exactly. If you saw her, you assumed she was good, or why would she even be there in the first place.

>>809240

I imagine this is the case for all intelligent "marginalized groups".


 No.809286>>809296

>>809284

*people from "marginalized groups".


 No.809296


 No.809303>>809314

>>809048

Wouldn’t it take like a minute to just copy

this.ComparisonAlleles.count 

Intro the brackets, make an array/vector for this.Comparison[x]Name and delete all the repeated shit and the conditional?


 No.809306

>>809145

Haha and when it failed, I'll swoop in and fix it for 150/hr if they don't agree to a re-write! I never knew autism would be this profitable.


 No.809314

>>809303

No kidding. Pajeet has to copy+paste fast though.


 No.809315

>>809160

>Found on stack overflow. Thank you, Internet!

I want /tech/ to stop being right all the time.


 No.814880>>814881

as a pajeet, I am ashamed of this.


 No.814881

>>814880

the only way this is redeemable is if more niggers ended up in prison because of this


 No.814907>>814917 >>814937

>>809021 (OP)

>that variable name

Tip top kek.

Now that we're on this topic, can someone explain the "x != 0 ? x : y" syntax? I've seen that sort of thing a few times and it appear to be another way of writing if(x != 0) x = y


 No.814917>>814920

>>814907

Ternary operator.


 No.814920

>>809043

>(sorry for this)

>>814917

Thanks, senpai.


 No.814937

>>814907

Excuse me, this is not ECMAScript safe. What you're referring to as

if(x !=0) x = y

is actually

if (x !== 0) { x = y };


 No.816946

>>809129

They are not your friends.


 No.816963>>817490

Why in the fuck was a tool used to generate evidence for criminal trials closed source in the first place?


 No.817103

File (hide): 5883d4eadf204e2⋯.jpg (82.5 KB, 680x680, 1:1, narg.jpg) (h) (u)

>>809160

>Thank you, Internet!

jesus christ


 No.817144

>garbage software written by incompetent pajeets more likely than not landed innocent people a prison sentence

OOOHHH SAAAYYYY CAAANNN YOUUUUUU SEEEEEEEEEEE


 No.817152>>817171

>>809033

>>809033

That pic is highly underrated. Thanks for my new research station name.


 No.817171

>>817152

>t. The guy who created the pic.


 No.817490

>>816963

>Judge: so how did you come to this conclusion?

>Prosecutor: ha lol I put the evidence in this magic box and this is what came out

>Judge: okay, perfectly fine.

That pajeet code, how much do they pay?




[Return][Go to top][Catalog][Screencap][Nerve Center][Cancer][Update] ( Scroll to new posts) ( Auto) 5
63 replies | 12 images | Page ?
[Post a Reply]
[ / / / / / / / / / / / / / ] [ dir / asmr / aus / cyoa / leftpol / russian / tijuana / vore / zoo ][ watchlist ]