Google beats children's web privacy appeal, Viacom to face one claim

2016-06-27 22:54:36

Google and Viacom on Monday defeated an appeal in a nationwide class action lawsuit by parents who claimed the companies illegally tracked the online activity of children under the age of 13 who watched videos and played video games on Nickelodeon's website.By a 3-0 vote, the 3rd U.S. Circuit Court of Appeals in Philadelphia said Google, a unit of Alphabet Inc, and Viacom Inc were not liable under several federal and state laws for planting "cookies" on boys' and girls' computers, to gather data that advertisers could use to send targeted ads.The court also revived one state law privacy claim against Viacom, claiming that it promised on the Nick.com website not to collect children's personal information, but did so anyway.Monday's decision largely upheld a January 2015 ruling by U.S. District Judge Stanley Chesler in Newark, New Jersey. It returned the surviving claim to him.Jay Barnes, a lawyer for the parents, declined to comment.Viacom spokesman Jeremy Zweig said the company is pleased with the dismissals and confident it will prevail on the remaining claim. "Nickelodeon is proud of its record on children's privacy issues and strongly committed to the best practices in the industry," he added. Google did not immediately respond to a request for comment.Monday's decision is a fresh setback for computer users, after the same appeals court last November 10 said Google was not liable under federal privacy laws for bypassing cookie blockers on Apple Inc's Safari browser and Microsoft Corp's Internet Explorer browser.Circuit Judge Julio Fuentes, who wrote both decisions, said that ruling doomed many of the parents' claims against Mountain View, California-based Google and New York-based Viacom. He also rejected the parents' claims under the Video Privacy Protection Act, a 1988 law adopted a year after a newspaper wrote about movies rented by failed Supreme Court nominee Robert Bork, based on a list provided by a video store.Fuentes said the law was meant to thwart the collection of data to help monitor people's video-watching behavior.He said Congress, despite amending the law in 2013, never updated it to cover the collection of data such as users' IP addresses, browser settings and operating settings, and reflect a "contemporary understanding" of Internet privacy. "Some disclosures predicated on new technology, such as the dissemination of precise GPS coordinates or customer ID numbers, may suffice," Fuentes wrote. "But others--including the kinds of disclosures described by the plaintiffs here--are simply too far afield from the circumstances that motivated the act's passage to trigger liability."The revived privacy claim accused Viacom of reneging on a promise on Nick.com that said: "HEY GROWN-UPS: We don't collect ANY personal information about your kids. Which means we couldn't share it even if we wanted to!"Fuentes said a reasonable jury might find Viacom liable for "intrusion upon seclusion" if it found its alleged privacy intrusion "highly offensive to the ordinary reasonable man."The case is In re: Nickelodeon Consumer Privacy Litigation, 3rd U.S. Circuit Court of Appeals, No. 15-1441. (Reporting by Jonathan Stempel in New York; Editing by David Gregorio; Editing by David Gregorio)

Democrat gun control sit-in sparks social media sensation

2016-06-24 10:22:13

