jm + facebook   112

[LEGAL-303] ASF, RocksDB, and Facebook's BSD+patent grant licensing
Facebook's licensing includes a "nuclear option" if a user acts in a way interpreted by Facebook as competing with them; the ASF has marked the license as "Category-X", and may not be included in Apache projects as a result. Looks like RocksDB are going to relicense as dual GPLv2/ASL2 to clear this up, but React.js has not shown any plans to do so yet
react  rocksdb  licensing  asl2  apache  asf  facebook  open-source  patents 
4 weeks ago by jm
Revealed: Facebook exposed identities of moderators to suspected terrorists | Technology | The Guardian
Oh man, this is awful. Poor guy. And this should have been there right from the start:
The moderator said that when he started, he was given just two weeks training and was required to use his personal Facebook account to log into the social media giant’s moderation system.

“They should have let us use fake profiles,” he said, adding: “They never warned us that something like this could happen.”

Facebook told the Guardian that as a result of the leak it is testing the use of administrative accounts that are not linked to personal profiles.
facebook  security  counter-terrorism  moderation  social-media  role-accounts  admin 
8 weeks ago by jm
GraphQL
a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.


Now being used by Facebook and Github -- looks quite interesting.
apis  data  github  facebook  graphql  languages  types 
12 weeks ago by jm
Prior Exposure Increases Perceived Accuracy of Fake News
In other words, repeated exposure to fake news renders it believable. Pennycook, Gordon and Cannon, Tyrone D and Rand, David G., _Prior Exposure Increases Perceived Accuracy of Fake News_ (April 30, 2017):
Collectively, our results indicate familiarity is used heuristically to infer accuracy. Thus, the spread of fake news is supported by persistent low-level cognitive processes that make even highly implausible and partisan claims more believable with repetition. Our results suggest that political echo chambers not only isolate one from opposing views, but also help to create incubation chambers for blatantly false (but highly salient and politicized) fake news stories.


(via Zeynep Tufekci)

See also: http://www.rand.org/content/dam/rand/pubs/perspectives/PE100/PE198/RAND_PE198.pdf , _The Russian "Firehose of Falsehood" Propaganda Model_, from RAND.
propaganda  psychology  fake-news  belief  facebook  echo-chambers  lies  truth  media 
may 2017 by jm
Build a Better Monster: Morality, Machine Learning, and Mass Surveillance

We built the commercial internet by mastering techniques of persuasion and surveillance that we’ve extended to billions of people, including essentially the entire population of the Western democracies. But admitting that this tool of social control might be conducive to authoritarianism is not something we’re ready to face. After all, we're good people. We like freedom. How could we have built tools that subvert it?

As Upton Sinclair said, “It is difficult to get a man to understand something, when his salary depends on his not understanding it.”

I contend that there are structural reasons to worry about the role of the tech industry in American political life, and that we have only a brief window of time in which to fix this.
advertising  facebook  google  internet  politics  surveillance  democracy  maciej-ceglowski  talks  morality  machine-learning 
april 2017 by jm
'Mathwashing,' Facebook and the zeitgeist of data worship
Fred Benenson: Mathwashing can be thought of using math terms (algorithm, model, etc.) to paper over a more subjective reality. For example, a lot of people believed Facebook was using an unbiased algorithm to determine its trending topics, even if Facebook had previously admitted that humans were involved in the process.
maths  math  mathwashing  data  big-data  algorithms  machine-learning  bias  facebook  fred-benenson 
april 2017 by jm
UW professor: The information war is real, and we’re losing it
Starbird sighed. “I used to be a techno-utopian. Now I can’t believe that I’m sitting here talking to you about all this.”


