10 interesting stories served every morning and every evening.
We have a surprise for you today: Raspberry Pi 4 is now on sale, starting at $35. This is a comprehensive upgrade, touching almost every element of the platform. For the ﬁrst time we provide a PC-like level of performance for most users, while retaining the interfacing capabilities and hackability of the classic Raspberry Pi line.
Get your Raspberry Pi 4 now: http://rpf.io/ytraspberrypi4 #RaspberryPi4 Subscribe to our YouTube channel: http://rpf.io/ytsub Help us reach a wider audience by translating our video content: http://rpf.io/yttranslate Buy a Raspberry Pi from one of our Approved Resellers: http://rpf.io/ytproducts Find out more about the #RaspberryPi Foundation: Raspberry Pi http://rpf.io/ytrpi Code Club UK http://rpf.io/ytccuk Code Club International http://rpf.io/ytcci CoderDojo http://rpf.io/ytcd Check out our free online training courses: http://rpf.io/ytﬂ Find your local Raspberry Jam event: http://rpf.io/ytjam Work through our free online projects: http://rpf.io/ytprojects Do you have a question about your Raspberry Pi?
Get yours today from our Approved Resellers, or from the Raspberry Pi Store in Cambridge, open today 8am–8pm!
Here are the highlights:
* Two USB 3.0 and two USB 2.0 ports
* Dual monitor support, at resolutions up to 4K
And here it is in the ﬂesh:
This is the ﬁrst time we’re offering a choice of memory capacities. We’ve gone for the following price structure, retaining our signature $35 price for the entry-level model:
As always these prices exclude sales tax, import duty (where appropriate), and shipping. All three variants are launching today: we have initially built more of the 2GB variant than of the others, and will adjust the mix over time as we discover which one is most popular.
At ﬁrst glance, the Raspberry Pi 4 board looks very similar to our previous $35 products, all the way back to 2014’s Raspberry Pi 1B+. James worked hard to keep it this way, but for the ﬁrst time he has made a small number of essential tweaks to the form factor to accommodate new features.
We’ve moved from USB micro-B to USB-C for our power connector. This supports an extra 500mA of current, ensuring we have a full 1.2A for downstream USB devices, even under heavy CPU load.
To accommodate dual display output within the existing board footprint, we’ve replaced the type-A (full-size) HDMI connector with a pair of type-D (micro) HDMI connectors.
Our Gigabit Ethernet magjack has moved to the top right of the board, from the bottom right, greatly simplifying PCB routing. The 4-pin Power-over-Ethernet (PoE) connector remains in the same location, so Raspberry Pi 4 remains compatible with the PoE HAT.
The Ethernet controller on the main SoC is connected to an external Broadcom PHY over a dedicated RGMII link, providing full throughput. USB is provided via an external VLI controller, connected over a single PCI Express Gen 2 lane, and providing a total of 4Gbps of bandwidth, shared between the four ports.
All three connectors on the right-hand side of the board overhang the edge by an additional millimetre, with the aim of simplifying case design. In all other respects, the connector and mounting hole layout remains the same, ensuring compatibility with existing HATs and other accessories.
To support Raspberry Pi 4, we are shipping a radically overhauled operating system, based on the forthcoming Debian 10 Buster release. This brings numerous behind-the-scenes technical improvements, along with an extensively modernised user interface, and updated applications including the Chromium 74 web browser. Simon will take an in-depth look at the changes in tomorrow’s blog post, but for now, here’s a screenshot of it in action.
Some advice for those who are keen to get going with Raspbian Buster right away: we strongly recommend you download a new image, rather than upgrading an existing card. This ensures that you’re starting with a clean, working Buster system. If you really, really want to try upgrading, make a backup ﬁrst.
One notable step forward is that for Raspberry Pi 4, we are retiring the legacy graphics driver stack used on previous models. Instead, we’re using the Mesa “V3D” driver developed by Eric Anholt at Broadcom over the last ﬁve years. This offers many beneﬁts, including OpenGL-accelerated web browsing and desktop composition, and the ability to run 3D applications in a window under X. It also eliminates roughly half of the lines of closed-source code in the platform.
Connector and form-factor changes bring with them a requirement for new accessories. We’re sensitive to the fact that we’re requiring people to buy these: Mike and Austin have worked hard to source good-quality, cost-effective products for our reseller and licensee partners, and to ﬁnd low-cost alternatives where possible.
Gordon has been working with our design partners Kinneir Dufort and manufacturers T-Zero to develop an all-new two-part case, priced at $5.
We’re very pleased with how this has turned out, but if you’d like to re-use one of our existing cases, you can simply cut away the plastic ﬁns on the right-hand side and omit one of the side panels as shown below.
Good, low-cost USB-C power supplies (and USB-C cables) are surprisingly hard to ﬁnd, as we discovered when sending out prototype units to alpha testers. So we worked with Ktec to develop a suitable 5V/3A power supply; this is priced at $8, and is available in UK (type G), European (type C), North American (type A) and Australian (type I) plug formats.
If you’d like to re-use a Raspberry Pi 3 Ofﬁcial Power Supply, our resellers are offering a $1 adapter which converts from USB micro-B to USB-C. The thick wires and good load-step response of the old ofﬁcial supply make this a surprisingly competitive solution if you don’t need a full 3 amps.
Again, low-cost micro HDMI cables which reliably support the 6Gbps data rate needed for 4Kp60 video can be hard to ﬁnd. We like the Amazon Basics cable, but we’ve also sourced a 1m cable, which will be available from our resellers for $5.
At the end of last year, Raspberry Pi Press released the Ofﬁcial Raspberry Pi Beginner’s Guide. Gareth Halfacree has produced an updated version, covering the new features of Raspberry Pi 4 and our updated operating system.
Bringing all of this together, we’re offering a complete Desktop Kit. This is priced at $120, and comprises:
* An ofﬁcial mouse and keyboard
This is the ﬁrst product launch following the opening of our store in Cambridge, UK. For the ﬁrst time, you can come and buy Raspberry Pi 4 directly from us, today. We’ll be open from 8am to 8pm, with units set up for you to play with and a couple of thousand on hand for you to buy. We even have some exclusive launch-day swag.
If you’re in the bottom right-hand corner of the UK, come on over and check it out!
Since we launched the original Raspberry Pi in 2012, all our products have been based on 40nm silicon, with performance improvements delivered by adding progressively larger in-order cores (Cortex-A7, Cortex-A53) to the original ARM11-based BCM2835 design. With BCM2837B0 for Raspberry Pi 3B+ we reached the end of that particular road: we could no longer afford to toggle more transistors within our power budget.
Raspberry Pi 4 is built around BCM2711, a complete re-implementation of BCM283X on 28nm. The power savings delivered by the smaller process geometry have allowed us to replace Cortex-A53 with the much more powerful, out-of-order, Cortex-A72 core; this can execute more instructions per clock, yielding performance increases over Raspberry Pi 3B+ of between two and four times, depending on the benchmark.
We’ve taken advantage of the process change to overhaul many other elements of the design. We moved to a more modern memory technology, LPDDR4, tripling available bandwidth; we upgraded the entire display pipeline, including video decode, 3D graphics and display output to support 4Kp60 (or dual 4Kp30) throughput; and we addressed the non-multimedia I/O limitations of previous devices by adding on-board Gigabit Ethernet and PCI Express controllers.
We’ll keep updating this list over the next couple of days, but here are a few to get you started.
Wait, is it 2020 yet?
In the past, we’ve indicated 2020 as a likely introduction date for Raspberry Pi 4. We budgeted time for four silicon revisions of BCM2711 (A0, B0, C0, and C1); in comparison, we ship BCM2835C2 (the ﬁfth revision of that design) on Raspberry Pi 1 and Zero.
Fortunately, 2711B0 has turned out to be production-ready, which has taken roughly 9–12 months out of the schedule.
No. We have a lot of industrial customers who will want to stick with the existing products for the time being. We’ll keep building these models for as long as there’s demand. Raspberry Pi 1B+, 2B, 3B, and 3B+ will continue to sell for $25, $35, $35, and $35 respectively.
Historically, we’ve produced cut-down, lower-cost, versions of some of our $35 products, including Model 1A+ in 2014, and Model 3A+ at the end of last year. At present we haven’t identiﬁed a sensible set of changes to allow us to do a “Model 4A” product at significantly less than $35. We’ll keep looking though.
What about the Compute Module?
CM1, CM3, and CM3+ will continue to be available. We are evaluating options for producing a Compute Module product based on the Raspberry Pi 4 chipset.
Are you still using VideoCore?
Yes. VideoCore 3D is the only publicly documented 3D graphics core for ARM‑based SoCs, and we want to make Raspberry Pi more open over time, not less.
A project like Raspberry Pi 4 is the work of many hundreds of people, and we always try to acknowledge some of those people here.
This time round, particular credit is due to James Adams, who designed the board itself (you’ll ﬁnd his signature under the USB 3.0 socket); to Mike Buffham, who ran the commercial operation, working with suppliers, licensees, and resellers to bring our most complicated product yet to market; and to all those at Raspberry Pi and Broadcom who have worked tirelessly to make this product a reality over the last few years.
A partial list of others who made major direct contributions to the BCM2711 chip program, CYW43455, VL805, and MxL7704 integrations, DRAM qualiﬁcation, and Raspberry Pi 4 itself follows:
If you’re not on this list and think you should be, please let me know, and accept my apologies.
First, he served in the Coast Guard, where he rose to the rank of lieutenant commander. He married, had a family, and devoted himself utterly to his two little girls. After he got out of the military, he worked as a moderator for Facebook, where he purged the social network of the worst stuff that its users post on a daily basis: the hate speech, the murders, the child pornography.
Utley worked the overnight shift at a Facebook content moderation site in Tampa, FL, operated by a professional services vendor named Cognizant. The 800 or so workers there face relentless pressure from their bosses to better enforce the social network’s community standards, which receive near-daily updates that leave its contractor workforce in a perpetual state of uncertainty. The Tampa site has routinely failed to meet the 98 percent “accuracy” target set by Facebook. In fact, with a score that has been hovering around 92, it is Facebook’s worst-performing site in North America.
The stress of the job weighed on Utley, according to his former co-workers, who, like all Facebook contractors at the Tampa site, must sign a 14-page nondisclosure agreement.
“The stress they put on him — it’s unworldly,” one of Utley’s managers told me. “I did a lot of coaching. I spent some time talking with him about things he was having issues seeing. And he was always worried about getting ﬁred.”
On the night of March 9th, 2018, Utley slumped over at his desk. Co-workers noticed that he was in distress when he began sliding out of his chair. Two of them began to perform CPR, but no deﬁbrillator was available in the building. A manager called for an ambulance.
The Cognizant site in Tampa is set back from the main road in an ofﬁce park, and between the dim nighttime lighting and discreet exterior signage, the ambulance appears to have had trouble ﬁnding the building. Paramedics arrived 13 minutes after the ﬁrst call, one worker told me, and when they did, Utley had already begun to turn blue.
Paramedics raced Utley to a hospital. At Cognizant, some employees were distraught — one person told me he passed by one of the site’s designated “tranquility rooms” and found one of his co-workers, a part-time preacher, praying loudly in tongues. Others ignored the commotion entirely, and continued to moderate Facebook posts as the paramedics worked.
Utley was pronounced dead a short while later at the hospital, the victim of a heart attack. Further information about his health history, or the circumstances of his death, could not be learned. He left behind a wife, Joni, and two young daughters. He was 42 years old.
On Monday morning, workers on the day shift were informed that there had been an incident, and they began collecting money to buy a card and send ﬂowers. But some site leaders did not initially tell workers that Utley had died, and instructed managers not to discuss his death, current and former employees told me.
“Everyone at leadership was telling people he was ﬁne — ‘oh, he’ll be okay,’” one co-worker recalled. “They wanted to play it down. I think they were worried about people quitting with the emotional impact it would have.”
But the illusion shattered later that day, when Utley’s father, Ralph, came to the site to gather his belongings. He walked into the building and, according to a co-worker I spoke to, said: “My son died here.”
In February, I wrote about the secret lives of Facebook contractors in America. Since 2016, when the company came under heavy criticism for failing to prevent various abuses of its platform, Facebook has expanded its workforce of people working on safety and security around the world to 30,000. About half of those are content moderators, and the vast majority are contractors hired through a handful of large professional services ﬁrms. In 2017, Facebook began opening content moderation sites in American cities including Phoenix, Austin, and Tampa. The goal was to improve the accuracy of moderation decisions by entrusting them to people more familiar with American culture and slang.
Cognizant received a two-year, $200 million contract from Facebook to do the work, according to a former employee familiar with the matter. But in return for policing the boundaries of free expression on one of the internet’s largest platforms, individual contractors in North America make as little as $28,800 a year. They receive two 15-minute breaks and a 30-minute lunch each day, along with nine minutes per day of “wellness” time that they can use when they feel overwhelmed by the emotional toll of the job. After regular exposure to graphic violence and child exploitation, many workers are subsequently diagnosed with post-traumatic stress disorder and related conditions.
My initial report focused on Phoenix, where workers told me that they had begun to embrace fringe views after continuously being exposed to conspiracy theories at work. One brought a gun to work to protect himself against the possibility of a ﬁred employee returning to the ofﬁce seeking vengeance. Others told me they are haunted by visions of the images and videos they saw during their time on the job.
Conditions at the Phoenix site have not improved significantly since I visited. Last week, some employees were sent home after an infestation of bed bugs was discovered in the ofﬁce — the second time bed bugs have been found there this year. Employees who contacted me worried that the infestation would spread to their own homes, and said managers told them Cognizant would not pay to clean their homes.
“Bed bugs can be found virtually every place people tend to gather, including the workplace,” Cognizant said in a statement. “No associate at this facility has formally asked the company to treat an infestation in their home. If someone did make such a request, management would work with them to ﬁnd a solution.”
Facebook executives have maintained that the working conditions described to me by dozens of contractors do not accurately reﬂect the daily lives of the majority of its workers. But after publishing my story about Phoenix, I received dozens of messages from other contractors around the world, many of whom reported having similar experiences. The largest single group of messages I received came from current and former Facebook contractors in Tampa. Many of them have worked closely with employees at the Phoenix site, and believe working conditions in Florida are even more grim.
In May, I traveled to Florida to meet with these Facebook contractors. This article is based on interviews with 12 current and former moderators and managers at the Tampa site. In most cases, I agreed to use pseudonyms to protect the employees from potential retaliation from Facebook and Cognizant. But for the ﬁrst time, three former moderators for Facebook in North America agreed to break their nondisclosure agreements and discuss working conditions at the site on the record.
Employees told me that pressure from managers to improve its performance has taken a toll on the workforce. Cognizant’s contract with Facebook is coming up for renewal, and with the entire company struggling to hit the 98 percent accuracy target, there are widespread concerns internally that Cognizant will lose Facebook’s business.
Contractors told me that Cognizant had lured them away from less demanding jobs by promising regular schedules, bonuses, and career development, only to renege on all three.
They described a ﬁlthy workplace in which they regularly ﬁnd pubic hair and other bodily waste at their workstations. Employees said managers laugh off or ignore sexual harassment and threats of violence. Two discrimination cases have been ﬁled with the Equal Employment Opportunity Commission since April.
They said marijuana use is so prevalent that the site manager jokingly complained at an all-hands meeting that he had gotten a contact high walking in the door.
More than anything else, the contractors described an environment in which they are never allowed to forget how quickly they can be replaced. It is a place where even Keith Utley, who died working alongside them, would receive no workplace memorial — only a passing mention during team huddles in the days after he passed. “There is no indication that this medical condition was work related,” Cognizant told me in a statement. “Our associate’s colleagues, managers and our client were all saddened by this tragic event.” (The client is Facebook.)
Utley’s family could not be reached for comment. Employees who began working after he died told me they had never heard his name.
“We were bodies in seats,” one former moderator told me. “We were nothing to them — at all.”
Shawn Speagle was 23 and employed at an online education company working with English language learners when he visited a Cognizant job fair. A recruiter there described to him a role in which Speagle would primarily help businesses analyze engagement on their Facebook pages. He might have to do some content moderation, the recruiter said, but Speagle entered the interview believing he was about to embark on a new career in high technology — one that he hoped would eventually lead to a full-time role at Facebook.
Cognizant offered Speagle $15 an hour to do the job full time — a marked improvement over his previous job, which was seasonal. Only after he began training did he realize that the job would not, in fact, involve helping businesses with Facebook marketing. Instead, two weeks after Speagle was put onto the production ﬂoor, a manager told him he and a colleague would be reviewing graphic violence and hate speech full time.
“For our associates who opt to work in content moderation, we are transparent about the work they will perform,” a Cognizant spokesman said in response. “They are made aware of the nature of the role before and during the hiring process, and then given extensive and speciﬁc training before working on projects.”
But had his managers asked, they would have learned that Speagle had a history of anxiety and depression, and that he might not be suited well for the role. No one did.
“They just said me and [my colleague] were very meticulous and had a lot of promise to move up to the SME position,” Speagle said, referring to the subject matter experts who make $1 more per hour in exchange for answering moderators’ questions about Facebook policy. “They said Facebook is basically shoving all of their graphic violence content to us, that they didn’t want it anymore. So they had to move more people to cover it. And that’s all that we saw, every single day.”
Speagle vividly recalls the ﬁrst video he saw in his new assignment. Two teenagers spot an iguana on the ground, and one picks it up by the tail. A third teenager ﬁlms what happens next: the teen holding the iguana begins smashing it onto the street. “They beat the living shit out of this thing,” Speagle told me, as tears welled up in his eyes. “The iguana was screaming and crying. And they didn’t stop until the thing was a bloody pulp.”
Under the policy, the video was allowed to remain on Facebook. A manager told him that by leaving the video online, authorities would be able to catch the perpetrators. But as the weeks went on, the video continued to reappear in his queue, and Speagle realized that police were unlikely to look into the case.
Speagle had volunteered at animal shelters in the past, and watching the iguana die on a regular basis rattled him. “They kept reposting it again and again and again,” he said, pounding the table as he spoke. “It made me so angry. I had to listen to its screams all day.”
Cognizant’s Tampa facility opened in a maze-like ofﬁce park in the summer of 2017, about two months after the Phoenix facility came online. It operates out of a single-story building next to a pond fed by two storm drains. On most days, an alligator emerges from one of the drains to bask in the sun.
Before the ofﬁce opened, the company began advertising work on Indeed and other job sites, using opaque titles such as “social media analyst.” Initially, applicants are not told they will be working for Facebook — only a “large social media company.”
Cognizant was not always straightforward with applicants about the nature of the work in Tampa. Marcus*, who worked in management, told me that a recruiter had persuaded him to leave a more normal job with the promise of a regular schedule, performance bonuses, and a good work-life balance. Once he joined, though, he was made to work nights, and the bonuses never materialized.
Marcus was made to moderate Facebook content — an additional responsibility he says he was not prepared for. A military veteran, he had become desensitized to seeing violence against people, he told me. But on his second day of moderation duty, he had to watch a video of a man slaughtering puppies with a baseball bat. Marcus went home on his lunch break, held his dog in his arms, and cried. I should quit, he thought to himself, but I know there’s people at the site that need me. He ultimately stayed for a little over a year.
Cognizant calls the part of the building where contractors do their work “the production ﬂoor,” and it quickly ﬁlled with employees. The minimum wage in Florida is $8.46, and at $15 an hour, the job pays better than most call center work in the area. For many content moderators — Cognizant refers to them by the enigmatic title of “process executive” — it was their ﬁrst real job.
In its haste to ﬁll the workplace, Cognizant made some odd stafﬁng decisions. Early on, the company hired Gignesh Movalia, a former investment advisor, as a moderator. Cognizant conducts background checks on new hires, but apparently failed even to run a basic web search on Movalia. Had they done so, they would have learned that in 2015 he was sentenced to 18 months in prison for his involvement in a $9 million investment fraud scheme. According to the FBI, Movalia had falsely claimed to have access to shares of a fast-growing technology startup about to begin trading on the public market.
Movalia was eventually ﬁred, but employees I spoke with believed his tenure exempliﬁed Cognizant’s approach to hiring moderators: ﬁnd bodies wherever you can, ask as few questions as possible, and get them into a seat on the production ﬂoor where they can start working.
The result is a raucous workplace where managers send regular emails to the staff complaining about their behavior on the site. Nearly every person I interviewed independently compared the Tampa ofﬁce to a high school. Loud altercations, often over workplace romances, regularly take place between co-workers. Verbal and physical ﬁghts break out on a monthly basis, employees told me. A dress code was instituted to discourage employees from wearing provocative clothing to work — “This is not a night club,” read an email to all employees obtained by The Verge. Another email warned employees that there had been “numerous incidents of theft” on the property, including stolen food from the ofﬁce refrigerator, food from vending machines, and employees’ personal items.
Michelle Bennetti and Melynda Johnson both began working at the Tampa site in June 2018. They told me that the daily difﬁculty of moderating content, combined with a chaotic ofﬁce environment, made life miserable.
“At ﬁrst it didn’t bother me — but after a while, it started taking a toll,” Bennetti told me. “I got to feel, like, a cloud — a darkness — over me. I started being depressed. I’m a very happy, outgoing person, and I was [becoming] withdrawn. My anxiety went up. It was hard to get through it every day. It started affecting my home life.”
Johnson was particularly disturbed by the site’s sole bathroom, which she regularly found in a state of disrepair. (The company says it has janitors available every shift in Tampa.) In the stalls, signs posted in response to employee misbehavior proliferated. Do not use your feet to ﬂush the toilet. Do not ﬂush more than ﬁve toilet seat covers at one time. Do not put any substances, natural or unnatural, on the walls.
“And obviously the signs are there for a reason, because people are doing this,” said Johnson, who worked at the site until March. “Every bit of that building was absolutely disgusting. You’d go in the bathroom and there would be period blood and poop all over the place. It smelled horrendous all the time.”
The work day in Tampa is divided into ﬁve shifts, and desks are shared between employees. Contractors I spoke with said they would frequently come to work and ﬁnd their workstation for the day in dire condition — encountering boogers, ﬁngernails, and pubic hairs, among other items. The desks would be cleaned whenever Facebook made one of its regular planned visits to the site. At other times, employees told me, the ofﬁce was ﬁlthy.
Florida law does not require employers to offer sick leave, and so Cognizant workers who feel ill must instead use personal leave time. (They are granted ﬁve hours of personal leave per pay period.) Missing work is one of the few reasons Cognizant regularly ﬁres its contractors. And so to avoid receiving an “occurrence,” as the company calls unapproved absences, contractors who have exhausted their break time come to work sick — and occasionally vomit in trash cans on the production ﬂoor.
A worker named Lola* told me that health problems had resulted in her receiving so many occurrences she was at risk of being ﬁred. She began going into work even when she felt ill to the point of throwing up. Facebook contractors are required to use a browser extension to report every time they use the restroom, but during a recent illness, Lola quickly took all her allotted breaks. She had previously been written up for going to the bathroom too many times, she said, and so she felt afraid to get up from her desk. A manager saw that she was not feeling well, and brought a trash can to her desk so she could vomit in it. So she did.
“Then I was crying at my desk,” Lola said. “I was like, ‘I can’t go on.’ My co-workers said, ‘Just go home.’ I said ‘I can’t, because I’m going to get an occurrence.’” She stayed at her desk and cried.
Employees told me about other disturbing incidents at the Tampa site. Among them:
* An employee who used a colostomy bag had it rupture while she was at work, spilling some waste onto the ﬂoor. Senior managers were overheard mocking her. She eventually quit.
* An employee who threatened to “shoot up the building” in a group chat was placed on paid leave and allowed to return. He was ﬁred after making another similar threat. (A Cognizant spokesperson said the company has security personnel on site at all hours. “Our goal is to ensure that our employees feel assured that they work in a safe environment,” he said.)
* Another employee broadcast himself on Facebook Live talking about wanting to bash a manager’s head in. Another manager determined that he was making a joke, and he was not disciplined.
In April, two women who work at the Tampa site ﬁled complaints with the US Equal Employment Opportunity Commission alleging that they had been sexually harassed by two of their male co-workers. According to the complaint, the men regularly discussed anal sex in the ofﬁce. When the women were not receptive to the discussion, one of the men said he “was going to start a YouTube channel and record himself shooting up the place,” according to the complaint. On April 3rd, the Hillsborough County Sheriff’s Ofﬁce came to the site to interview the women. According to the ofﬁcer’s report, one of the men had been photographed following one of the women home.
A Cognizant spokesman told me that the employee has been suspended while the claims are being investigated. But some workers say they are still concerned.
“Every time I get an email or a phone call from my clients, I worry that there’s been a shooting — and I know that’s their worry as well,” said KC Hopkinson, an attorney who represents several current and former Cognizant employees in Tampa. “They go in there every morning asking, ‘what am I going to see today? And am I going to make it home tonight?’”
Hopkinson told me that her clients who have reported incidents to human resources are generally either ignored or retaliated against, a claim that was echoed to me by several other employees there. In some cases, the site’s human resources staff has followed workers who ﬁled complaints to the bathroom, and questioned them about what they were doing for the few minutes they were inside. (“We take allegations such as this very seriously,” a company spokesman told me. “Cognizant strives to create a safe and empowering workplace.”)
“I wouldn’t want my worst enemy to work there,” Hopkinson said. “It’s a terrible, terrible environment.”
For the six months after he was hired, Speagle would moderate 100 to 200 posts a day. He watched people throw puppies into a raging river, and put lit ﬁreworks in dogs’ mouths. He watched people mutilate the genitals of a live mouse, and chop off a cat’s face with a hatchet. He watched videos of people playing with human fetuses, and says he learned that they are allowed on Facebook “as long as the skin is translucent.” He found that he could no longer sleep for more than two or three hours a night. He would frequently wake up in a cold sweat, crying.
Early on, Speagle came across a video of two women in North Carolina encouraging toddlers to smoke marijuana, and helped to notify the authorities. (Moderator tools have a mechanism for escalating issues to law enforcement, and the women were eventually convicted of misdemeanor child abuse.) To Speagle’s knowledge, though, the crimes he saw every day never resulted in legal action being taken against the perpetrators. The work came to feel pointless, never more so than when he had to watch footage of a murder or child pornography case that he had already removed from Facebook.
In June 2018, a month into his job, Facebook began seeing a rash of videos that purportedly depicted organs being harvested from children. (It did not.) So many graphic videos were reported that they could not be contained in Speagle’s queue.
“I was getting the brunt of it, but it was leaking into everything else,” Speagle said. “It was mass panic. All the SMEs had to rush in there and try to help people. They were freaking out — they couldn’t handle it. People were crying, breaking down, throwing up. It was like one of those horror movies. Nobody’s prepared to see a little girl have her organs taken out while she’s still alive and screaming.” Moderators were told they had to watch at least 15 to 30 seconds of each video.
Speagle helps to take care of his parents, who have health problems, and was afraid to quit Cognizant. “It was tough to ﬁnd a job down here in this market,” he said. To cope with the stress, he began binge-eating pastries from the vending machines, and eventually put on a significant amount of weight. He sought out the on-site counselor for support, but found him unhelpful.
“He just ﬂat-out told me: ‘I don’t really know how to help you guys,’” Speagle said. The counselor he spoke with had been substituting for the regular counselor, who had more training. Cognizant also offers a 24/7 hotline, full healthcare beneﬁts, and other wellness programs. But the experience soured Speagle on the site’s mental health resources. Other times, when he was having a particularly bleak day in the queue, a manager would hand him a bucket of Legos and encourage him to play with them to relieve the stress as he worked. Speagle built a house and a spaceship, but it didn’t make him feel better.
By last fall, Speagle told me, he was sleeping only an hour or two each night. The lack of sleep, coupled with depression, made it difﬁcult for him to exercise. He began lashing out at his parents. Meanwhile, at work, he felt micromanaged by his team leaders, who pressured him to moderate more posts.
“I felt like I was trapped inside my own body,” he said. “I couldn’t, for the life of me, get up from my desk, or I would be yelled at to stay in my desk. So I was trapped at my desk and in my body. I was so scared.”
Cognizant periodically purges large numbers of staff members in what have come to be known as “red bag days” for the red bags that managers give to the newly ﬁred to collect their belongings. Sometimes the dismissals are related to job performance, and sometimes employees aren’t given any explanation at all. Speagle was laid off as part of a red bag day last October.
In February, he went to a psychiatrist, who diagnosed him with PTSD. He is currently in treatment. Meanwhile, he has gone back to school to get his teaching certiﬁcate. Seeing so many children harmed on Facebook made him want to make a positive contribution to the lives of young people, he said.
“I really wanted to make a difference,” Speagle told me of his time working for Facebook. “I thought this would be the ultimate difference-making thing. Because it’s Facebook. But there’s no difference being made.”
I asked him what he thought needed to change.
“I think Facebook needs to shut down,” he said.
Last week, I visited the Tampa site with a photographer. It had received a deep cleaning the night before I visited, according to two employees I spoke with, and the bathroom sparkled. As I walked the ﬂoor with the site manager and a Facebook spokeswoman, I noted that most rooms smelled of cleaning products.
Work stopped while we were there to ensure we did not see any Facebook user’s personal information. Moderators, mostly in their 20s and 30s, chatted at their desks, or shot baskets in one of the miniature hoops around the building. The site’s senior managers, who employees say are normally cloistered in their ofﬁces, made a show of walking the production ﬂoor and chatting with their subordinates.
Every few feet, a wall decal or poster offered an inspirational platitude. Exhortations to always try your hardest and maintain a positive attitude were punctuated with other signs that came across as slightly more sinister. “No news is good news,” read one. “Our reputation depends on you,” read another.
We saw an activity room where workers are invited to participate in yoga sessions, and a break room presided over by a small Buddha holding an electric candle. Across the room from the Buddha, coloring books were fanned out on a table beside windows overlooking the alligator pond.
The tour ended about an hour after we arrived.
“That was a dog-and-pony show,” an employee named Bob told me over the phone the next day. “That was completely staged. We’re out there playing games, and the senior management are out there interacting with people — it’s all a facade.”
Facebook sees a similar facade when it visits the site, he said.
The person responsible for managing Facebook’s growing contractor workforce is Arun Chandra, whose title is vice president of scaled support. Chandra arrived at Facebook last November after a long career at HP, where he helped to oversee the company’s global supply chain. In his new role, he told me, he hopes to gradually improve contractors’ standard of living while also working to ensure they become more effective at their jobs.
“I’m trying to address the macro picture, and move the bigger things forward in the right way,” said Chandra, who struck me as energetic and deeply sincere. “We’ll never solve 100 percent, but I’m trying to show I can solve 80 to 90 percent of the larger problems.”
Chandra has visited more than a dozen of the company’s far-ﬂung partner sites in the United States and abroad, and has plans to visit them all. When he arrives, he likes to pull rank-and-ﬁle contractors into rooms and ask them about working conditions without their managers around. He told me that in the Philippines, content moderation has become an attractive career track, and that everywhere he goes, he meets moderators who take great pride in their work. “The level of enthusiasm people have is amazing,” he said.
This spring, Chandra organized a summit of around 200 leaders from content moderation sites around the world — an event he plans to hold twice a year, with another coming this fall. Up until now, vendors have had different policies and programs for promoting workers’ mental health. At the summit, they agreed to share information about their approaches — effectively agreeing to stop competing on the basis of who does a better job taking care of workers.
“We have to run a very large-scale platform. We have to take care of the community. And that means we have to get a whole lot of work done,” Chandra said. “But that is not at the expense of [contractors’] well-being.”
Chandra plans to launch a new audit program later this year to promote better working conditions. That will include more surprise visits — an effort to get around the dog-and-pony-show phenomenon I observed last week. He also plans to stop evaluating partners on the sole basis of whether vendors achieve a 98 percent accuracy rate — instead, he said, Facebook will develop a balanced “scorecard” approach to measuring vendors’ performance. Chandra intends for worker well-being to be part of that score, though Facebook has not yet determined how it will be measured.
In May, Facebook announced that it will raise contractor wages by $3 an hour, make on-site counselors available during all hours of operation, and develop further programs for its contractor workforce. But the pay raises are not due to take effect until the middle of 2020, by which time many, if not most, of the current Tampa workforce will no longer work there. Turnover statistics could not be obtained. But few moderators I have spoken with make it to two years on the job — they either are ﬁred for low accuracy scores, or quit over the working conditions. And so while the raises will be a boon to a future workforce, the contractors I spoke to are unlikely to beneﬁt.
Nor will the many contractors who have already left the job. As in Phoenix, former employees of the Tampa site described lasting emotional disturbances from their work — one for which neither Facebook nor Cognizant offers any support.
I asked Chandra whether Facebook should hire more content moderators in house, rather than relying on big stafﬁng companies. He told me that Facebook’s business changes so quickly that it might not be possible. But he did not rule it out.
“I completely get the debate,” he said. “If anything I’m very empathetic to the entire conversation, having spent a lot of time with these people. I don’t think we have a better answer right now.”
In the meantime, Facebook is building a “global resiliency team” tasked with improving the well-being of both full-time employees and contractors. Chris Harrison, who leads the team, told me that he aspires to build a wellness program that begins at the point of hiring. He wants to screen employees to gauge their psychological ﬁtness — a move that might prevent someone like Shawn Speagle from being assigned to a queue ﬁlled with graphic violence — but says Facebook is still working to understand whether this is possible under employment law.
Harrison plans to make “resiliency” — the art of bouncing back after seeing something awful — a key part of contractor training. He helped to develop new tools for moderators that can automatically blur out faces in disturbing videos, turn them grayscale, or mute the audio — all things that can reduce the psychological harm to the moderator viewing them.
Eventually, Harrison hopes Facebook will offer post-employment counseling to moderators who suffered psychological harm on the job. “Of course we should do that,” he said. But the idea is still in the earliest discussion stages, he said. “There’s just so many layers of complexity globally. It’s really, really hard to pull it off in a legally compliant way.”
I asked Harrison, a licensed clinical psychologist, whether Facebook would ever seek to place a limit on the amount of disturbing content a moderator is given in a day. How much is safe?
“I think that’s an open question,” he said. “Is there such thing as too much? The conventional answer to that would be, of course, there can be too much of anything. Scientiﬁcally, do we know how much is too much? Do we know what those thresholds are? The answer is no, we don’t. Do we need to know? Yeah, for sure.”
“If there’s something that were to keep me up at night, just pondering and thinking, it’s that question,” Harrison continued. “How much is too much?”
If you believe moderation is a high-skilled, high-stakes job that presents unique psychological risks to your workforce, you might hire all of those workers as full-time employees. But if you believe that it is a low-skill job that will someday be done primarily by algorithms, you probably would not.
Instead, you would do what Facebook, Google, YouTube, and Twitter have done, and hire companies like Accenture, Genpact, and Cognizant to do the work for you. Leave to them the messy work of ﬁnding and training human beings, and of laying them all off when the contract ends. Ask the vendors to hit some just-out-of-reach metric, and let them ﬁgure out how to get there.
At Google, contractors like these already represent a majority of its workforce. The system allows tech giants to save billions of dollars a year, while reporting record profits each quarter. Some vendors may turn out to mistreat their workers, threatening the reputation of the tech giant that hired them. But countless more stories will remain hidden behind nondisclosure agreements.
In the meantime, tens of thousands of people around the world go to work each day at an ofﬁce where taking care of the individual person is always someone else’s job. Where at the highest levels, human content moderators are viewed as a speed bump on the way to an AI-powered future.
In such a system, ofﬁces can still look beautiful. They can have colorful murals and serene meditation rooms. They can offer ping pong tables and indoor putting greens and miniature basketball hoops emblazoned with the slogan: “You matter.” But the moderators who work in these ofﬁces are not children, and they know when they are being condescended to. They see the company roll an oversized Connect 4 game into the ofﬁce, as it did in Tampa this spring, and they wonder: When is this place going to get a deﬁbrillator?
I believe Chandra and his team will work diligently to improve this system as best as they can. By making vendors like Cognizant accountable for the mental health of their workers for the ﬁrst time, and offering psychological support to moderators after they leave the company, Facebook can improve the standard of living for contractors across the industry.
I’ve been tinkering with different startup ideas and needed a good checklist to think through them. There are great templates for this already: The YC application, Amazon’s internal press release, and Sequoia’s Writing a Business Plan. I found myself mixing and tweaking these templates because they don’t exactly match my model of the world, so I wrote up my own list.
I use this list both to develop ideas and ﬁlter them. If you adopt it, be careful about using it as a ﬁlter. Remember that in the early stages, good ideas are very easy to kill.
Who are the users?
What is the essence of their dissatisfaction? If they read this
answer, would they say “thanks, I wish I’d thought of putting it
@benedictevans : “The iTunes Store
solved a user problem. So did the App Store. And so did Spotify and
Apple Music, and indeed Apple News. But what user problem is solved
by Apple’s commissioning TV shows?”
What are you building for them?
Peter Drucker : Is the product
being designed the customer, or the customer?
Write a tweet from a hypothetical customer explaining the product
and how it eliminates their dissatisfaction.
@BrianNorgard : No one cares
about your product. Who built it, its features, the origin story —
it’s all superﬂuous. People only ﬁnd value in what your product
can do for them right now. Save people time. Save people money.
Give people an escape. The selfish hand will always govern.
Peter Drucker : Are you
doing the best you can to help the customer?
Write a blog post title for your product launch. Is it
surprising? Is it new? Will your target customers want to click on
it? Will they want to share the link? Will they still share it the
Write the ﬁrst paragraph of your product announcement blog post.
Include the product name, an explanation of what the product is,
the target market, the main beneﬁt, and the call to action.
What “metrics of goodness” do your target customers care about?
Does your product dominate every available alternative on these
The Rise of Worse is Better The Rise of Worse is Better ,
Worse is worse
Fill in the bottom-up market size equation: NUM_USERS * ACV =
MARKET_SIZE. Are your numbers credible? Find a good reference
class if you’re building something completely new.
Which subset of your target customers are so constrained by the
status quo, they’ll welcome a buggy product?
List your ﬁrst ten customers.
Which playbook will you use to get customers after the ﬁrst ten?
What would need to be true in 18 months for you to get essentially
unlimited cheap capital? How will you achieve that?
Why now? What’s true about the world that nobody else ﬁgured out
What is the most ambitious achievable milestone for your company
within a 25 year time horizon?
Is your product a credible advance toward this milestone?
What’s the next credible advance toward this milestone? The one
after that? The one after that?
How will you build a moat?
What would reaching your 25 year milestone mean for the world? Is
this future really exciting? How many years of your life would you
give up to teleport there? If you found yourself in this
counterfactual world, would you want to go back?
If another company was working on this idea and not you, what would
you think about it? Would you join them?
Imagine yourself standing in front of your team, investors, family,
and friends. You’ve failed, and they’re waiting for you to speak.
What will you say? Are you willing to work on this problem given
that failure is the default?
What’s your company’s stock ticker symbol?
@sama: “it’s easy/fun to say every new startup you hear about is bad. you will usually be right. you will never be successful.”
Is it likely to be the most important company started this year?
George Orwell: “Whoever is winning at the moment will always seem to be invincible.”
Thanks to Darryl Ramm for feedback on this post.
Greenhouse keeps home in the 60’s, even when it’s freezing outside; allows family to grow Mediterranean fruit in Sweden
Marie Granmar and Charles Sacilotto literally live in a bubble, insulated from the cold and the harshness of the elements, while taking in the best of what nature has to offer.
Their house is built inside of a greenhouse, providing them free heat and free food in the winter.
In Stockholm, Sweden, where winter lasts 9 months out of the year, that’s a huge asset.
The average temperature in Stockholm in January is below freezing. But step into Marie and Charles’ bubbled-in “backyard,” and you’ll be much warmer.
“For example at the end of January it can be 28°F outside and it can be 68°F upstairs,” says in the video below:
A normal family in Stockholm switches on their heater on sometime around mid-September, and doesn’t turn it off again until mid-May or so, Marie says.
The greenhouse allows them to reduce the number of months they need to heat their home from 9 to 6 months per year, and reduces the amount of energy they use doing so. Any supplemental heat they need, that is not provided by the sun, is provided by a wood-burning stove.
Marie says she is more or less immune to the winter blues many of her friends experience during cold weather. Rain or snow, she can sit out on her balcony or her roof-top terrace and gaze at the stars, or any glimpses of sun she can catch.
Then, during the warmest parts of the summer, her glass roof automatically opens up when it hits a certain temperature, to let the heat out so it doesn’t get too hot.
“It can get warm a few days in the summer,” she says, “but that’s not really a problem because we open the windows and we enjoy the heat. We like the sun!”
The family’s favorite hangout is the rooftop deck. Since they built a glass ceiling, they no longer needed a roof, so they removed it to create a large space for sunbathing, reading, gardening or playing with their son on swings and bikes.
In addition to keeping their bodies warmer, the greenhouse also keeps their plants warmer.
The footprint of the greenhouse is nearly double that of the home, leaving plenty of room for a wrap-around garden. And since they’ve created a Mediterranean climate for themselves, the couple grows produce that typically isn’t grown in Sweden, like ﬁgs, grapes, tomatoes, cucumbers and herbs. Outside the glass they have cherry and apple trees.
“Growing things here is not easy,” Marie says in the video. “We need all the extra energy we can get.”
On top of free heat, the couple has also installed a rainwater collection system for free water, and a composting toilet system that provides free fertilizer for their plants. Also, the plants that thrive in their home return the favor by cleaning the air and providing more oxygen.
It starts with a urine-separating toilet and uses centrifuges, cisterns, ponds and garden beds to ﬁlter waste water and compost the remains.
For the future, the couple is working on designing a system to capture excess solar energy during the summer and store it for the winter.
“If you want to be self sufﬁcient, and not dependent on bigger systems, you can have this and live anywhere you like,” Marie said.
“It’s all a philosophy of life, to use nature, sun and water to live in a another world,” Charles said.
Charles and Marie weren’t the ﬁrst ones to build a house-inside-a-greenhouse. Their idea was inspired by Swedish architect Bengt Warne who built the ﬁrst “Naturhus” (Nature House) in Stockholm in 1974:
Since then a handful of others have been built in Sweden and Germany.
Today at 10:30UTC, the Internet had a small heart attack. A small company in Northern Pennsylvania became a preferred path of many Internet routes through Verizon (AS701), a major Internet transit provider. This was the equivalent of Waze routing an entire freeway down a neighborhood street — resulting in many websites on Cloudﬂare, and many other providers, to be unavailable from large parts of the Internet. This should never have happened because Verizon should never have forwarded those routes to the rest of the Internet. To understand why, read on.
We have blogged about these unfortunate events in the past, as they are not uncommon. This time, the damage was seen worldwide. What exacerbated the problem today was the involvement of a “BGP Optimizer” product from Noction. This product has a feature that splits up received IP preﬁxes into smaller, contributing parts (called more-speciﬁcs). For example, our own IPv4 route 188.8.131.52/20 was turned into 184.108.40.206/21 and 220.127.116.11/21. It’s as if the road sign directing trafﬁc to “Pennsylvania” was replaced by two road signs, one for “Pittsburgh, PA” and one for “Philadelphia, PA”. By splitting these major IP blocks into smaller parts, a network has a mechanism to steer trafﬁc within their network but that split should never have been announced to the world at large. When it was it caused today’s outage.
To explain what happened next, here’s a quick summary of how the underlying “map” of the Internet works. “Internet” literally means a network of networks and it is made up of networks called Autonomous Systems (AS), and each of these networks has a unique identiﬁer, its AS number. All of these networks are interconnected using a protocol called Border Gateway Protocol (BGP). BGP joins these networks together and builds the Internet “map” that enables trafﬁc to travel from, say, your ISP to a popular website on the other side of the globe.
Using BGP, networks exchange route information: how to get to them from wherever you are. These routes can either be speciﬁc, similar to ﬁnding a speciﬁc city on your GPS, or very general, like pointing your GPS to a state. This is where things went wrong today.
An Internet Service Provider in Pennsylvania (AS33154 - DQE Communications) was using a BGP optimizer in their network, which meant there were a lot of more speciﬁc routes in their network. Speciﬁc routes override more general routes (in the Waze analogy a route to, say, Buckingham Palace is more speciﬁc than a route to London).
DQE announced these speciﬁc routes to their customer (AS396531 - Allegheny Technologies Inc). All of this routing information was then sent to their other transit provider (AS701 - Verizon), who proceeded to tell the entire Internet about these “better” routes. These routes were supposedly “better” because they were more granular, more speciﬁc.
The leak should have stopped at Verizon. However, against numerous best practices outlined below, Verizon’s lack of ﬁltering turned this into a major incident that affected many Internet services such as Amazon, Linode and Cloudﬂare.
What this means is that suddenly Verizon, Allegheny, and DQE had to deal with a stampede of Internet users trying to access those services through their network. None of these networks were suitably equipped to deal with this drastic increase in trafﬁc, causing disruption in service. Even if they had sufﬁcient capacity DQE, Allegheny and Verizon were not allowed to say they had the best route to Cloudﬂare, Amazon, Linode, etc…
During the incident, we observed a loss, at the worst of the incident, of about 15% of our global trafﬁc.
There are multiple ways this leak could have been avoided:
A BGP session can be conﬁgured with a hard limit of preﬁxes to be received. This means a router can decide to shut down a session if the number of preﬁxes goes above the threshold. Had Verizon had such a preﬁx limit in place, this would not have occurred. It is a best practice to have such limits in place. It doesn’t cost a provider like Verizon anything to have such limits in place. And there’s no good reason, other than sloppiness or laziness, that they wouldn’t have such limits in place.
A different way network operators can prevent leaks like this one is by implementing IRR-based ﬁltering. IRR is the Internet Routing Registry, and networks can add entries to these distributed databases. Other network operators can then use these IRR records to generate speciﬁc preﬁx lists for the BGP sessions with their peers. If IRR ﬁltering had been used, none of the networks involved would have accepted the faulty more-speciﬁcs. What’s quite shocking is that it appears that Verizon didn’t implement any of this ﬁltering in their BGP session with Allegheny Technologies, even though IRR ﬁltering has been around (and well documented) for over 24 years. IRR ﬁltering would not have increased Verizon’s costs or limited their service in any way. Again, the only explanation we can conceive of why it wasn’t in place is sloppiness or laziness.
The RPKI framework that we implemented and deployed globally last year is designed to prevent this type of leak. It enables ﬁltering on origin network and preﬁx size. The preﬁxes Cloudﬂare announces are signed for a maximum size of 20. RPKI then indicates any more-speciﬁc preﬁx should not be accepted, no matter what the path is. In order for this mechanism to take action, a network needs to enable BGP Origin Validation. Many providers like AT&T have already enabled it successfully in their network.
If Verizon had used RPKI, they would have seen that the advertised routes were not valid, and the routes could have been automatically dropped by the router.
Cloudﬂare encourages all network operators to deploy RPKI now!
All of the above suggestions are nicely condensed into MANRS (Mutually Agreed Norms for Routing Security)
The network team at Cloudﬂare reached out to the networks involved, AS33154 (DQE Communications) and AS701 (Verizon). We had difﬁculties reaching either network, this may have been due to the time of the incident as it was still early on the East Coast of the US when the route leak started.
One of our network engineers made contact with DQE Communications quickly and after a little delay they were able to put us in contact with someone who could ﬁx the problem. DQE worked with us on the phone to stop advertising these “optimized” routes to Allegheny Technologies Inc. We’re grateful for their help. Once this was done, the Internet stabilized, and things went back to normal.
It is unfortunate that while we tried both e-mail and phone calls to reach out to Verizon, at the time of writing this article (over 8 hours after the incident), we have not heard back from them, nor are we aware of them taking action to resolve the issue.
At Cloudﬂare, we wish that events like this never take place, but unfortunately the current state of the Internet does very little to prevent incidents such as this one from occurring. It’s time for the industry to adopt better routing security through systems like RPKI. We hope that major providers will follow the lead of Cloudﬂare, Amazon, and AT&T and start validating routes. And, in particular, we’re looking at you Verizon — and still waiting on your reply.
Despite this being caused by events outside our control, we’re sorry for the disruption. Our team cares deeply about our service and we had engineers in the US, UK, Australia, and Singapore online minutes after this problem was identiﬁed.
This is a cynical, clinical collection of things I learnt in 30 years working with software development.
Again, some things are really cynical, others are long observations on different jobs.
If you don’t know what you’re trying to solve, you don’t know what to code.
Write something specifying how the application works before writing any code.
“Without requirements or design, programming is the art of adding bugs to an empty text ﬁle.” — Louis Srygley
Sometimes, even an “elevator pitch” — up to two paragraphs that describe what the application does — is enough.
The times I stood longer looking at my own code wondering what to do next were when we didn’t have the next step deﬁned. It is a good sign that it’s time to stop and discuss it with your coworkers — or maybe rethink the solution.
If you have no idea how to start, describe the ﬂow of the application in high level, pure English/your language ﬁrst. Then ﬁll the spaces between comments with the code.
Better yet: think of every comment as a function, then write the function that does exactly that.
Gherkin is your friend to understand expectations
Gherkin is a test description format which points “Given that the system is in a certain state, When something happens, then this is expected”. Even if you don’t use any testing tool that reads Gherkin, it will give you a good understanding of what it is expected from the app.
On my current job, we do test modules and classes only (for example, we write tests for the view layer only, then tests for the controller layer only, and so on). It gives us some idea if things are going right or not, but they lack a view of how the whole is going on — a thing integration tests, which tests how the system as a whole behaves — do better.
We code in layers: There is the storage layer, which should make our data permanent; there is a processing layer, which should do some transformation on the data stored; there is a view layer, which has information on how the data must be present; and so on.
As I mentioned, integration tests feel better, but testing layers by themselves can give you a better view on how their API looks like. Then you can have a better look on how to call things: Is the API too complex? Do you have to keep to much data around to be able to make a single call?
Make tests that you know how to run on the command line
Not that command lines are important for any projects, but when you know the command to run the tests, you know how to automate the execution of the tests, which you then can use in a continuous integration tool.
Be ready to throw your code away
A lot of people, when they start with TDD, get annoyed when you say that you may have to rewrite a lot of stuff, including whatever your already wrote.
TDD was designed to throw code away: The more you learn about your problem, the more you understand that, whatever you wrote, won’t solve the problem in the long run.
You shouldn’t worry about this. Your code is not a wall: if you have to throw it always, it is not wasted material. Surely it means your time writing code was lost, but you got a better understanding about the problem now.
You can be sure that if a language brings a testing framework — even minimal — in its standard library, the ecosystem around it will have better tests than a language that doesn’t carry a testing framework, no matter how good the external testing frameworks for the language are.
When developers try to solve a problem, they sometimes try to ﬁnd a way that will solve all the problems, including the ones that may appear in the future.
But here is the thing: The problems from the future will never come and you’ll end up either having to maintain a huge behemoth of code that will never be fully used or you’ll end up rewriting the whole thing ’cause there is a shitton of unused stuff.
Solve the problem you have right now. Then solve the next one. And the next one. At one point, you’ll realize there is a pattern emerging from those solutions and then you’ll ﬁnd your “solve everything”.
Documentation is a love letter to your future self
We all know writing the damn docs for functions and classes and modules is a pain in the backside. But realizing what you were thinking when you wrote the function will save your butt in the future.
The function documentation is its contract
When you start the code by writing the documentation, you’re actually making a contract (probably with your future self): I’m saying this function does this
and this is what it does.
If later you ﬁnd out that the code doesn’t match the documentation, you have a code problem, not a documentation problem.
If a function description includes an “and”, it’s wrong
Functions should do one thing and one thing only. When you’re writing the function documentation and ﬁnd that you added an “and”, it means the function is doing more than one thing. Break that function into two and remove the “and”.
When you’re designing a function, you may be tempted to add a ﬂag. Don’t do this.
Here, let me show you an example: Suppose you have a messaging system and you have a function that returns all the messages to an user, called
getUserMessages. But there is a case where you need to return a summary of each message (say, the ﬁrst paragraph) or the full message. So you add a ﬂag/Boolean parameter called retrieveFullMessage.
Again, don’t do that.
’Cause anyone reading your code will see getUserMessage(userId, true) and wonder what the heck that true means.
You can either rename the function to getUserMessageSummaries and have another getUserMessagesFull or something around those lines, but each function just call the original getUserMessage with true or false — but the interface to the outside of your class/module will still be clear.
But don’t add ﬂags/Boolean parameters to your functions.
In the point above, I mentioned about renaming the function. If you control the whole source where the function is used, that’s not issue, it’s just a matter of search and replace.
But if that function is actually exposed by a library, you shouldn’t change function names in a whim. That will break a lot of other applications beyond your control and make a lot of other people unhappy.
You can create the new functions and mark the current one as deprecated, either by documentation or by some code feature. Then, after a few released, you can ﬁnally kill the original function.
If the language comes with its own way of documenting functions/classes/modules/whatever and it comes even with the simplest doc generator, you can be sure that all the language functions/classes/modules/libraries/frameworks will have a good documentation (not great, but at least good).
Languages that do not have integrated documentation will, most of the time, have a bad documentation.
A language is much more than a language
A programming language is that thing that you write and make things “go”. But it has much more beyond special words: It has a build system, it has a dependency control system, it has a way of making tools/libraries/frameworks interact, it has a community, it has a way of dealing with people.
Don’t pick languages just ’cause they easier to use. Always remember that you may approve the syntax of a language for being that easy, but you’re also enabling the way maintainers deal with the community by choosing that language.
Sometimes, it’s better to let the application crash than do nothing
Although that sounds weird, it’s better to not add any error handling than silently capturing errors and doing nothing.
This does nothing to deal with the exception — besides printing it, that is.
If you don’t know how to handle it, let it happen,so you can ﬁgure out when
it will happen.
If you know how to handle the issue, handle it
Counter-point to the previous point: If you know when something will raise an exception/error/result and you know how to handle it, handle it. Show an error message, try to save the data somewhere else, capture the user input in a log ﬁle to later processing, but handle it.
Types say what you data is
Memory is just a sequence of bytes; bytes are just numbers from 0 to 255; what those numbers mean is described on the language type system.
For example, in C, a char type of value 65 is most probably the letter “A”, which an int of value is 65 is the number 65.
Remember this when dealing with your data.
If your data has a schema, use a structure to keep it
You may be tempted to use a list (or tuple, if your language allows) to keep your data if it’s simple — like, say, only 2 ﬁelds.
But if you data has a schema — it has a ﬁxed format — you should always
use some structure to keep it, but it a struct or a class.
Understand and stay way of cargo cult
“Cargo cult” is the idea that, if someone else did, so can we. Most of the time, cargo cult is simply an “easy way out” of a problem: Why would we think about how to properly store our users if X did that?
“If BigCompany stores data like this, so can we”.
“If BigCompany is behind this, this is good.”
“Right tool for the job” is just to push an agenda
“Right tool for the job” should be an expression that meant that there is a right and a wrong tool to do something — e.g., using a certain language/framework instead of the current language/framework.
But every time I heard someone mention it, they were trying to push their favourite language/framework instead of, say, the right language/framework.
“The right tool” is more obvious than you think
Maybe you’re in a project that needs to process some text. Maybe you’re tempted to say “Let’s use Perl” ’cause you know that Perl is very strong in processing text.
What you’re missing: You’re working on a C shop. Everybody knows C, not Perl.
Sure, if it is a small, “on the corner” kind of project, it’s ﬁne to be in Perl; if it is important for the company, it’s better that if it is a C project.
PS: Your hero project (more about it later in this doc) may fail due this.
Don’t mess with things outside your project
Sometimes people are tempted to, instead of using the proper extension tools, change external libraries/frameworks — for example, making changes directly into WordPress or Django.
This is an easy way to make the project unmaintainable really really fast. As soon as a new version is released, you’ll have to keep up your changes in sync with the main project and, pretty soon, you’ll ﬁnd that the changes don’t apply anymore and you’ll leave the external project in an old version, full of security bugs.
(This is personal opinion) When you understand how the data must ﬂow in your code, you’ll end up with better code than if you applied a bunch of design patterns.
Design patterns are used to describe solutions, not to ﬁnd them
(Again, personal opinion) Most of the time I saw design patterns being applied, they were applied as a way to ﬁnd a solution, so you end up twisting a solution — and, sometimes, the problem it self — to ﬁt the pattern.
First, solve your problem; ﬁnd a good solution; then you can check the patterns to know how you name that solution.
I saw this happens a lot: We have this problem; a design pattern gets close to the proper solution; let’s use the design pattern; now we need to add a lot of things around the proper solution to make it ﬁt the pattern.
You don’t need to go deep into “what is a monad” and “is this a functor”. But remember to not keep changing your data all the time, create a new element with the new values (treat your data as immutable) and make functions/classes that don’t keep some internal state (pure functions/classes) if possible.
“Cognitive dissonance” is a fancy way of saying “I need to remember two (or more) different things at the same time to understand this.” Keeping those different things in your head creates a cost and it keeps accumulating the more indirect the things are (’cause you’ll have to keep all those in your head).
For example, adding booleans to count the number of True values is a mild cognitive dissonance; if you’re reading a piece of code and see a sum()
function, which you know makes the sum of all numbers in a list, you’d expect the list to be composed of numbers, but I’ve seen people using sum() to count number of True values in a list of booleans, which is confusing as heck.
The Magical Number Seven, Plus or Minus Two
“The magical number” is a psychology article about the number of things one can keep in their mind at the same time.
If you have a function, that calls a function, that calls a function, that calls a function, that calls a function, that calls function, you may be sure it will be a hell to read later.
Think more about: I’ll get the result of this function, then pass it to the second function, get its result, pass to the third an so on.
Today, psychologists talk more about the magical number FOUR, not seven.
Think function composition (as in “I’ll call that function, then that
function, then that function…“), not function calling (as in “That
function will call that function, that will call that function…“).
Shortcuts are nice, but only in the short run
A lot of languages/libraries/frameworks add a way to make things shorter, reducing the number of things you need to type.
But, later, that will bite you and you’ll have to remove the shortcut and do the long things.
So learn what the shortcut does before using it.
You don’t need to write things the hard way ﬁrst and then clean up using the shortcuts: All you need to do is what the shortcut does in the background, so you at least have knowledge of what can go wrong using it, or how to replace it with the non-shortcut version.
On an early morning in the late 1980s, a group of the highest-powered executives at Frito-Lay — the CEO, CMO, and a platoon of VPs — gathered in a California conference room to hear what Richard Montañez had to say.
Montañez didn’t share their pedigree. He wasn’t an executive. He had no fancy degree. He had a 4th-grade-level education, and couldn’t read or write.
Montañez was a janitor. But he was a janitor with an idea — an idea that would make the company billions of dollars and become one of history’s most celebrated and iconic snack foods: Flamin’ Hot Cheetos.
But ﬁrst, he had to convince the world to hear him out.
Montañez grew up in the 1960s in Guasti, California, a tiny unincorporated farming town 40 miles east of Los Angeles.
Under the sweltering Cucamonga Valley sun, his family — mother, father, grandfather, and 11 children — scraped together a meager living picking grapes, and slept together in a one-room cinderblock abode at the labor camp.
As a ﬁrst-generation Mexican immigrant at an all-white school, Montañez had access to few resources and struggled to understand his teachers. “I remember my mom getting me ready for school and I was crying,” he later told Lowrider magazine. “I couldn’t speak English.”
One day in class, the teacher went around the room asking each kid to name his or her dream job: Doctor… astronaut… veterinarian. When she called on Montañez, he froze.
“I realized I didn’t have a dream,” he says. “There was no dream where I came from.”
Montañez soon stopped getting on the school bus and began boarding the work truck with his father and grandfather.
After dropping out of school, he worked the ﬁelds in 110°F heat and took on odd jobs slaughtering chickens at a poultry factory, washing cars, and picking weeds. With a 4th-grade-level education and few economic opportunities, Montañez saw no path out of poverty.
Then, in 1976, a neighbor told him about a job opening that would change his life.
Down the road, in Rancho Cucamonga, the Frito-Lay plant was looking for a janitor.
At $4 per hour ($18 in 2019 dollars), the job paid many multiples of what Montañez made in the ﬁelds. It represented a better life — insurance, beneﬁts, social mobility.
Unable to read or write, the 18-year-old recruited his wife to help ﬁll out an application. He journeyed down a dusty road, met with the hiring manager, and got the job.
When he broke the news to his family, his grandfather imparted a piece of advice that would always stick with him: “Make sure that ﬂoor shines,” the man told his grandson. “And let them know that a Montañez mopped it.”
Montañez decided he was going to be the “best janitor Frito-Lay had ever seen” — and he quickly made his presence known.
“Every time someone walked into a room, it would smell fresh,” he says. “I realized there’s no such thing as ‘just a janitor’ when you believe you’re going to be the best.”
Montañez also developed the philosophy that “it’s not about who you know — it’s about who knows you.”
In between shifts, he set out to make himself seen, learning as much as he could about the company’s products, spending time in the warehouse, and watching the machines churn out crunchy snacks in the lonely midnight hours.
And eventually, his insatiable curiosity would pay off.
By the mid-1980s, Frito-Lay had fallen on tough times. As a way to boost morale, then-CEO Roger Enrico recorded a video message and disseminated it to the company’s 300k employees.
In the video, Enrico encouraged every worker at the company to “act like an owner.” Most employees brushed it off as a management cliché; Montañez took it to heart.
“Here’s my invitation… here’s the CEO telling me, the janitor, that I can act like an owner,” he later recalled. “I didn’t know what I was going to do. Didn’t need to. But I knew I was going to act like an owner.”
After nearly a decade mopping ﬂoors, Montañez gathered the courage to ask one of the Frito-Lay salesmen if he could tag along and learn more about the process.
They went to a convenience store in a Latino neighborhood — and while the salesman restocked inventory, Montañez made a fortuitous observation: “I saw our products on the shelves and they were all plain: Lay’s, Fritos, Rufﬂes,” he recalls. “And right next to these chips happened to be a shelf of Mexican spices.”
In that moment, he realized that Frito-Lay had “nothing spicy or hot.”
A few weeks later, Montañez stopped at a local vendor to get some elote, a Mexican “street corn” doused in chili powder, salt, cotija, lime juice, and crema fresca. Cob in hand, a “revelation” struck: What if I put chili on a Cheeto?
Introduced to the world in 1948, Cheetos — crunchy corn-based nuggets coated in cheese-ﬂavored powder — were a ﬂagship product of Frito-Lay. And while they were popular among California’s growing base of Latino consumers, the company had yet to consider re-tailoring the product’s taste proﬁle.
“Nobody had given any thought to the Latino market,” recalls Montañez. “But everywhere I looked, I saw it ready to explode.”
So, Montañez heeded the CEO’s words and “acted like an owner.”
Working late one night at the production facility, he scooped up some Cheetos that hadn’t yet been dusted in cheese. He took them home and, with the help of his wife, covered them in his own concoction of chili powder and other “secret” spices.
When he handed them out to family members and friends, the snacks were met with universal enthusiasm. He just needed a bigger audience…
“I was naive,” Montañez later said. “I didn’t know you weren’t supposed to call the CEO… I didn’t know the rules.”
Finding Roger Enrico’s phone number was easy enough: It was listed in a company directory. He rang the line, and was put through to the chief’s executive assistant.
“Oh, so you’re the VP of operations?”
The assistant paused for what seemed like an eternity. “One moment.”
Then, a voice on the other line: “Hello, this is Roger.”
Montañez told the CEO he’d heeded the call to action. He’d studied the company’s products, identiﬁed a demand in the market, and even crafted his own rudimentary snacks in his kitchen.
Enrico loved the ingenuity: He told the janitor he’d be at the plant in 2 weeks and asked him to prepare a presentation.
Moments after Montañez hung up the phone, the plant manager stormed up to him. “He said, ‘Who do you think you are? Who let the janitor call the CEO?’” recalls Montañez. “Then he said, ‘YOU’RE doing this presentation!’”
Montañez was 26 years old. In his words, he couldn’t read or write very well and had no knowledge about how to formulate a business proposal.
But he wasn’t about to give up.
Accompanied by his wife, he went to the library, found a book on marketing strategies, and copied the ﬁrst 5 paragraphs word for word onto transparencies. At home, he ﬁlled 100 plastic baggies with his homemade treats, sealed them with a clothing iron, and manually drew a logo and design on each package.
On the day of the presentation, he bought a $3 tie — black with blue and red stripes — and had his neighbor knot it for him. As he gathered the bags, his wife stopped him near the door: “Don’t forget who you are.”
Montañez stepped into the boardroom. “Here I was,” he says, “a janitor presenting to some of the most highly qualiﬁed executives in America.”
At one point during the presentation, an executive in the room interjected: “How much market share do you think you can get?”
“It hit me that I had no idea what he was talking about, or what I was doing,” Montañez recalled. “I was shaking, and I damn near wanted to pass out…[but] I opened my arms and I said, ‘This much market share!’ I didn’t even know how ridiculous that looked.”
The room went silent as the CEO stood up and smiled. “Ladies and gentlemen, do you realize we have an opportunity to go after this much market share?” he said, stretching out his arms.
He turned to Montañez. “Put that mop away, you’re coming with us.”
Six months later, with Montañez’s help, Frito-Lay began testing Flamin’ Hot Cheetos in small Latino markets in East Los Angeles.
If it performed well, the company would move forward with the product; if it didn’t, they’d scratch it — and Montañez would likely return to janitorial duties. This was his one shot, and some folks didn’t want things to work out for him.
“It seemed there was a group of [executives] who wanted it to fail,” he later told the podcast, The Passionate Few. “They thought I got lucky. They were paid big bucks to come up with these ideas… they didn’t want some janitor to do it.”
So Montañez assembled a small team of family members and friends, went to the test markets, and bought every bag of Hot Cheetos he could ﬁnd.
“I’d tell the owner, ‘Man, these are great,’” he recalled. “Next week, I’d come back and there’d be a whole rack.”
In 1992, Flamin’ Hot Cheetos were greenlit for a national release. And in short order, the snack became one of the most successful product launches in Frito-Lay history.
Today, Flamin’ Hot Cheetos are one of Frito-Lay’s hottest-selling commodities — a multi-billion-dollar snack celebrated by everyone from Katy Perry to middle-schoolers on meal vouchers. There’s even a rap song about them.
And Montañez is no longer sweeping ﬂoors: Over a 35-year career, the former janitor rose through the corporate ranks and is now the vice president of multicultural sales for PepsiCo America (the holding company of Frito-Lay).
Before Montañez joined the executive team, Frito-Lay had only 3 Cheeto products; since then, the company has launched more than 20, each worth $300m+.
Recognized by Newsweek and Fortune as one of the most inﬂuential Hispanic leaders in America, Montañez is a gifted speaker who often tours the country giving keynotes. And soon, his story will hit the silver screen: Fox Searchlight Pictures is currently working on a biopic about his life, appropriately titled “Flamin’ Hot.”
He still lives in Rancho Cucamonga, where he gives back to his community through a nonproﬁt he launched and teaches MBA classes at a nearby college.
Recently, a student asked him how he was teaching without a Ph. D.
“I do have a Ph. D.,” he responded. “I’ve been poor, hungry and determined.”
Did you like this article? Each week we produce in-depth, research-driven reports that show the insights into various markets and how to pounce on them. It’s call Trends.
You see, we’re a team of analysts and entrepreneurs that obsessively track emerging industries. Each week we show you the white space in the market and how you can capitalize on it. We work to discover market gaps so you can succeed.
So, want more case studies that deconstruct success companies? Or research that looks at growing markets? Check out our new premium publication: Trends.
We live in the era of browser monopoly. Google occupied the whole web by its Chrome. Chrome has more than 50% of users:
Safari is on the second place just because of macOS popularity.
Now, most of the developers choose between Chrome and Firefox. And in 2017 Mozilla released their updated version of Firefox — Firefox Quantum with new customization settings, better extensions support, privacy and what’s more important — speed. 2x faster than old Firefox and faster than Chrome.
Firefox using their own new engine with new Quantum CSS and Quantum DOM rendering. A lot of explanations here. And Chrome uses a lot of memory, Firefox — less.
Also, Firefox has a lot of useful features like showing useless CSS rules and supports prefers-color-scheme: dark media rules, that Chrome supports only in beta now.
Do you scare about extensions? Now, most developers write their extensions for both Chrome and Firefox.
And the ﬁnal reason — stop the monopoly. Give a chance to other companies that smaller and you can see how frontend develops.
Move all your bookmarks in Firefox for one week and try.
Kelsea Weber is apologetic for being hard to get ahold of. “We were all busy tearing down the iPhone XS,” she says.
A few minutes’ conversation with Kelsea is enough to convince you that she would be taking apart brand new Apple gear no matter what, but she does it professionally. Weber works for iFixit.com, a website you may have heard of once or twice. It provides repair videos, manuals, and tool kits to more than a hundred million visitors a year.
Or, to put it bluntly: iFixit.com is essentially a clearinghouse for information that some of the big names in consumer electronics would just as soon keep to themselves.
In the US, manufacturers in everything from consumer technology to farming and agriculture have long constructed systems that limit where customers can go for repairs—remember the old “warranty void if broken” stickers found on game consoles or TVs? Today if you have a broken iPhone screen, for instance, Apple runs Genius Bars across the country where users must go for permitted ﬁxes. Other companies parcel work out to a network of authorized vendors. Manufacturers generally argue these constraints are necessary to protect proprietary information that gives their product a leg up in the overall marketplace.
Slowly but surely, though, consumers and third parties outside of vendor-sanctioned circles have been pushing to change this through so-called “right to repair” laws. These pieces of proposed legislation take different forms—19 states introduced some form of right to repair legislation in 2018, up from 12 in 2017—but generally they attempt to require companies, whether they are in the tech sector or not, to make their service manuals, diagnostic tools, and parts available to consumers and repair shops—not just select suppliers.
It’s difﬁcult to imagine a more convincing case for the notion that politics make strange bedfellows. Farmers, doctors, hospital administrators, hackers, and cellphone and tablet repair shops are aligned on one side of the right to repair argument, and opposite them are the biggest names in consumer technology, ag equipment and medical equipment. And given its prominence in the consumer technology repair space, IFixit.com has found itself at the forefront of the modern right to repair movement.
“The problem is that there are only two types of transaction in the United States: purchases and licenses,” says Gay Gordon-Byrne, the executive director of the Repair Association, a right to repair advocacy group partnering with iFixit to further the movement. “You don’t own something if it’s covered by an end-user license agreement. All you have is a right to use it according to the manufacturer’s terms.”
Initially part of the personal computer revolution, end-user license agreements came into their own in the 1980s. Copyright laws that had worked reasonably well when it came to books and movies didn’t work as well when it came to software. Copyright laws apply only to software code. They don’t apply to the features and functionality of a program. So before license agreements, a software purchaser could reverse-engineer software and create a program with substantially the same functionality, leaving it to the courts to determine if there had been any infringement—a costly and time-consuming process.
End user license agreements were seen as an effective way to solve those problems in a simple and straightforward manner. For almost all software users, the switch from owning software to just having a license to use it was quite painless. Nothing changed in practice: the software still came in a box with manuals and disks, and there was just this extra bit of legal ﬁne print that set limits on what could be done with the program, limits that most users had no difﬁculty abiding by. Expressly forbidden actions often included things like reverse-engineering the software or adding features to it and reselling it. Some companies even sought to restrict the right to resell the license. FTC: Warranty-voiding language like Nintendo’s and Sony’s is illegal
But in the 1980s and 1990s and well into the ﬁrst decade of the 21th century, there was a pretty clear distinction between software, which was subject to end-user license agreements (EULAs), and hardware, which was simply sold the way most things always had been. This line started to get blurry as embedded software in electronic devices became more and more sophisticated.
From a certain standpoint, all modern electronic devices have software of some sort embedded in them. An electronic device is, after all, a device that uses electricity to execute a sequence of logical steps, and that sequence—even if it’s hardwired into the device—can be considered a program or a piece of software.
However, as electronic devices have become more sophisticated and more versatile, hardwired programs have been replaced by programs that are written in a programming language and then compiled and downloaded onto the device, often along with a simpliﬁed operating system, making these devices analogous to desktop PCs or laptops.
Today’s software is much more easily accessed and modiﬁed than the hardwired logic circuits of earlier devices, and with innovations in electronics increasingly due to the software preloaded on the device, manufacturers of all stripes suddenly found themselves looking for protections for this software.
Their solution was borrowed directly from the PC environment: the end-user license agreement. And buried in almost all end-user license agreements is a clause that gives a manufacturer the right to alter the terms of the agreement unilaterally, typically with minimal advance notice.