A blackout of television cameras in the U.S. House Representatives during the Democrats' gun control sit-in may have spurred public interest in the protest as it forced the demonstrators to use social media to broadcast their message.Democrats leapt on Facebook Live and Twitter's Periscope after the cameras, controlled by the House, went dark Wednesday when presiding House officer and Republican Representative Ted Poe declared the chamber not in order during the protest.As Democrats took to alternative forms of video broadcasting, their message gained tremendous momentum from social media. On Twitter, the hashtags #NoBillNoBreak and #HoldTheFloor have been tweeted at least 1.4 million times.Of the roughly 20 members of Congress who remained at the sit-in overnight, 19 of them used Facebook Live for a total combined viewership of 3 million.“It really connected with people out there,” Congressman Scott Peters told Reuters. "This whole phenomenon with [live video] struck a nerve."Peters used the application Periscope, which is connected to the social media platform Twitter, to send out video. “Without that, think about it, it would have been a caucus meeting where we talk to ourselves," he added. In remarks Wednesday outside the Capitol, House Democratic Leader Nancy Pelosi praised how her party harnessed social media."Without you and without the technology of Periscope [the sit-in] would just be a debate in the Halls of Congress unrecorded because they turned off the microphones," Pelosi said. "But we raised our voices. They turned off the cameras and we went to Periscope." Congressman Mark Takano, who began posting live videos from the chamber to his Facebook page Wednesday afternoon and continued to throughout the night, said the social media video helped him connect with constituents."Once I got started with the live streaming I didn’t feel like I could let down the people who were following me,” said Takano. “It was a way to push out a message.”Even C-SPAN, which typically broadcasts footage recorded by the House cameras, picked up live video from four different members of Congress roughly two hours after the House cameras shut down, according to communications director Howard Mortman. It marked the first time the channel broadcast a live social media feed from the House floor. "Something interesting is happening with Facebook Live that's bringing more openness to the political process," said Mark Zuckerberg, CEO of Facebook, in a post to his social media profile Thursday."It's a way to share anything you want with the world using just your phone." (Reporting By Amy Tennery; additional reporting by Angela Moon in New York and Susan Cornwell in Washington; Editing by Andrew Hay)

Open Sourcing Geppetto, an Automation Framework for Distributed Systems

2016-06-17 12:27:35

After graduating college and entering the workforce, I began to see just how ubiquitous and useful open source software is — from implementations of C++ and Java to the many software libraries to even Ansible and OpenStack for virtual machine management. When the CEO of my company approached me and mentioned that we could open source our automation framework for distributed systems, I was excited to contribute back to the community.At Datos IO, we developed an automation framework we call Geppetto to help manage and test RecoverX, one of our software products. RecoverX is a database versioning and backup solution for cutting-edge distributed databases. In order to handle the scalable demands of distributed databases, RecoverX is itself distributed. Perhaps more so than any normal piece of software, RecoverX needs to be tested thoroughly because, after all, RecoverX is protecting customers' data in a nondeterministic distributed environment."Developers lie at the heart of a software project. They implement the experiences that customers will rave about at release. Too often, developers don't get to own the entirety of their feature life cycle. Traditional test methodology holds that testing is a separate process out of step with the developer. Testing really is a collaborative process between the developer, the team, and the customers. Newer methodologies like test-driven development promote more ownership for developers and collaboration with the team. Developers that own and prove the quality of a feature have fewer bugs, fewer round trips with QA, and are faster to market. A structured series of tests owned by the developer and test teams help protect code from incoming bugs. Developers that write tests are also more likely to keep their quality up."— AtlassianAt Datos IO, we know that developers are an integral part of testing. But we also know their time is incredibly valuable. After all, we are a small startup with fewer than 30 employees taking on a giant enterprise market.We knew right away that we had to automate as much as possible, but we also knew that there was more to it than that. We needed to make automating powerful, flexible, and, most importantly, easy. Being easy to use is so important because it promotes software uptake. If it's easy to use the automation software, the developers are much more likely to use it.Also, consider the cost benefit. Every minute or hour saved in learning a new piece of software is time that could be spent developing new features or products. So you not only have the cost of the developers (multiplied by all of those hours multiplied by the number of engineers you have that you save in cost) but you're also increasing your product value with new features that are much quicker, thus increasing revenues.Geppetto OverviewGeppetto is developed in Python, an easy-to-use and well-supported cross-platform language. We took inspiration from the structure of Python's unit tests for its simplicity and familiarity that developers have with it. Our thinking was if we mirror the Python unit test structure a developer should be able to learn how to implement a Geppetto test quickly.For example, a simple "hello world" test can be implemented in just a few lines.class TestRun(Geppetto): def run(self): report(“Hello World!”)If you want to extend the test to include setting up a distributed database cluster, like Cassandra for example, Geppetto can work with a configuration file that stores IP addresses, usernames, passwords, and other configuration settings. This allows setting up a Cassandra cluster in a Geppetto test to be incredibly easy and implemented in just two extra linesclass TestRun(Geppetto): def run(self): cassandra = Cassandra(config_dictionary) cassandra.install()We now have a Cassandra cluster set up. But perhaps we want to take this a step further and test one of many different failure scenarios for Cassandra. Let's extend our test a bit more.class TestRun(Geppetto): def run(self): cassandra = Cassandra(config_dictionary) cassandra.install() cassandra.failure.random_db_failure()In just five simple lines of code, we've created a Cassandra-distributed database and inserted failures into the Cassandra database. And, of course, with a combination of different available functions, parameters, and configuration files, and the full availability of Python libraries, such as threading and multiprocessing, we now also have not just an easy tool to use, but a very capable and flexible one as well.Key Design PrinciplesGeppetto was designed with some key principles in mind:Modularity: Extendable and easy to add functionality. Future proof.Flexible and Powerful: Able to handle any kind of testing requirements.Ease of Use: Abstract away all the hard work. Engineers should spend more time focused on testing and development, not on how to test.What Can Be AutomatedGeppetto can automate either a single test or hundreds or even thousands of tests. A test can run for milliseconds or even months and can be as simple as a simple “Hello World” or as complex as setting up many different versions of different types of distributed systems, perhaps populating them with terabytes of data and doing complex things with them. In fact, I even use Geppetto as a simple setup tool to turn on and off firewalls and do monitoring of clusters for things like CPU and memory usage. The sky is the limit.In the WildWe are now releasing a version of Geppetto to open source, and we will be adding in many modules over the coming months. We are actively looking for contributors and hope that individuals in the open source community will find it of some use.DownloadYou can download Geppetto here.