Yep :(
journalism  media  news  fake-news  infowars  twitter  facebook 
march 2017 by jm
Tim Berners-Lee calls for tighter regulation of online political advertising | Technology | The Guardian
“Targeted advertising allows a campaign to say completely different, possibly conflicting things to different groups. Is that democratic?” Berners-Lee said.
politics  trump  law  elections  polling  advertising  facebook  micro-advertising 
march 2017 by jm
Chatbot that overturned 160,000 parking fines now helping refugees claim asylum | Technology | The Guardian
The original DoNotPay, created by Stanford student Joshua Browder, describes itself as “the world’s first robot lawyer”, giving free legal aid to users through a simple-to-use chat interface. The chatbot, using Facebook Messenger, can now help refugees fill in an immigration application in the US and Canada. For those in the UK, it helps them apply for asylum support.
government  technology  automation  bots  asylum  forms  facebook 
march 2017 by jm
Facebook, patient zero in fake news epidemic, proudly advertises ability to sway elections
The online social network is highlighting the Toomey campaign's ability to make ads that performed exceptionally well on Facebook even as it downplays the ability of the site to influence elections. In the days following the President Donald Trump's election, Facebook CEO Mark Zuckerberg responded to the potential influence of fake news on the election as "a pretty crazy idea."

Taking Facebook at its word means holding two contradictory beliefs at once: that the site can sway an election on behalf of paying customers, but doesn't exert influence when it comes to the spread of misinformation by independent profiteers.
facebook  fake-news  elections  news  pat-toomey  republicans  advertising 
march 2017 by jm
Beringei: A high-performance time series storage engine | Engineering Blog | Facebook Code
Beringei is different from other in-memory systems, such as memcache, because it has been optimized for storing time series data used specifically for health and performance monitoring. We designed Beringei to have a very high write rate and a low read latency, while being as efficient as possible in using RAM to store the time series data. In the end, we created a system that can store all the performance and monitoring data generated at Facebook for the most recent 24 hours, allowing for extremely fast exploration and debugging of systems and services as we encounter issues in production.

Data compression was necessary to help reduce storage overhead. We considered several existing compression schemes and rejected the techniques that applied only to integer data, used approximation techniques, or needed to operate on the entire dataset. Beringei uses a lossless streaming compression algorithm to compress points within a time series with no additional compression used across time series. Each data point is a pair of 64-bit values representing the timestamp and value of the counter at that time. Timestamps and values are compressed separately using information about previous values. Timestamp compression uses a delta-of-delta encoding, so regular time series use very little memory to store timestamps.

From analyzing the data stored in our performance monitoring system, we discovered that the value in most time series does not change significantly when compared to its neighboring data points. Further, many data sources only store integers (despite the system supporting floating point values). Knowing this, we were able to tune previous academic work to be easier to compute by comparing the current value with the previous value using XOR, and storing the changed bits. Ultimately, this algorithm resulted in compressing the entire data set by at least 90 percent.
beringei  compression  facebook  monitoring  tsd  time-series  storage  architecture 
february 2017 by jm
How a Machine Learns Prejudice - Scientific American
Agreed, this is a big issue.
If artificial intelligence takes over our lives, it probably won’t involve humans battling an army of robots that relentlessly apply Spock-like logic as they physically enslave us. Instead, the machine-learning algorithms that already let AI programs recommend a movie you’d like or recognize your friend’s face in a photo will likely be the same ones that one day deny you a loan, lead the police to your neighborhood or tell your doctor you need to go on a diet. And since humans create these algorithms, they're just as prone to biases that could lead to bad decisions—and worse outcomes.
These biases create some immediate concerns about our increasing reliance on artificially intelligent technology, as any AI system designed by humans to be absolutely "neutral" could still reinforce humans’ prejudicial thinking instead of seeing through it.
prejudice  bias  machine-learning  ml  data  training  race  racism  google  facebook 
january 2017 by jm
Hacking the Attention Economy
Can't help feeling danah boyd is hitting the nail on the head here:
The Internet has long been used for gaslighting, and trolls have long targeted adversaries. What has shifted recently is the scale of the operation, the coordination of the attacks, and the strategic agenda of some of the players.
For many who are learning these techniques, it’s no longer simply about fun, nor is it even about the lulz. It has now become about acquiring power.
A new form of information manipulation is unfolding in front of our eyes. It is political. It is global. And it is populist in nature. The news media is being played like a fiddle, while decentralized networks of people are leveraging the ever-evolving networked tools around them to hack the attention economy.
danah-boyd  news  facebook  social-media  gaslighting  trolls  4chan  lulz  gamergate  fake-news 
january 2017 by jm
Facebook's Fight Against Fake News Was Undercut by Fear of Conservative Backlash
Well fuck this and fuck Facebook.
One source said high-ranking officials were briefed on a planned News Feed update that would have identified fake or hoax news stories, but disproportionately impacted right-wing news sites by downgrading or removing that content from people’s feeds. According to the source, the update was shelved and never released to the public. [....] “They absolutely have the tools to shut down fake news,” said the source, who asked to remain anonymous citing fear of retribution from the company. The source added, “there was a lot of fear about upsetting conservatives after Trending Topics,” and that “a lot of product decisions got caught up in that.”
facebook  politics  us-politics  trump  fail  fake-news  hoaxes  news  newsfeed 
november 2016 by jm
The Fall of BIG DATA – arg min blog
Strongly agreed with this -- particularly the second of the three major failures, specifically:
Our community has developed remarkably effective tools to microtarget advertisements. But if you use ad models to deliver news, that’s propaganda. And just because we didn’t intend to spread rampant misinformation doesn’t mean we are not responsible.
big-data  analytics  data-science  statistics  us-politics  trump  data  science  propaganda  facebook  silicon-valley 
november 2016 by jm
How Macedonia Became A Global Hub For Pro-Trump Misinformation - BuzzFeed News
“I started the site for a easy way to make money,” said a 17-year-old who runs a site [from Veles] with four other people. “In Macedonia the economy is very weak and teenagers are not allowed to work, so we need to find creative ways to make some money. I’m a musician but I can’t afford music gear. Here in Macedonia the revenue from a small site is enough to afford many things.”
macedonia  veles  scams  facebook  misinformation  donald-trump  us-politics 
november 2016 by jm
Facebook scuppers Admiral Insurance plan to base premiums on your posts
Well, this is amazingly awful:
The Guardian claims to have further details of the kind of tell-tale signs that Admiral's algorithmic analysis would have looked out for in Facebook posts. Good traits include "writing in short concrete sentences, using lists, and arranging to meet friends at a set time and place, rather than just 'tonight'." On the other hand, "evidence that the Facebook user might be overconfident—such as the use of exclamation marks and the frequent use of 'always' or 'never' rather than 'maybe'—will count against them."


The future is shitty.
insurance  facebook  scoring  computer-says-no  algorithms  text-analysis  awful  future 
november 2016 by jm
React’s license: necessary and open?
Luis Villa:

'Is the React license elegant? No. Should you be worried about using it? Probably not. If anything, Facebook’s attempt to give users an explicit patent license should probably be seen as a good faith gesture that builds some confidence in their ecosystem. But yeah, don’t use it if your company intends to invest heavily in React and also sue Facebook over unrelated patents. That… would be dumb. :)'
luis-villa  open-source  react  facebook  patents  swpats  licensing  licenses  bsd 
november 2016 by jm
Here's Why Facebook's Trending Algorithm Keeps Promoting Fake News - BuzzFeed News
Kalina Bontcheva leads the EU-funded PHEME project working to compute the veracity of social media content. She said reducing the amount of human oversight for Trending heightens the likelihood of failures, and of the algorithm being fooled by people trying to game it.
“I think people are always going to try and outsmart these algorithms — we’ve seen this with search engine optimization,” she said. “I’m sure that once in a while there is going to be a very high-profile failure.”
Less human oversight means more reliance on the algorithm, which creates a new set of concerns, according to Kate Starbird, an assistant professor at the University of Washington who has been using machine learning and other technology to evaluate the accuracy of rumors and information during events such as the Boston bombings.
“[Facebook is] making an assumption that we’re more comfortable with a machine being biased than with a human being biased, because people don’t understand machines as well,” she said.
facebook  news  gaming  adversarial-classification  pheme  truth  social-media  algorithms  ml  machine-learning  media 
october 2016 by jm
DHCPLB: An open source load balancer | Engineering Blog | Facebook Code
nice infra hacks from an intern at Facebook Dublin working with @pallotron
facebook  golang  go  intern  dublin  dhcp  dhcplb  load-balancers 
september 2016 by jm
Law to allow snooping on social media defies European court ruling
Karlin on fire:
But there’s lots in this legislation that should scare the public far more. For example, the proposal that the legislation should allow the retention of “superfluous data” gathered in the course of an investigation, which is a direct contravention of the ECJ’s demand that surveillance must be targeted and data held must be specifically relevant, not a trawl to be stored for later perusal “just in case”.
Or the claim that interception and retention of data, and access to it, will only be in cases of the most serious crime or terrorism threats. Oh, please. This was, and remains, the supposed basis for our existing, ECJ-invalidated legislation. Yet, as last year’s Gsoc investigation into Garda leaks revealed, it turns out a number of interconnected pieces of national legislation allow at least 10 different agencies access to retained data, including Gsoc, the Competition Authority, local authorities and the Irish Medicines Board.
surveillance  ireland  whatsapp  viber  snowden  snooping  karlin-lillington  facebook  internet  data-retention 
july 2016 by jm
How Trump’s troll army is cashing in on his campaign
Of the dozens of Trump pages seemingly run by click-farms, just one responded to our request for an interview, though the anonymous operators of the Trumpians fan page declined to provide the name of their company, citing the “volatility of Trump haters.” Trump’s Facebook page is the only one of over 100 the company runs that’s dedicated to an individual politician. “The other [candidates] don’t have any value from a merchandise perspective ,” the operator said by Facebook Messenger.
click-farms  spam  donald-trump  politics  us-politics  facebook  trolls 
may 2016 by jm
Social Network Algorithms Are Distorting Reality By Boosting Conspiracy Theories | Co.Exist | ideas + impact
In his 1962 book, The Image: A Guide to Pseudo-Events in America, former Librarian of Congress Daniel J. Boorstin describes a world where our ability to technologically shape reality is so sophisticated, it overcomes reality itself. "We risk being the first people in history," he writes, "to have been able to make their illusions so vivid, so persuasive, so ‘realistic’ that they can live in them."
algorithms  facebook  ethics  filtering  newsfeed  conspiracy-theories  twitter  viral  crazy 
may 2016 by jm
How I Hacked Facebook, and Found Someone's Backdoor Script
Great writeup of a practical pen test. Those crappy proprietary appliances that get set up "so the CEO can read his email on the road" etc. are always a weak spot
facebook  hacking  security  exploits  pen-tests  backdoors 
april 2016 by jm
Angola’s Wikipedia Pirates Are Exposing the Problems With Digital Colonialism | Motherboard
Wikimedia and Facebook have given Angolans free access to their websites, but not to the rest of the internet. So, naturally, Angolans have started hiding pirated movies and music in Wikipedia articles and linking to them on closed Facebook groups, creating a totally free and clandestine file sharing network in a country where mobile internet data is extremely expensive.
facebook  piracy  africa  hacks  wikipedia  angola  internet 
march 2016 by jm
Flow
a static type checker for Javascript, from Facebook
javascript  code-analysis  coding  facebook  types  strong-types 
march 2016 by jm
Argon2 code audits - part one - Infer
A pretty viable way to run Facebook's Infer dataflow static analysis tool (which is otherwise quite a bear to run).
infer  facebook  java  clang  errors  static-analysis  lint  dataflow  docker 
february 2016 by jm
wangle/Codel.h at master · facebook/wangle
Facebook's open-source implementation of the CoDel queue management algorithm applied to server request-handling capacity in their C++ service bootstrap library, Wangle.
wangle  facebook  codel  services  capacity  reliability  queueing 
november 2015 by jm
How Facebook avoids failures
Great paper from Ben Maurer of Facebook in ACM Queue.
A "move-fast" mentality does not have to be at odds with reliability. To make these philosophies compatible, Facebook's infrastructure provides safety valves.


This is full of interesting techniques.

* Rapidly deployed configuration changes: Make everybody use a common configuration system; Statically validate configuration changes; Run a canary; Hold on to good configurations; Make it easy to revert.

* Hard dependencies on core services: Cache data from core services. Provide hardened APIs. Run fire drills.

* Increased latency and resource exhaustion: Controlled Delay (based on the anti-bufferbloat CoDel algorithm -- this is really cool); Adaptive LIFO (last-in, first-out) for queue busting; Concurrency Control (essentially a form of circuit breaker).

* Tools that Help Diagnose Failures: High-Density Dashboards with Cubism (horizon charts); What just changed?

* Learning from Failure: the DERP (!) methodology,
ben-maurer  facebook  reliability  algorithms  codel  circuit-breakers  derp  failure  ops  cubism  horizon-charts  charts  dependencies  soa  microservices  uptime  deployment  configuration  change-management 
november 2015 by jm
Holistic Configuration Management at Facebook
How FB push config changes from Git (where it is code reviewed, version controlled, and history tracked with strong auth) to Zeus (their Zookeeper fork) and from there to live production servers.
facebook  configuration  zookeeper  git  ops  architecture 
october 2015 by jm
Existential Consistency: Measuring and Understanding Consistency at Facebook
The metric is termed φ(P)-consistency, and is actually very simple. A read for the same data is sent to all replicas in P, and φ(P)-consistency is defined as the frequency with which that read returns the same result from all replicas. φ(G)-consistency applies this metric globally, and φ(R)-consistency applies it within a region (cluster). Facebook have been tracking this metric in production since 2012.
facebook  eventual-consistency  consistency  metrics  papers  cap  distributed-computing 
october 2015 by jm
What does it take to make Google work at scale? [slides]
50-slide summary of Google's stack, compared vs Facebook, Yahoo!, and open-source-land, with the odd interesting architectural insight
google  architecture  slides  scalability  bigtable  spanner  facebook  gfs  storage 
august 2015 by jm
Someone discovered that the Facebook iOS application is composed of over 18,000 classes. : programming
_FBGraphQLConnectionStorePersistentPageLoaderOperationDelegate-Protocol.h
_FBReactionAcornSportsContentSettingsSetShouldNotPushNotificationsMutationCall.h
FBBoostedComponentCreateInputDataCreativeObjectStorySpecLinkDataCallToActionValue.h
FBEventUpdateNotificationSubscriptionLevelMutationOptimisticPayloadFactoryProtocol-Protocol.h


I just threw up a little.

See also https://www.facebook.com/notes/facebook-engineering/under-the-hood-dalvik-patch-for-facebook-for-android/10151345597798920 , in which the FB Android devs happily reveal that they hot-patch the Dalvik VM at runtime to work around a limit -- rather than refactoring their app.
facebook  horrors  coding  ios  android  dalvik  hot-patching  apps 
august 2015 by jm
Inside the sad, expensive failure of Google+
"It was clear if you looked at the per user metrics, people weren’t posting, weren't returning and weren’t really engaging with the product," says one former employee. "Six months in, there started to be a feeling that this isn’t really working." Some lay the blame on the top-down structure of the Google+ department and a leadership team that viewed success as the only option for the social network. Failures and disappointing data were not widely discussed. "The belief was that we were always just one weird feature away from the thing taking off," says the same employee.
google  google+  failures  post-mortems  business  facebook  social-media  fail  bureaucracy  vic-gundotra 
august 2015 by jm
Taming Complexity with Reversibility
This is a great post from Kent Beck, putting a lot of recent deployment/rollout patterns in a clear context -- that of supporting "reversibility":
Development servers. Each engineer has their own copy of the entire site. Engineers can make a change, see the consequences, and reverse the change in seconds without affecting anyone else.
Code review. Engineers can propose a change, get feedback, and improve or abandon it in minutes or hours, all before affecting any people using Facebook.
Internal usage. Engineers can make a change, get feedback from thousands of employees using the change, and roll it back in an hour.
Staged rollout. We can begin deploying a change to a billion people and, if the metrics tank, take it back before problems affect most people using Facebook.
Dynamic configuration. If an engineer has planned for it in the code, we can turn off an offending feature in production in seconds. Alternatively, we can dial features up and down in tiny increments (i.e. only 0.1% of people see the feature) to discover and avoid non-linear effects.
Correlation. Our correlation tools let us easily see the unexpected consequences of features so we know to turn them off even when those consequences aren't obvious.
IRC. We can roll out features potentially affecting our ability to communicate internally via Facebook because we have uncorrelated communication channels like IRC and phones.
Right hand side units. We can add a little bit of functionality to the website and turn it on and off in seconds, all without interfering with people's primary interaction with NewsFeed.
Shadow production. We can experiment with new services under real load, from a tiny trickle to the whole flood, without affecting production.
Frequent pushes. Reversing some changes require a code change. On the website we never more than eight hours from the next schedule code push (minutes if a fix is urgent and you are willing to compensate Release Engineering). The time frame for code reversibility on the mobile applications is longer, but the downward trend is clear from six weeks to four to (currently) two.
Data-informed decisions. (Thanks to Dave Cleal) Data-informed decisions are inherently reversible (with the exceptions noted below). "We expect this feature to affect this metric. If it doesn't, it's gone."
Advance countries. We can roll a feature out to a whole country, generate accurate feedback, and roll it back without affecting most of the people using Facebook.
Soft launches. When we roll out a feature or application with a minimum of fanfare it can be pulled back with a minimum of public attention.
Double write/bulk migrate/double read. Even as fundamental a decision as storage format is reversible if we follow this format: start writing all new data to the new data store, migrate all the old data, then start reading from the new data store in parallel with the old.


We do a bunch of these in work, and the rest are on the to-do list. +1 to these!
software  deployment  complexity  systems  facebook  reversibility  dark-releases  releases  ops  cd  migration 
july 2015 by jm
That time the Internet sent a SWAT team to my mom's house - Boing Boing
The solution is for social media sites and the police to take threats or jokes about swatting, doxxing, and organized crime seriously. Tweeting about buying a gun and shooting up a school would be taken seriously, and so should the threat of raping, doxxing, swatting or killing someone. Privacy issues and online harassment are directly linked, and online harassment isn’t going anywhere. My fear is that, in reaction to online harassment, laws will be passed that will break down our civil freedoms and rights online, and that more surveillance will be sold to users under the guise of safety. More surveillance, however, would not have helped me or my mother. A platform that takes harassment and threats seriously instead of treating them like jokes would have.
twitter  gamergate  4chan  8chan  privacy  doxxing  swatting  harrassment  threats  social-media  facebook  law  feminism 
july 2015 by jm
Patrick Shuff - Building A Billion User Load Balancer - SCALE 13x - YouTube
'Want to learn how Facebook scales their load balancing infrastructure to support more than 1.3 billion users? We will be revealing the technologies and methods we use to route and balance Facebook's traffic. The Traffic team at Facebook has built several systems for managing and balancing our site traffic, including both a DNS load balancer and a software load balancer capable of handling several protocols. This talk will focus on these technologies and how they have helped improve user performance, manage capacity, and increase reliability.'

Can't find the standalone slides, unfortunately.
facebook  video  talks  lbs  load-balancing  http  https  scalability  scale  linux 
june 2015 by jm
Facebook Infer
New static analysis goodnews, freshly open-sourced by Facebook:
Facebook Infer uses logic to do reasoning about a program's execution, but reasoning at this scale — for large applications built from millions of lines of source code — is hard. Theoretically, the number of possibilities that need to be checked is more than the number of estimated atoms in the observable universe. Furthermore, at Facebook our code is not a fixed artifact but an evolving system, updated frequently and concurrently by many developers. It is not unusual to see more than a thousand modifications to our mobile code submitted for review in a given day. The requirements on the program analyzer then become even more challenging because we expect a tool to report quickly on these code modifications — in the region of 10 minutes — to fit in with developers' workflow. Coping with this scale and velocity requires advanced mathematical techniques. Facebook Infer uses two such techniques: separation logic and bi-abduction.

Separation logic is a theory that allows Facebook Infer's analysis to reason about small, independent parts of the application storage, rather than having to consider the entirety of the memory potentially at every step. That would be a daunting task on modern processors with their large addressable virtual memories.

Bi-abduction is a logical inference technique that allows Facebook Infer to discover properties about the behavior of independent parts of the application code. By storing these properties between runs, Facebook Infer needs to analyze only the parts of the software that have changed, reusing the results of its previous analysis where it can.

By combining these approaches, our analyzer is able to find complex problems in modifications to an application built from millions of lines of code, in minutes.


(via Bryan O'Sullivan)
via:bos  infer  facebook  static-analysis  lint  code  java  ios  android  coding  bugs 
june 2015 by jm
Buck
A high-performance java build tool, from Facebook. Make-like
android  build  java  make  coding  facebook 
june 2015 by jm
The Agency - NYTimes.com
Russia's troll farms. Ladies and gentlemen -- the future
future  abuse  trolls  russia  trolling  politics  social-media  twitter  facebook 
june 2015 by jm
Race conditions on Facebook, DigitalOcean and others
good trick -- exploit eventual consistency and a lack of distributed transactions by launching race-condition-based attacks
attacks  exploits  race-conditions  bugs  eventual-consistency  distributed-transactions  http  facebook  digitalocean  via:aphyr 
april 2015 by jm
J. G. Ballard predicted social media in a 1977 essay for Vogue
'In the intro essay to High Rise it says that J G Ballard predicted social media in a 1977 essay for Vogue. Here it is'
j-g-ballard  social-media  twitter  instagram  youtube  future  society  vogue  1977  facebook  media 
april 2015 by jm
EU-US data pact skewered in court hearing
A lawyer for the European Commission told an EU judge on Tuesday (24 March) he should close his Facebook page if he wants to stop the US snooping on him, in what amounts to an admission that Safe Harbour, an EU-US data protection pact, doesn’t work.
safe-harbour  privacy  data-protection  ecj  eu  ec  surveillance  facebook  nsa  gchq 
march 2015 by jm
Real World Crypto 2015: Password Hashing according to Facebook
Very interesting walkthrough of how Facebook hash user passwords, including years of accreted practices
facebook  passwords  authentication  legacy  web  security 
march 2015 by jm
RIPQ: Advanced photo caching on flash for Facebook
Interesting priority-queue algorithm optimised for caching data on SSD
priority-queue  algorithms  facebook  ssd  flash  caching  ripq  papers 
february 2015 by jm
Coining "Dysguria"
“dysaguria” is the perfect noun, and “dysagurian” is the perfect adjective, to describe the eponymous company in Dave Eggers’ The Circle. It’s not in the same league as Orwell, or Huxley, or Bradbury, or Burgess. But it does raise very important questions about what could possibly go wrong if one company controlled all the world’s information. In the novel, the company operates according to the motto “all that happens must be known”; and one of its bosses, Eamon Bailey, encourages everywoman employee Mae Holland to live an always-on (clear, transparent) life according the maxims “secrets are lies”, “sharing is caring”, and “privacy is theft”. Eggers’s debts to dystopian fiction are apparent. But, whereas writers like Orwell, Huxley, Bradbury, and Burgess were concerned with totalitarian states, Eggers is concerned with a totalitarian company. However, the noun “dystopia” and the adjective “dystopian” – perfect though they are for the terror of military/security authoritarianism in 1984, or Brave new World, or Farenheit 451, or A Clockwork Orange – do not to my mind encapsulate the nightmare of industrial/corporate tyranny in The Circle. On the other hand, “dysaguria” as a noun and “dysagurian” as an adjective, in my view really do capture the essence of that “frightening company”.
dysaguria  dystopia  future  sf  authoritarianism  surveillance  the-circle  google  facebook 
february 2015 by jm
Ever liked a film on Facebook? You’ve given the security services a key to your soul
The researchers started with 86,000 subjects who had filled out the 100-question personality profile – and this, of course, was done as another app on Facebook – and whose personality scores had been matched by algorithms with their Facebook likes. They then found 17,000 who were willing to have a friend or family member take the personality test on their behalf, trying to predict the answers they would give.

The results, from most humans, were stunningly inaccurate. Friends, family and co-workers were all less able to predict how someone would fill out a personality test than the algorithms that had been primed with the subject’s Facebook likes. With only 10 likes to work on, the computer was more accurate than a work colleague would be. With 150 likes, it described the subject’s personality better than a parent or sibling could. And with 300 likes to work on, it was more accurate than a spouse.
likes  facebook  privacy  prism  surveillance  profiling  personality 
january 2015 by jm
Zeldman on Facebook's "Year In Review" feature
This is a great point.
When you put together teams of largely homogenous people of the same class and background, and pay them a lot of money, and when most of those people are under 30, it stands to reason that when someone in the room says, “Let’s do ‘your year in review, and front-load it with visuals,’” most folks in the room will imagine photos of skiing trips, parties, and awards shows— not photos of dead spouses, parents, and children.

So it comes back to this. When we talk about the need for diversity in tech, we’re not doing it because we like quota systems. Diverse backgrounds produce differing points of view. And those differences are needed if we are to put the flowering of internet genius to use actually helping humanity with its many terrifying and seemingly intractable problems.
best-practices  sensitivity  culture  design  silicon-valley  youth  privilege  facebook 
december 2014 by jm
Solving the Mystery of Link Imbalance: A Metastable Failure State at Scale | Engineering Blog | Facebook Code
Excellent real-world war story from Facebook -- a long-running mystery bug was eventually revealed to be a combination of edge-case behaviours across all the layers of the networking stack, from L2 link aggregation at the agg-router level, up to the L7 behaviour of the MySQL client connection pool.
Facebook collocates many of a user’s nodes and edges in the social graph. That means that when somebody logs in after a while and their data isn’t in the cache, we might suddenly perform 50 or 100 database queries to a single database to load their data. This starts a race among those queries. The queries that go over a congested link will lose the race reliably, even if only by a few milliseconds. That loss makes them the most recently used when they are put back in the pool. The effect is that during a query burst we stack the deck against ourselves, putting all of the congested connections at the top of the deck.
architecture  debugging  devops  facebook  layer-7  mysql  connection-pooling  aggregation  networking  tcp-stack 
november 2014 by jm
Flow, a new static type checker for JavaScript
Unlike the (excellent) Typescript, it'll infer types:
Flow’s type checking is opt-in — you do not need to type check all your code at once. However, underlying the design of Flow is the assumption that most JavaScript code is implicitly statically typed; even though types may not appear anywhere in the code, they are in the developer’s mind as a way to reason about the correctness of the code. Flow infers those types automatically wherever possible, which means that it can find type errors without needing any changes to the code at all. On the other hand, some JavaScript code, especially frameworks, make heavy use of reflection that is often hard to reason about statically. For such inherently dynamic code, type checking would be too imprecise, so Flow provides a simple way to explicitly trust such code and move on. This design is validated by our huge JavaScript codebase at Facebook: Most of our code falls in the implicitly statically typed category, where developers can check their code for type errors without having to explicitly annotate that code with types.
facebook  flow  javascript  coding  types  type-inference  ocaml  typescript 
november 2014 by jm
Facebook's datacenter fabric
FB goes public with its take on the Clos network-based datacenter network architecture
networking  scaling  facebook  clos-networks  fabrics  datacenters  network-architecture 
november 2014 by jm
Introducing Proxygen, Facebook's C++ HTTP framework
Facebook's take on libevent, I guess:
We are excited to announce the release of Proxygen, a collection of C++ HTTP libraries, including an easy-to-use HTTP server. In addition to HTTP/1.1, Proxygen (rhymes with "oxygen") supports SPDY/3 and SPDY/3.1. We are also iterating and developing support for HTTP/2.

Proxygen is not designed to replace Apache or nginx — those projects focus on building extremely flexible HTTP servers written in C that offer good performance but almost overwhelming amounts of configurability. Instead, we focused on building a high performance C++ HTTP framework with sensible defaults that includes both server and client code and that's easy to integrate into existing applications. We want to help more people build and deploy high performance C++ HTTP services, and we believe that Proxygen is a great framework to do so.
c++  facebook  http  servers  libevent  https  spdy  proxygen  libraries 
november 2014 by jm
The Laborers Who Keep Dick Pics and Beheadings Out of Your Facebook Feed | WIRED
“Everybody hits the wall, generally between three and five months,” says a former YouTube content moderator I’ll call Rob. “You just think, ‘Holy shit, what am I spending my day doing? This is awful.’”
facebook  wired  beheadings  moderation  nsfw  google  youtube  social-media  filtering  porn  abuse 
october 2014 by jm
Emergent
"Snopes for Twitter". great idea
aggregator  facebook  twitter  snopes  urban-legends  news  rumours 
october 2014 by jm
mcrouter: A memcached protocol router for scaling memcached deployments
New from Facebook engineering:
Last year, at the Data@Scale event and at the USENIX Networked Systems Design and Implementation conference , we spoke about turning caches into distributed systems using software we developed called mcrouter (pronounced “mick-router”). Mcrouter is a memcached protocol router that is used at Facebook to handle all traffic to, from, and between thousands of cache servers across dozens of clusters distributed in our data centers around the world. It is proven at massive scale — at peak, mcrouter handles close to 5 billion requests per second. Mcrouter was also proven to work as a standalone binary in an Amazon Web Services setup when Instagram used it last year before fully transitioning to Facebook's infrastructure.

Today, we are excited to announce that we are releasing mcrouter’s code under an open-source BSD license. We believe it will help many sites scale more easily by leveraging Facebook’s knowledge about large-scale systems in an easy-to-understand and easy-to-deploy package.


This is pretty crazy -- basically turns a memcached cluster into a much more usable clustered-storage system, with features like shadowing production traffic, cold cache warmup, online reconfiguration, automatic failover, prefix-based routing, replicated pools, etc. Lots of good features.
facebook  scaling  cache  proxy  memcache  open-source  clustering  distcomp  storage 
september 2014 by jm
Facebook's drop-in replacement for std::vector
Fixes some low-hanging fruit, performance-wise.

'Simply replacing std::vector with folly::fbvector (after having included the folly/FBVector.h header file) will improve the performance of your C++ code using vectors with common coding patterns. The improvements are always non-negative, almost always measurable, frequently significant, sometimes dramatic, and occasionally spectacular.'

(via Tony Finch)
c++  facebook  performance  algorithms  vectors  via:fanf  optimization 
september 2014 by jm
The problem with OKCupid is the problem with the social web
This is why it really stings whenever somebody turns around and says, "well actually, the terms you've signed give us permission to do whatever we want. Not just the thing you were afraid of, but a huge range of things you never thought of." You can't on one hand tell us to pay no attention when you change these things on us, and with the other insist that this is what we've really wanted to do all along. I mean, fuck me over, but don't tell me that I really wanted you to fuck me over all along.

Because ultimately, the reason you needed me to agree in the first place isn't just because I'm using your software, but because you're using my stuff. And the reason I'm letting you use my stuff, and spending all this time working on it, is so that you can show it to people. I'm not just a user of your service, somebody who reads the things that you show it to me: I'm one of the reasons you have anything that you can show to anyone at all.
users  web  facebook  okcupid  terms-of-service  jason-kottke  privacy  a-b-testing  experiments  ethics 
august 2014 by jm
How A Spam Newsletter Caused a Bank Run in Bulgaria
According to the Bulgarian National Security Agency (see here, for a reporting in English), an investment company that “built a network of associated companies for marketing services” that was used to diffuse panic by means of an alert, uncomfortably titled “Information Bulletin of on the Risk of Deposits in Bulgarian Banks”. The “bulletin” claimed – Bloomberg reports – KTB was undergoing a liquidity shortage. The message apparently also said that the government deposit guarantee fund was under-capitalised to meet possible repayments, that banks could go bankrupt and that the peg of the currency with the euro could be broken. Allegedly, the alert was diffused by text, email and even Facebook messages, thus ensuring a very widespread outreach. In a country that in 1997 underwent a very serious banking crisis featuring all these characteristics – whose memory is still fresh – this was enough to spur panic.
spam  banking  bulgaria  banks  euro  panic  facebook  social-media 
july 2014 by jm
Facebook Doesn't Understand The Fuss About Its Emotion Manipulation Study
This is quite unethical, and I'm amazed it was published at all. Kashmir Hill at Forbes nails it:
While many users may already expect and be willing to have their behavior studied — and while that may be warranted with “research” being one of the 9,045 words in the data use policy — they don’t expect that Facebook will actively manipulate their environment in order to see how they react. That’s a new level of experimentation, turning Facebook from a fishbowl into a petri dish, and it’s why people are flipping out about this.


Shocking stuff. We need a new social publishing platform, built on ethical, open systems.
ethics  facebook  privacy  academia  depression  feelings  emotion  social-publishing  social  experimentation  papers 
june 2014 by jm
Facebook introduce “Wedge” and “FBOSS"
a new top-of-rack network switch, code-named “Wedge,” and a new Linux-based operating system for that switch, code-named “FBOSS.” These projects break down the hardware and software components of the network stack even further, to provide a new level of visibility, automation, and control in the operation of the network. By combining the hardware and software modules together in new ways, “Wedge” and “FBOSS” depart from current networking design paradigms to leverage our experience in operating hundreds of thousands of servers in our data centers. In other words, our goal with these projects was to make our network look, feel, and operate more like the OCP servers we've already deployed, both in terms of hardware and software.


Sayonara, Cisco, and good riddance.
cisco  juniper  wedge  fboss  facebook  tor  switches  racks  networking  datacenter  routers 
june 2014 by jm
An analysis of Facebook photo caching
excellent analysis of caching behaviour at scale, from the FB engineering blog (via Tony Finch)
via:fanf  caching  facebook  architecture  photos  images  cache  fifo  lru  scalability 
may 2014 by jm
Syria's lethal Facebook checkpoints
An anonymous tip from a highly reliable source: "There are checkpoints in Syria where your Facebook is checked for affiliation with the rebellious groups or individuals aligned with the rebellion. People are then disappeared or killed if they are found to be connected. Drivers are literally forced to load their Facebook/Twitter accounts and then they are riffled through. It's happening daily, and has been for a year at least."
boing-boing  war  facebook  social-media  twitter  internet  checkpoints  syria 
april 2014 by jm
Netty Best Practices
'a.k.a. Faster == Better'. Slides from a talk given at Facebook on 19th March 2014 by Norman Maurer
netty  java  performance  optimization  facebook  slides  presentations 
april 2014 by jm
Survey results of EU teens using the internet
A lot of unsupervised use:
Just under half of children said they access the internet from their own bedroom on a daily basis with 22pc saying they do so several times a day.
surveys  eu  ireland  politics  filtering  internet  social-media  facebook  children  teens  cyber-bullying 
february 2014 by jm
Packet Flight: Facebook News Feed @8X
good dataviz of a HTTP page load: 'this is a visualization of a Facebook News Feed load from the perspective of the client, over a 3G wireless connection. Different packet types have different shapes and colors.' (via John Harrington)
via:johnharrington  visualization  facebook  dataviz  networking  tcp  3g 
january 2014 by jm
Paul Graham and the Manic Pixie Dream Hacker
Under Graham’s influence, Mark [Zuckerberg], like many in Silicon Valley, subscribes to the Manic Pixie Dream Hacker ideal, making self-started teenage hackers Facebook’s most desired recruiting targets, not even so much for their coding ability as their ability to serve as the faces of hacking culture. “Culture fit”, in this sense, is one’s ability to conform to the Valley’s boyish hacker fantasy, which is easier, obviously, the closer you are to a teenage boy.

Like the Manic Pixie Dream Girl’s role of existing to serve the male film protagonist’s personal growth, the Manic Pixie Dream Hacker’s job is to embody the dream hacker role while growing the VC’s portfolio. This is why the dream hacker never ages, never visibly develops interests beyond hardware and code, and doesn’t question why nearly all the other people receiving funding look like him. Like the actress playing the pixie dream girl, the pixie dream boy isn’t being paid to question the role for which he has been cast.

In this way, for all his supposed “disruptiveness”, the hacker pixie actually does exactly what he is told: to embody, while he can, the ideal hacker, until he is no longer young, mono-focused, and boyish-seeming enough to qualify for the role (at that point, vested equity may allow him to retire). And like in Hollywood, VCs will have already recruited newer, younger ones to play him.
hackers  manic-pixie-dream-girl  culture-fit  silicon-valley  mark-zuckerberg  paul-graham  y-combinator  vc  work  investment  technology  recruitment  facebook  ageism  equality  sexism 
january 2014 by jm
Photographer wins $1.2 million from companies that took pictures off Twitter | Reuters
The jury found that Agence France-Presse and Getty Images willfully violated the Copyright Act when they used photos Daniel Morel took in his native Haiti after the 2010 earthquake that killed more than 250,000 people, Morel's lawyer, Joseph Baio, said
copyright  twitter  facebook  social-media  via:niall-harbison  law  getty-images  afp  daniel-morel  haiti  photography 
november 2013 by jm
RocksDB
' A persistent key-value store for fast storage environments', ie. BerkeleyDB/LevelDB competitor, from Facebook.
RocksDB builds on LevelDB to be scalable to run on servers with many CPU cores, to efficiently use fast storage, to support IO-bound, in-memory and write-once workloads, and to be flexible to allow for innovation.

We benchmarked LevelDB and found that it was unsuitable for our server workloads. Thebenchmark results look awesome at first sight, but we quickly realized that those results were for a database whose size was smaller than the size of RAM on the test machine - where the entire database could fit in the OS page cache. When we performed the same benchmarks on a database that was at least 5 times larger than main memory, the performance results were dismal.

By contrast, we've published the RocksDB benchmark results for server side workloads on Flash. We also measured the performance of LevelDB on these server-workload benchmarks and found that RocksDB solidly outperforms LevelDB for these IO bound workloads. We found that LevelDB's single-threaded compaction process was insufficient to drive server workloads. We saw frequent write-stalls with LevelDB that caused 99-percentile latency to be tremendously large. We found that mmap-ing a file into the OS cache introduced performance bottlenecks for reads. We could not make LevelDB consume all the IOs offered by the underlying Flash storage.


Lots of good discussion at https://news.ycombinator.com/item?id=6736900 too.
flash  ssd  rocksdb  databases  storage  nosql  facebook  bdb  disk  key-value-stores  lsm  leveldb 
november 2013 by jm
Presto: Interacting with petabytes of data at Facebook
Presto has become a major interactive system for the company’s data warehouse. It is deployed in multiple geographical regions and we have successfully scaled a single cluster to 1,000 nodes. The system is actively used by over a thousand employees,who run more than 30,000 queries processing one petabyte daily.

Presto is 10x better than Hive/MapReduce in terms of CPU efficiency and latency for most queries at Facebook. It currently supports a large subset of ANSI SQL, including joins, left/right outer joins, subqueries,and most of the common aggregate and scalar functions, including approximate distinct counts (using HyperLogLog) and approximate percentiles (based on quantile digest). The main restrictions at this stage are a size limitation on the join tables and cardinality of unique keys/groups. The system also lacks the ability to write output data back to tables (currently query results are streamed to the client).
facebook  hadoop  hdfs  open-source  java  sql  hive  map-reduce  querying  olap 
november 2013 by jm
Bruce Schneier On The Feudal Internet And How To Fight It
This is very well-put.
In its early days, there was a lot of talk about the "natural laws of the Internet" and how it would empower the masses, upend traditional power blocks, and spread freedom throughout the world. The international nature of the Internet made a mockery of national laws. Anonymity was easy. Censorship was impossible. Police were clueless about cybercrime. And bigger changes were inevitable. Digital cash would undermine national sovereignty. Citizen journalism would undermine the media, corporate PR, and political parties. Easy copying would destroy the traditional movie and music industries. Web marketing would allow even the smallest companies to compete against corporate giants. It really would be a new world order.
Unfortunately, as we know, that's not how it worked out. Instead, we have seen the rise of the feudal Internet:
Feudal security consolidates power in the hands of the few. These companies [like Google, Apple, Microsoft, Facebook etc.] act in their own self-interest. They use their relationship with us to increase their profits, sometimes at our expense. They act arbitrarily. They make mistakes. They're deliberately changing social norms. Medieval feudalism gave the lords vast powers over the landless peasants; we’re seeing the same thing on the Internet.
bruce-schneier  politics  internet  feudal-internet  google  apple  microsoft  facebook  government 
october 2013 by jm
« earlier      
per page:    204080120160

related tags

3g  4chan  8chan  a-b-testing  abuse  academia  admin  adversarial-classification  advertising  afp  africa  ageism  aggregation  aggregator  aging  algorithms  aliases  alter-table  analytics  android  angola  apache  apis  append  apple  apps  architecture  asf  asl2  asylum  async  atom  attacks  authentication  authoritarianism  automation  autoscaling  awful  backdoors  bad-data  banking  banks  bbc  bdb  beheadings  belief  ben-maurer  benchmarks  beringei  best-practices  bias  big-data  bigtable  blocking  blogs  blu-ray  boing-boing  bots  bruce-schneier  bsd  bugs  build  bulgaria  bureaucracy  business  buzzfeed  c++  c++11  cache  caching  callbacks  cap  capacity  cd  censorship  change-management  charts  checkpoints  children  circuit-breakers  cisco  civ  clang  claspin  click-farms  clos-networks  cloyne-report  clustering  clusters  code  code-analysis  codel  coding  collections  comet  complexity  compression  computer-says-no  configuration  connection-pooling  consistency  conspiracy-theories  control  copyright  counter-terrorism  crazy  cubism  culture  culture-fit  cyber-bullying  cyberstalking  dalvik  danah-boyd  daniel-morel  dark-releases  data  data-protection  data-retention  data-science  data-structures  database  databases  datacenter  datacenters  dataflow  datamining  dataviz  dead-media  debugging  democracy  demographics  denmark  dependencies  deployment  depression  derp  design  devops  dhcp  dhcplb  digitalocean  disk  distcomp  distributed-computing  distributed-transactions  do-not-like  docker  dole  donald-trump  doxxing  dublin  duh  dutch  dysaguria  dystopia  ec  echo-chambers  ecj  egg-freezing  elections  emotion  engineering  epoll  equality  erasure-coding  erlang  error-correction  errors  ethics  eu  euro  events  eventual-consistency  experimentation  experiments  exploits  export  fabrics  facebook  facebook-api  fail  failure  failures  fake-news  false-positives  family  farmville  fastutil  fat-tree  fault-tolerance  fax  fboss  feeds  feelings  feminism  feudal-internet  fifo  filtering  fine-gael  flash  flow  forms  fraud  fred-benenson  freedom  friendfeed  funny  future  futures  gamergate  games  gaming  gaslighting  gchq  getty-images  gfs  giraph  git  github  go  golang  google  google+  government  graph  graphql  grep  grim-meathook-future  hackers  hacking  hacks  hadoop  haiti  hardware  harrassment  haystack  hbase  hdfs  heatmaps  hive  hoaxes  holland  horizon-charts  horrors  hot-patching  howto  http  https  humor  images  imro  infer  infowars  infrastructure  instagram  insurance  intern  internet  investment  ios  ireland  j-g-ballard  jason-kottke  java  javascript  journalism  juniper  jwz  karlin-lillington  key-value-stores  kids  languages  law  layer-7  lbs  legacy  legal  leveldb  libevent  libraries  licenses  licensing  lies  life  likes  linkedin  lint  linux  load-balancers  load-balancing  lobbying  long-poll  low-latency  lru  lsm  luis-villa  lulz  lzo  macedonia  machine-learning  maciej-ceglowski  make  manic-pixie-dream-girl  map-reduce  maps  mark-zuckerberg  math  maths  mathwashing  media  memcache  memcached  messaging  metrics  mh-17  micro-advertising  microservices  microsoft  migration  migrations  misinformation  missiles  ml  mobile  moderation  monitoring  morality  mp3  multi-az  multi-region  multifeed  music  mysql  netty  network-architecture  networking  networks  news  newsfeed  nosql  nsa  nsfw  ocaml  offline  offshoring  okcupid  olap  online  open-source  opensource  ops  opt-out  optimization  panic  papers  passwords  pat-toomey  patents  paul-graham  pen-tests  performance  perks  personal-data  personality  pheme  phones  photography  photos  piracy  plovdiv  politics  polling  porn  post-mortems  power  pr  pranks  prejudice  presentations  priority-queue  prism  privacy  privilege  profiling  propaganda  proxy  proxygen  psychology  pub-sub  public  punkd  python  querying  queueing  quora  race  race-conditions  racism  racks  react  real-names  realtime  recruitment  redundancy  reed-solomon  releases  reliability  repair  replication  republicans  reversibility  review  ripq  rocksdb  role-accounts  routers  royalty  rss  rumours  russia  safe-harbour  safety  sam  scalability  scale  scaling  scams  schema  science  scoring  scribe  searching  security  sensitivity  servers  services  sexism  sf  shadowing  shakedown  silicon-valley  slackers  slides  sms  snooping  snopes  snowden  soa  social  social-gaming  social-graph  social-media  social-publishing  socialnetworking  society  software  south-africa  spam  spanner  spdy  speed  spinvox  sql  ssd  static-analysis  statistics  storage  strong-types  surveillance  surveys  swatting  switches  swpats  syndication  syria  systems  tail  talks  tcp  tcp-stack  techcrunch  technology  teens  terms-of-service  testing  text-analysis  thailand  the-circle  threading  threats  time-series  tor  tornado  tragedy  training  transcription  trolling  trolls  trump  truth  tsd  tunisia  twitter  twolicy  type-inference  types  typescript  ugh  ui  ukraine  uptime  urban-legends  us-politics  users  vatican  vc  vectors  veles  via:aphyr  via:bos  via:eoinbrazil  via:fanf  via:highscalability  via:james-hamilton  via:johnharrington  via:niall-harbison  via:spicylinks  via:tjmcintyre  viber  vic-gundotra  video  viral  visualization  vogue  wangle  war  war-crimes  web  websites  wedge  welfare  whatsapp  whoops  wikipedia  wired  work  work-life-balance  workloads  wormhole  y-combinator  youth  youtube  zookeeper 

Copy this bookmark:



description:


tags: