Google Shuts Down Docs Phishing Spree

Google said it has disabled offending accounts involved in a widespread spree of phishing emails today impersonating Google Docs.The emails, at the outset, targeted journalists primarily and attempted to trick victims into granting the malicious application permission to access the user’s Google account. It’s unknown how many accounts were compromised, or whether other applications are also involved. Google advises caution in clicking on links in emails sharing Google Docs.

The messages purport to be from a contact, including contacts known to the victim, wanting to share a Google Doc file. Once the “Open in Docs” button is clicked, the victim is redirected to Google’s OAUTH2 service and the user is prompted to allow the attacker’s malicious application, called “Google Docs,” below, to access their Google account and related services, including contacts, Gmail, Docs and more.

Source: Google Shuts Down Docs Phishing Spree | Threatpost | The first stop for security news

Share

Meet the Hackers Holding Netflix to Ransom – Motherboard

The Dark Overlord attempted to extort plenty of companies before targeting Netflix.

Last week, a hacker or group of hackers dumped apparent full episodes of Orange Is the New Black after Netflix allegedly declined to pay a ransom, and has threatened to release a number of other shows too, including Celebrity Apprentice, New Girl, and The Catch. But this was only the latest move from the group. Known as The Dark Overlord, the hackers have established themselves with a dizzying number of data breaches, often stealing mountains of sensitive corporate and personal data.

For nearly a year, Motherboard and a handful of other journalists have followed The Dark Overlord, and watched it evolve from a group learning how to manipulate the media to aid in extortion attempts, to a ruthless and apparently organized criminal enterprise, albeit one whose ultimate financial success is unclear.

Source: Meet the Hackers Holding Netflix to Ransom – Motherboard

Share

Two famous Polish mathematicians on a bench

If you ever travel to Krakȯw Poland, please sit on this bench, which has statues of two famous Polish mathematicians: Stefan Banach & Otton Nikodym.

 

 

Full Article (in Polish)

Kraków: ławka z figurami wybitnych polskich matematyków na Plantach

Ławka z figurami dwóch wybitnych polskich matematyków Stefana Banacha i Ottona Nikodyma została dziś (14.10.1016 r.) odsłonięta na krakowskich Plantach nieopodal wzgórza wawelskiego. Upamiętnia ona 100. rocznicę dyskusji matematycznej, jaką odbyli naukowcy.

Jak zaznaczył dr Krzysztof Ciesielski z Instytutu Matematyki Uniwersytetu Jagiellońskiego, ławeczkę ustawiono w okolicy miejsca, gdzie prawdopodobnie miało miejsce spotkanie matematyków. Figury Banacha i Nikodyma wykonał wybitny krakowski rzeźbiarz, prof. Stefan Dousa. “Teraz każdy będzie mógł dosiąść się do słynnych matematyków. Może odwiedzenie ławki przed maturą z matematyki przyniesie szczęście?” – zastanawiał się naukowiec z UJ.
W 1916 r. Hugo Steinhaus, młody uczony o sporym już dorobku matematycznym, podczas wieczornego spaceru krakowskimi Plantami usłyszał nagle słowa “całka Lebesgue’a”. Jak wyjaśnił dr Ciesielski, dziś całka Lebesgue’a jest jednym z podstawowych pojęć matematyki wyższej, wtedy jednak było to odkrycie ostatnich lat, znane wyłącznie specjalistom. Zaintrygowany Steinhaus podszedł więc do dwóch młodych krakowian dyskutujących o matematyce.
Jednym z nich był Stefan Banach, matematyk-samouk, drugim Otton Nikodym, absolwent studiów matematycznych we Lwowie, nauczyciel matematyki w IV gimnazjum w Krakowie. Okazało się, że młodzi ludzie mają sporą wiedzę matematyczną oraz wieczorami dyskutują o matematyce, spacerując po Krakowie, zwykle z trzecim kompanem, Witoldem Wilkoszem – szkolnym kolegą Banacha, studentem UJ. Steinhaus włączył się do rozmowy. Opowiedział im o problemie, nad którym od dłuższego czasu pracował. Wielkie było jego zdziwienie, gdy kilka dni później Banach przyniósł mu gotowe rozwiązanie.
Banach w 1920 r. wyjechał do Lwowa. Stał się później jednym z najsłynniejszych matematyków XX wieku, najważniejszą postacią lwowskiej szkoły matematycznej. Był współtwórcą analizy funkcjonalnej.
Nikodym pracował w Warszawie i Krakowie, po II wojnie światowej wyjechał do USA. Wiele ważnych wyników matematycznych jest dziś związanych z jego nazwiskiem. Trzeci z kompanów, Wilkosz, pozostał w Krakowie, uzyskał nominację na profesora Uniwersytetu Jagiellońskiego. Ma wielkie zasługi tak dla rozwoju matematyki, jak i jej upowszechniania i kształcenia młodzieży. Steinhaus wyjechał do Lwowa, po wojnie pracował we Wrocławiu – oprócz odkrycia Banacha ma na swoim koncie liczne doniosłe rezultaty matematyczne, napisał też wspaniałe książki popularyzujące matematykę.
Ławkę ufundowała krakowska firma technologiczna Astor. Nad całością działań czuwał komitet, powołany przez dziekana Wydziału Matematyki i Informatyki Uniwersytetu Jagiellońskiego. prof. Włodzimierza Zwonka.

Share

Why Google Stores Billions of Lines of Code in a Single Repository

062016_CACMpg79_Why-Google.largeEarly Google employees decided to work with a shared codebase managed through a centralized source control system. This approach has served Google well for more than 16 years, and today the vast majority of Google’s software assets continues to be stored in a single, shared repository. Meanwhile, the number of Google software developers has steadily increased, and the size of the Google codebase has grown exponentially (see Figure 1). As a result, the technology used to host the codebase has also evolved significantly.

Back to TopKey InsightsThis article outlines the scale of that codebase and details Google’s custom-built monolithic source repository and the reasons the model was chosen. Google uses a homegrown version-control system to host one large codebase visible to, and used by, most of the software developers in the company. This centralized system is the foundation of many of Google’s developer workflows. Here, we provide background on the systems and workflows that make feasible managing and working productively with such a large repository. We explain Google’s “trunk-based development” strategy and the support systems that structure workflow and keep Google’s codebase healthy, including software for static analysis, code cleanup, and streamlined code review.

Source: Why Google Stores Billions of Lines of Code in a Single Repository | July 2016 | Communications of the ACM

Share

Booming Enrollments in Computer Science

At the Computing Research Association (CRA) Snowbird conference in 2014, Jim Kurose (then at University of Massachusetts-Amherst) and Ed Lazowska (University of Washington) presented a session on burgeoning enrollments in U.S. computing courses. In response, CRA’s Board formed a committee to further study enrollment-related issues, chaired by CRA board member Tracy Camp.

A panel on the upsurge in undergraduate computer science (CS) enrollments in the U.S. took place at the ACM Special Interest Group on Computer Science Education Technical Symposium last year (SIGCSE 2015); shortly thereafter, the full committee went to work with the goal of measuring, assessing, and better understanding enrollment trends and their impact, with a special focus on diversity.

Explained Susan B. Davidson, CRA Board Chair and a member of the CRA enrollments committee, “Over the past few years, computing departments across the country have faced huge increases in course enrollments. To understand the extent and nature of these ‘booming enrollments,’ CRA has undertaken a study that surveys both CRA-member doctoral departments as well as ACM non-doctoral departments.”

In addition to attempting to identify the extent of the “boom” in CS enrollments, Davison said, “We are trying to understand which students are making up this boom: CS majors? Students from other fields seeking to minor in CS? Students in other fields taking a course or two in CS? And why are they doing so; what is driving them?”

Source: Booming Enrollments | July 2016 | Communications of the ACM

Share

SyntaxHighlighter plugin for displaying code in WordPress

This is a well-known plugin, so I am not divulging a secret, but I really like how it enables elegant code display in WordPress. See https://wordpress.org/plugins/syntaxhighlighter/ and https://en.support.wordpress.com/code/posting-source-code/ for the details. I attach the display of a C program that computes bits, in a very efficient way, from the Ehrenfeucht-Mycielski sequence. See the On the Ehrenfeucht-Mycielski sequence paper in the publications list.

// Calculates bits of Ehrenfeucht-Mycielski sequence
// by Grzegorz Herman and Michael Soltys
// December 2007
//
// Usage:
//	generate <n>
// with <n> being the requested number of bits.
// Warning: uses 57 Bytes of RAM per generated bit

#include "malloc.h"

// structures used
struct branch
{
	char*		l;
	char*		r;
	struct node*	n;
};
struct node
{
	char*		p;
	struct branch	b[2];
};

// data pointers
char*		dhead;
char*		dtail;
// node pointers
struct node*	nhead;
struct node*	ntail;

// creates a new node
struct node* newnode(char* p)
{
	struct node* n;
	n = ++ntail;
	n->p = p;
	return n;
}

// updates branch information
void setbranch(struct node* u, char b, char* l, char* r, struct node* n)
{
	u->b[b].l = l;
	u->b[b].r = r;
	u->b[b].n = n;
}

// calculates the matching bit
char nextb(char bit)
{
	char *f, *i, *j, *k, *l;
	char ci, cj, ck;
	struct node *u, *v, *w;
	*(++dtail) = bit;
	f = i = dtail;
	u = nhead;
	while (1)
	{
		f = u->p + 1;
		u->p = dtail;
		k = i;
		ck = *k & 1;
		w = u->b[ck].n;
		if (w == NULL)
			break;
		l = u->b[ck].l;
		j = u->b[ck].r;
		while (j > l)
		{
			ci = *i & 1;
			cj = *j & 1;
			if (ci != cj)
			{
				// split existing branch
				f = w->p + 1;
				v = newnode(dtail);
				setbranch(v, cj, l, j, w);
				setbranch(v, ci, dhead, i, newnode(dtail));
				setbranch(u, ck, i, k, v);
				return *f;
			}
			i--, j--;
		}
		// follow existing branch
		v = u->b[ck].n;
		setbranch(u, ck, i, k, v);
		u = v;
	}
	// add new branch
	ci = *i & 1;
	setbranch(u, ci, dhead, i, newnode(dtail));
	return *f;
}

int main(int argc, char* argv[])
{
	int n;
	char* c;
	n = 0;
	for (c = argv[1]; *c; ++c)
		n = 10*n + *c - '0';
	// initialize
	dhead = dtail = (char*) malloc((n+2)*sizeof(char));
	nhead = ntail = (struct node*) malloc(2*n*sizeof(struct node));
	nhead->p = dhead;
	// build
	char b = '0';
	while (dtail < dhead+n)
		b = ('0'+'1') - nextb(b);
	// output
	*(++dtail) = '\n';
	write(1, dhead+1, dtail-dhead);
	return 0;
}
Share