Private company wants U.S. clearance to fly to the moon

2016-06-10 12:22:52

WASHINGTON U.S. government agencies are working on temporary rules to allow a private company to land a spacecraft on the moon next year, while Congress weighs a more permanent legal framework to govern future commercial missions to the moon, Mars and other destinations beyond Earth's orbit, officials said.Plans by private companies to land spacecraft on the moon or launch them out of Earth's orbit face legal obstacles because the United States has not put in place regulations to govern space activities, industry and government officials said."We do not have formal authority today to deal with what happens on orbit or on other planetary terrestrial bodies. That’s the issue that we’re wrestling with,” said George Nield, head of the Federal Aviation Administration’s Office of Commercial Space Transportation.“What is being looked at right now is a Band-Aid fix because the system is broken,” Nield said at an American Bar Association space law forum in Washington on Wednesday. A 1967 international treaty obliges the United States and other signatories to authorize and supervise space activities by its non-government entities. But no U.S. agency has authority to regulate commercial space activities outside of rocket launches, spacecraft re-entries into the atmosphere and operations of telecommunications and remote sensing satellites in Earth orbit.The issue is coming to a head in part because of a request by Florida-based Moon Express for permission from the U.S. government to land a spacecraft on the moon in 2017. So far, only government agencies have flown satellites beyond Earth’s orbit. “No commercial company has ever asked to go outside of Earth orbit and go elsewhere before. We’re a pathfinder out of necessity,” Moon Express Chief Executive Bob Richards said in an interview on Monday.Richards and Nield declined to comment on what specifically Moon Express is proposing. Other countries are moving faster to establish rules for space launches in compliance with international treaties. Luxembourg last week announced it was partnering with two U.S. companies interested in mining asteroids and set aside 200 million euros to woo space firms to relocate. The United Arab Emirates also intends to serve as a commercial space haven.“We don’t want to create the environment where there’s a competitive advantage for payloads to go overseas,” said space attorney Michael Gold, who chairs the FAA’s commercial space advisory panel. (Reporting by Irene Klotz; Editing by Bill Trott)

MongoDB Administration Checklist for MySQL DBAs

2016-06-03 12:18:10

In this blog, I discuss a MongoDB administration checklist designed to help MySQL DBAs.If you are MySQL DBA, starting MongoDB administration is not always an easy transition. Although most of the concepts and even implementation are similar, the commands are different. The following table outlines the typical MySQL concepts and DBA tasks (on the left) to corresponding MongoDB ones (on the right). If you happen to be a MongoDB DBA and want to learn MySQL administration, you can use the same table looking from right to left.I’ve also created a webinar, MongoDB administration for MySQL DBA, that explains the above concepts. You can download the slides to use as a reference.Don’t forget about our upcoming event Community Open House for MongoDB in New York, June 30, 2016. There will be technical presentations and sessions from key members of the MongoDB open source community. This event is free of charge and open to all.Architecture: Basic ConceptsReplication:Sharding:Day-to-day Operations MySQL: SELECTselect*from zips limit1G country_code:US postal_code:34050 place_name:FPO admin_name1: admin_code1:AA admin_name2:Erie admin_code2:029 admin_name3: admin_code3: latitude:41.03750000 longitude:-111.67890000 accuracy: 1row inset(0.00sec)MongoDB: FIND MongoDB shell version:3.0.8 connecting to:zips >db.zips.find().limit(1).pretty() "_id":"01001", "city":"AGAWAM", "loc":[ -72.622739, 42.070206 "pop":15338, "state":"MA"MySQL: SchemaCREATE TABLE users( idMEDIUMINT NOTNULLAUTO_INCREMENT, user_id varchar(30), age Number, status char(1), PRIMARY KEY(id)MongoDB: Flexible Schemadb.users.insert({ user_id:"abc123", age:55, status:"A"}MySQL: Config fileMongoDB:/etc/mongod.conf # Where and how to store data. storage: dbPath:/datawt journal: enabled:true engine:wiredTiger ... /usr/bin/mongod-f/etc/mongod.confMySQL: databasesDatabases mysql>show databases; +--------------------+ |Database| +--------------------+ |information_schema| ... mysql>usezips Database changed Tables mysql>show tables; +----------------+ |Tables_in_zips| +----------------+ |zips| +----------------+MongoDB: DatabasesDatabases >show dbs; admin0.000GB local0.000GB osm13.528GB test0.000GB zips0.002GB >usezips switched todb zips Collections >show collections zips >show tables//same zipsMySQL: Storage EnginesMyISAM InnoDB TokuDB MyRocksMongoDB: Storage EnginesMMAPv1:memory mapped WiredTiger:transactional+compression TokuMX/PerconaFT RocksDBMySQL: Processlistmysql>show processlistG Id:137259 User:root Host:localhost db:geonames Command:Query Time:0 State:init Info:show processlist Rows_sent:0 Rows_examined:0 1row inset(0.00sec)MongoDB: CurrentOp()>db.currentOp() "inprog":[ "desc":"conn28", "threadId":"0x19b85260", "connectionId":28, "opid":27394208, "active":true, "secs_running":3, "microsecs_running": NumberLong(3210539), "op":"query", "ns":"osm.points3", "query":{ "name":"Durham" "planSummary":"COLLSCAN", "client":"127.0.0.1:58835", "numYields":24905, "locks":{ "Global":"r", "Database":"r", "Collection":"r" "waitingForLock":false, ...MySQL: Grantsmysql>grant all on*.* touser@localhost identified by'pass';MongoDB: createUser>useproducts db.createUser({ user:"accountUser", pwd:"password", roles:["readWrite","dbAdmin"]MySQL: Indexmysql>show keys from zipsG ****1.row**** Table:zips Non_unique:0 Key_name:PRIMARY Seq_in_index:1 Column_name:id Collation:A Cardinality:0 Sub_part:NULL Packed:NULL Null: Index_type:BTREEMongoDB: Index>db.zips.getIndexes() "v":1, "key":{ "_id":1 "name":"_id_", "ns":"zips.zips"MySQL: Add Indexmysql>alter table zips add key(postal_code); Query OK,0rows affected(0.10sec) Records:0Duplicates:0Warnings:0MongoDB: Create Index>db.zips.createIndex({state:1}) "createdCollectionAutomatically":false, "numIndexesBefore":1, "numIndexesAfter":2, "ok":1 //Index can be sorted: >db.zips.createIndex({state:-1}) "createdCollectionAutomatically":false, "numIndexesBefore":2, "numIndexesAfter":3, "ok":1MySQL: Explainmysql>explain select*from zips where place_name='Durham'G ****1.row**** id:1 select_type:SIMPLE table:zips type:ref possible_keys:place_name key:place_name key_len:183 ref:const rows:25 Extra:Using index condition 1row inset(0.00sec)MongoDB: Explain>db.zips.find({"city":"DURHAM"}).explain() "queryPlanner":{ "plannerVersion":1, "namespace":"zips.zips", "indexFilterSet":false, "parsedQuery":{ "city":{ "$eq":"DURHAM" "winningPlan":{ "stage":"COLLSCAN", "filter":{ "city":{ "$eq":"DURHAM" "direction":"forward" "rejectedPlans":[] "serverInfo":{...}, "ok":1MySQL: Alter Tablemysql>alter table wikistats_innodb_n add url_md5 varbinary(16); Query OK,0rows affected(37min10.03sec) Records:0Duplicates:0Warnings:0 mysql>update wikistats_innodb_n set url_md5=unhex(md5(lower(url))); Query OK, 85923501rows affected(42min29.05sec) Rows matched:85923511Changed:85923501...MongoDB: Flexible schemaNo Alter statement. Just insert the newdocument version...Different documents can have different schema versionsMySQL: Slow Query Logmysql>set global long_query_time=0.1; Query OK,0rows affected(0.02sec) mysql>set global slow_query_log=1; Query OK,0rows affected(0.02sec) mysql>show global variables like'slow_query_log_file'G ****1.row**** Variable_name:slow_query_log_file Value:/var/lib/mysql/slow.log 1row inset(0.00sec)MongoDB: Profiling//db.setProfilingLevel(level,slowms) //Level:0=no profiling, //1=only slow ops //2=all ops //Slowms same aslong_query_time //inmilliseconds >db.setProfilingLevel(2,100); {"was":0,"slowms":100,"ok":1} >db.system.profile.find( {millis: {$gt:100} }).pretty() "op":"query", "ns":"zips.zips", "query":{ "city":"DURHAM" "ntoreturn":0,MySQL: Percona Toolkit$pt-query-digest--limit100slow.log >slow.log.report.txtMongoDB: Mtools$mlogfilter mongo.log-20150915 --from'Sep 14 06:00:00'--to'Sep 14 23:59:59' |mlogvis--line-max100000--out'mongo.html'MySQL 5.7: GISSELECT osm_id,name, round(st_distance_sphere(shape, st_geomfromtext( 'POINT (-78.9064543 35.9975194)',1) ),2)asdist, st_astext(shape) FROM points_new WHERE st_within(shape, create_envelope(@lat,@lon,10)) and(other_tags like'%"amenity"=>"cafe"%' orother_tags like'%"amenity"=>"restaurant"%') andname isnotnull ORDER BY dist asc LIMIT10;MongoDB 3.2: GISdb.runCommand({ geoNear:"points", near:{ type:"Point", coordinates: [-78.9064543,35.9975194] spherical:true, query:{ name:{ $exists:true,$ne:null}, "other_tags":{$in:[ /.*amenity=>restaurant.*/, /.*amenity=>cafe.*/] "limit":5, "maxDistance":10000MySQL: BackupBackup: mysqldump -A > dump.sql, restore: mysql < dump.sqlStop replication slave, copy filesPercona XtraBackupMongoDB: BackupBackup: mongodump, restore mongorestoreStop replica, copy filesPercona HotBackup for TokuMX only

Older Post
Frigid Pluto is home to more diverse terrain than expected
Go figure! Game victory seen as artificial intelligence milestone
Beer brewers toast Australian gluten-free barley