Power restored to some CA homes, but hundreds of thousands remain in the dark to reduce wildfire risk

first_imgmilehightraveler/iStock(SAN FRANCISCO) — Pacific Gas and Electric is restoring power to some California homes whose electricity was cut Wednesday in order to reduce the risk of wildfires — but the utility says that it could take days before all affected customers are back to full power. The first phase of outages cut power to 513,000 customers in 22 counties early Wednesday, with the second phase affecting an additional 234,000 customers in 10 more counties later in the day.Since then, the utility says it has restored power to around 50,000 customers in the Sierra Foothills area, and it anticipates restoring power to up to 80,000 customers by early Thursday.The outages have come as a result of high winds, which contribute to blazes.Last year’s Camp Fire, the deadliest fire in California’s history, was sparked by power lines owned and operated by Pacific Gas and Electric, according to Cal Fire. The fire, which originated near Pulga in Northern California in Nov. 2018, killed dozens.A PG&E meteorologist said the weather forecast this week is the strongest wind event since the Oct. 2017 North Bay fires which were caused by “electric power and distribution lines, conductors and the failure of power poles,” reported San Francisco ABC station KGO-TV.In Northern California, more than 520,000 customers were without power Wednesday afternoon.A total of 800,000 Northern and Central California customers are expected to be impacted eventually, PG&E officials said Tuesday night.A local emergency was declared in Santa Clara County, where 38,250 customers were expected to be impacted, said county officials.Alexandra Norman, associate head of school at Tilden Preparatory School Marin, called the outages “outrageous” and “such an inconvenience.”“It’s been so hard for us to have class and continue with school throughout the power outage because really everything we do runs on power,” Norman said.In Napa County, police had to step in when a battery backup failed at a busy intersection. The city of Santa Rosa said it was aware of “multiple” traffic collisions due to stop lights being down.In Sausalito, just outside San Francisco, Laura Stiles arrived to her office Wednesday to find “complete and utter darkness.” Her colleague found it difficult to access the latest PG&E status online as the overwhelmed website went down for hours.“We understand that they’re doing what they have to do in a way, but trying to find out information has been the most frustrating, so we really don’t know day to day how to plan,” Stiles told ABC News.Local school districts as well as UC Berkeley have canceled classes due to the outages.Lindsey Garcia said she lost power at midnight and stocked up on candles and batteries ahead of time.“It’s going to be like a really rugged camping trip,” Garcia told ABC News, and said her kids are going “stir-crazy.”But she noticed it wasn’t especially windy and questioned why a power shutoff was necessary.She wishes her children didn’t have to miss school, but she’s using the outage as an opportunity to get them to play outside — instead of being tied to electronics.Once the winds die down, PG&E will need to inspect every power pole across the area before turning the lights back on. Authorities said restoration can be anywhere from 36 hours up to five days.“We understand the effects this event will have on our customers and appreciate the public’s patience as we do what is necessary to keep our communities safe and reduce the risk of wildfire,” Michael Lewis, PG&E’s senior vice president of Electric Operations, said in a statement.Southern California could be impacted, too, as gusty winds move in later in the week.A preemptive shutdown in Southern California would be historic. Southern California Edison incident commander Terry Ohanian said he’s been with the company for over 35 years and they have never attempted a preemptive shut down like this before.“We won’t just de-energize for the sake of doing it,” Ohanian told ABC News Wednesday morning. “We know it’s an inconvenience for our customers so we try to be thoughtful about what we do, but the potential is there.”“And unlike a planned outage where we can schedule it for a certain period of time, this is a function of when the wind blows and when the weather materializes,” he said.Ohanian said 170,000 Southern California Edison customers may be impacted.The California Highway Patrol is reminding drivers that if a traffic light is flashing, treat it as a stop sign intersection. If the light is out, treat as an all-way stop.Copyright © 2019, ABC Audio. All rights reserved.last_img read more

Danish Church Persecutes Darwin Doubters

first_imgEven within some churches, Darwin skeptics can face censure and calls for re-education in the religion of evolution.That Darwin doubters can expect persecution within secular academia is old news. But in the church? Karsten Pultz, an intelligent design supporter in Denmark, reported a story he found in a “Christian newspaper” in his home country. He tells about the difficulties a Darwin doubting theologian encountered within the Danish church. His remarks, titled “Something rotten in the state of Denmark”* were reproduced at Uncommon Descent:Recently, Mads Jakobsen, a priest and theologian in the Danish state church, was reprimanded by his bishop, Marianne Christiansen because he had written critically about Darwin’s theory in his parish magazine. The theologian had mainly identified the moral problems which arise when trying to combine survival of the fittest with Christian beliefs, but he seems also to have admitted his doubt of the science behind the theory.The bishop was outraged that the priest would doubt a “scientifically proven” theory and she publicly demanded that he commit himself to be re-educated in the theory of evolution. The bishop recommended that , Niels Henrik Gregersen, professor of theology at the University of Copenhagen, should provide this criminally ignorant theologian with the proper literature, so that his delusions could be corrected.The bishop was supported by Svend Andersen, theology professor at the University of Århus, who insisted that “There ought not to be room for such views within the church.” Professor Andersen also expressed the view that a certain intellectual standard must be required of ministers, implying that only a moron would doubt evolution.The entire essay can be read at the link above. Pultz says that 85% in his country believe in evolution. He goes on to describe how his attempts to show scientific flaws in Darwinian evolution result in him being immediately labeled a “creationist” even though he stated no theological arguments, just scientific ones. When he tried to correct errors in the publication, he was ignored. He describes the response to his piece defending Jakobsen:My piece was, naturally, written in defense of pastor Mads Jakobsen but I also made the excuse for the bishop that she, hardly a villain, is just acting in accordance with what we all have learned in school, namely that evolution is a fact. She should not be blamed for the extremely biased way evolution is taught all the way from primary school to university. I got no answer from the journalist, no reaction, and no explanation, – I’m being met with complete silence. So what we have is a Christian newspaper which willingly airs unsubstantiated allegations against my work but at the same time refuses to bring my side of the story.Pultz concludes that “a Christian newspaper gangs up with the theological elite to heckle Darwin doubters and prevent an open debate about the validity of Darwin’s theory.”*Reference to a line in Shakespeare’s Hamlet.Something is rotten not only in the state of Denmark, but in all churches that prefer Darwin to Christ. Misinformed theologians and ministers, who have abandoned confidence in the word of God, love the approval of the world more than the approval of God. Having been taught that ‘evolution is a fact’ and a ‘scientifically proven theory’ that only a ‘moron’ would doubt, they fear being thought of morons themselves by the culture around them. To prove to the culture they are not one of ‘them,’ these liberal theologians and ministers often become even more intolerant of Darwin doubters than the secular Darwinists themselves.The situation is analogous to the Israelites in the Old Testament who repeatedly fell for the Baals. They tried to keep some semblance of their monotheistic religion but they didn’t want to be looked down on by all the surrounding nations that had many gods—idols that nodded at debauchery. Darwin is the golden calf of our era, with worship centers in the Bethel of liberal seminaries and the Dan of liberal churches. Their leaders try to prevent them from going to the Jerusalem temple of science by ignoring Jerusalem and luring them into the temples of the popular gods of the day. As with all leftists, they are totalitarians at heart. Nobody is allowed to question the state dogma: not even the church. Churches even become pawns of the regime, carrying out the persecution.Sadly, they never hear the critiques of Darwin which we report daily at CEH. When one studies the evidence, one finds Darwinism to be a vacuous pseudo-theory in a house of cards. It is vacuous, illogical, and contrary to the monumental evidence for design: vacuous, because Darwin’s ‘natural selection’ equates to the Stuff Happens Law; illogical, because it is self-refuting; contrary to the evidence, because examples of irreducible complexity and fine tuning are legion from the atom to the universe as a whole. Why would anyone taking the name of ‘Christian’ want to be associated with such an idea? Theistic evolution is a growing problem in American Christendom as well. Help your pastor or religious leader learn the evidence against evolution and for design, so that he can be bold in opposing the Baal of our time.Recommended Resources: The recent anthology Theistic Evolution: A Scientific, Philosophical and Theological Critique has good chapters on the scientific problems with Darwinian evolution. We do not endorse some of its Biblical interpretations, but the book pulls the rug out from under the assumed scientific evidence on which Darwinists build their house of cards. Just the chapter by Dr James Tour is enough to topple the Darwin idol, but there is much more. Other good books are Undeniable by molecular biologist Doug Axe, Heretic by organic chemist Matti Leisola, and Darwin’s House of Cards by journalist Tom Bethell.(Visited 414 times, 1 visits today)FacebookTwitterPinterestSave分享0last_img read more

Flying V nabs first playoffs spot, tops CEU

first_imgThe Thunder are tipped to sweep their remaining games against AMA, Batangas and Zark’s but Altamirano reminded his players not to take anyone lightly.“We’ll just continue to play and hopefully we can still improve in the coming games. What’s important is we cannot play to the level of our opponent,” he said.Rod Ebondo powered CEU with 20 points and 21 rebounds but had to work hard to get baskets. He missed nine of his 14 attempts, most of which were heavily-contested in the shaded area.ADVERTISEMENT China furious as Trump signs bills in support of Hong Kong Pagasa: Storm intensifies as it nears PAR Another vape smoker nabbed in Lucena MOST READ View comments LATEST STORIES Robredo: True leaders perform well despite having ‘uninspiring’ boss PLAY LIST 02:49Robredo: True leaders perform well despite having ‘uninspiring’ boss02:42PH underwater hockey team aims to make waves in SEA Games01:44Philippines marks anniversary of massacre with calls for justice01:19Fire erupts in Barangay Tatalon in Quezon City01:07Trump talks impeachment while meeting NCAA athletes02:49World-class track facilities installed at NCC for SEA Games Ethel Booba on hotel’s clarification that ‘kikiam’ is ‘chicken sausage’: ‘Kung di pa pansinin, baka isipin nila ok lang’ El Nido residents told to vacate beach homescenter_img Tang says game should’ve been forfeited after Altas’ jersey mix-up Flying V vs CEU. PBA IMAGESFlying V got it going in the second half and beat a scrappy Centro Escolar University side, 91-79, to become the first team to secure a playoff spot in the 2017 PBA D-League Foundation Cup Tuesday at Ynares Sports Arena in Pasig City.Jeron Teng hit 22 of his game-high 30 points in the second half, where the Thunder stretched their lead to as high as 22 after taking just a 38-34 halftime edge.ADVERTISEMENT LOOK: Jane De Leon meets fellow ‘Darna’ Marian Rivera Teng, a much-improved outside shooter, went 4-of-5 the deep in the last two quarters including successive triples that made it, 75-56, with 7:18 remaining. He missed all of his three attempts from downtown in the first half.“CEU decided to zone us the whole game and luckily we were able to make our shots in the second half. It was very important for us to hit our outside shots,” said Flying V head coach Eric Altamirano, whose squad stayed untouchable with a 7-0 record.FEATURED STORIESSPORTSSEA Games: Biñan football stadium stands out in preparedness, completionSPORTSPrivate companies step in to help SEA Games hostingSPORTSWin or don’t eat: the Philippines’ poverty-driven, world-beating pool starsEric Salamat also helped in busting CEU’s zone defense by going 4-of-8 from beyond-the-arc en route to a 13-point outing.“I think the boys created shots for each other and that gave us good looks on our outside shots.” Pagasa: Kammuri now a typhoon, may enter PAR by weekend Sports Related Videospowered by AdSparcRead Next Lacson: SEA Games fund put in foundation like ‘Napoles case’ Don’t miss out on the latest news and information. last_img read more

Laura Linney Stands Up To Cancer In New PSA

first_imgStand Up To Cancer (SU2C) and the Melanoma Research Alliance (MRA) have joined forces with a new print public service announcement starring Academy Award nominee Laura Linney.Laura Linney to appear in PSA campaign for the Melanoma Research Alliance & SU2C.Headlined “Wear Your Beauty Brilliantly,” the PSA is designed to raise awareness about the life-saving benefits of protecting oneself from harmful exposure to UV rays that increase the risk of being diagnosed with melanoma and is the first element in a “Protect Your Skin” campaign.The deadliest of all skin cancers, melanoma is the fastest growing cancer globally and its incidence has tripled in the U.S. over the past three decades. While prevention is the first step, early detection of melanoma is key to survival. Through the PSA, SU2C and MRA also encourage people to look for changes in their skin and to speak to their dermatologists or health care providers about signs and risks. When caught early, the five year survival rate for melanoma is 92%.Linney, an SU2C celebrity ambassador, has helped shine a spotlight specifically on melanoma through her role on The Big C. In the series, her character “Cathy” is a Midwestern wife, mother, and public school teacher who is contending with Stage 4 melanoma. With an awareness of cancer from childhood—her mother was a nurse at Memorial Sloan-Kettering Cancer Center in New York—Linney is well-versed in the preventive measures one can take to reduce chances of a melanoma diagnosis.“All it takes is a single reminder for a person to do a self-exam that could save his or her life. Melanoma and Breast Cancer can often be seen and felt, respectively, and the impact of open conversations about cancer and its prevention cannot be underestimated. So talk about Cancer. Encourage the women you care about to do a self breast-exam regularly, and everyone to look over their bodies for any strange markings. Communication can curtail cancer, so talk it up!” Linney said.MRA is the largest private funder of melanoma research. To date, MRA has awarded $38 million to 97 research programs to make transformative advances in the prevention, diagnosis, staging, and treatment of melanoma, including research in biological causes of carcinogenesis, skin screening, biomarkers, imaging, immunotherapy, molecularly targeted therapy, and combination therapy. MRA’s ultimate goal is to find a cure by funding the most promising melanoma research worldwide that will accelerate progress and improve outcomes for patients and all who are at risk for the disease.“We are honored to have Laura Linney and our friends at Stand Up To Cancer join MRA by raising awareness about melanoma and melanoma research with the ‘Wear Your Beauty Brilliantly’ PSA,” said Debra Black, co-founder, MRA. “Through her support of the cause and her moving performance on The Big C, Laura has kept melanoma at the forefront of public consciousness, and that work is heartening to all of us at MRA. Stand Up To Cancer has helped shake up the culture of cancer research and we’re excited about working with their esteemed scientists and doctors to find better treatments and, eventually, a cure for melanoma.”In December, 2011, SU2C announced its first jointly funded Dream Team in collaboration with the Melanoma Research Alliance (MRA). The SU2C-MRA Melanoma Dream Team Translational Cancer Research Grant provides $6 million during a three-year period.The Dream Team, led by Jeffrey M. Trent, Ph.D., president and research director at the Translational Genomics Research Institute (TGen) in Phoenix and Patricia M. LoRusso, director of the Eisenberg Center for Experimental Therapeutics at the Barbara Ann Karmanos Cancer Institute in Detroit, is exploring “Personalized Medicine for Patients with BRAF Wild-Type (BRAFwt) Cancer.” The team’s members are working to identify new therapeutic targets to treat patients with BRAFwt metastatic melanoma, an area where historically there has been little progress.“Stand Up To Cancer’s mission is rooted in collaboration, and this campaign with the Melanoma Research Alliance and Laura Linney underscores that brilliantly,” said SU2C co-founder Sherry Lansing. “We all have a responsibility to get the message out far and wide about the importance of protecting yourself from harmful UV rays.”To learn more, visit www.curemelanoma.org/protectyourskin or www.standup2cancer.org/protectyourskin.last_img read more

Sutherland used 12 pairs of shoes in crossCanada run

first_imgAPTN National NewsIt was a long haul, but a Metis woman says she would do it all again.Candace Sutherland finished her “Vision for Hope” run across Canada.Sutherland is back home in Winnipeg and spoke to APTN National News.last_img

Van Dijk refuses to get drawn into Liverpool title talk

first_imgLiverpool defender Virgil van Dijk insists there is still a long to go in the Premier League title battleThe Reds reclaimed top spot on Sunday after a convincing 3-1 win against rivals Manchester United with a goal from Sadio Mane and substitute Xherdan Shaqiri’s brace.But, with Liverpool just a point above second-place Manchester City, Van Dijk refuses to get carried away as they approach the halfway stage of the season.“We are in mid-December and the season is still too long,” Van Dijk told the club website.divock origi, liverpoolReport: Origi cause Klopp injury concerns George Patchias – September 14, 2019 Divock Origi injury in today’s game against Newcastle is a cause for concern for Jurgen Klopp.Perhaps with one eye on Tuesday’s trip to Italy…“We are very happy we’re in the position that we’re in now but that can change in two or three weeks. We’ll try to keep on doing what we’re doing and stay confident.“Wolves is another game we want to win. It’s going to be very tough there. They are in a great moment but so are we so we will have to prepare well and know their strengths and their weaknesses.”Liverpool will take a trip to Wolves on Friday for their next Premier League match.last_img read more

Gurgaon mothers create magic on stage

first_imgGiving Delhi a comical kick, Magic Creations Moms’ Theatre Group in association with Fenesta Windows and Amplifon presented ‘Shh.. Kaun?!, a play that amalgamates suspense, drama, comedy, romance, and mystery altogether.Held at the LGT auditorium on October 27, the play was staged by an all mothers group of Gurgaon, who came together to claim their ‘creative kick’ back in life. The play is scripted, designed and directed by Binod Sharma whereas the choreography and music are given by Jitendra Bisht. The story revolves around five individuals who are bored of life and are looking to do something different. Fate gets them together and they decide to start a resort in Chamba, Uttarakhand. Guests start coming in and each of them has a different experience altogether. Creepy, scary, funny, mysterious …What is this all about? What is the mystery of the resort? What is the story behind it? The play answers all these questions. The story keeps the viewer gripped, seeking more with each passing scene. The play also imbibes a strong message that evolves as the story progresses. Also Read – Add new books to your shelfThe concept, which has not been picked by the directors for live theatres since ages, and the execution involving amazing visual effects, makes it a pleasure to watch.Talking about the Moms’ Theatre Group, Geetika Goyal, founder, says, “Our thought behind the launch of this group was to give the mothers in Gurgaon a creative corner, where they come, unwind and discover themselves all over again. As of now, the group is of 20 passionate mothers who have come to challenge themselves and find some ‘ME’ time while taking a break from their everyday routine.” Among the important guests, Alok Mittal, IPS, Inspector General – National Investigation Agency (NIA), Manoj Rajput, Actor, D R Ankur, Ex-Director NSD, and NSD’s faculty Saoti Chakrabarty and senior NSDian, writer and director Sushila Varnekar, marked their presence at the event.last_img read more

Elixir 18 released with new features and infrastructure improvements

first_imgIn a blog post yesterday, Elixir 1.8 was announced. It comes with a variety of infrastructure level improvements, faster compilation time, common patterns, and added features around introspection of the system. Elixir is a functional general-purpose programming language that runs on top of the Erlang virtual machine. Custom struct inspections with Elixir 1.8 Elixir 1.8 has a derivable implementation of the Inspect protocol. This makes it simpler to filter data from existing data structures whenever they are inspected. If there is a user struct containing security and privacy sensitive information inspecting a user via inspect(user), will include all fields. This can cause information like emails and encrypted passwords to appear in logs or error reports. Defining a custom implementation of the Inspect protocol avoided this behavior. Elixir v1.8 makes it easier by allowing users to derive the Inspect protocol. Due to this, all user structs will be printed while all remaining fields are collapsed. Passing @derive {Inspect, except: […]} will keep all fields by default and exclude only some. Custom time zone database support Elixir v1.8 defines a Calendar.TimeZoneDatabase behaviour that allows developers to add their own time zone databases. An explicit contract for time zone behaviours are defined, as a result, Elixir can now extend the DateTime API. This allows addition of functions like DateTime.shift_zone/3. The default time zone database in Elixir is Calendar.UTCOnlyTimeZoneDatabase which can only handle UTC. In other Calendar related improvements, Date.day_of_year/1, Date.quarter_of_year/1, Date.year_of_era/1, and Date.day_of_era/1 are added. Speedy compilation and performance improvements Improvements to the compiler have been made over 2018 which makes Elixir v1.8 compile code about 5% faster. The Elixir compiler also emits more efficient code used for range checks in guards, charlists with interpolation, and when working with records via the Record module. EEx templates are also optimized and emit more compact code which also runs faster. Better instrumentation and ownership with $callers The Task module is a way to spawn light-weight processes to perform concurrent work. When a new process is spawned, Elixir annotates the parent process via the $ancestors key. Instrumentation tools can use this information to track the relationship between events occurring within multiple processes. But many times tracking only $ancestors is not sufficient. Developers are recommended to start tasks under a supervisor, as it gives more visibility and control of task termination when a node shuts down. The relationship between code and the task is tracked via the $callers key present in the process dictionary. This aligns well with the existing $ancestors key. In Elixir 1.8 when a task is spawned directly from code without a supervisor, the parent process of the code will be listed under $ancestors and $callers. This feature allows instrumentation and monitoring tools to better track and relate the events in the system. This can also be used by the Ecto Sandbox which enables developers to run concurrent test against the database. It uses transactions and an ownership mechanism in which each process explicitly gets a connection assigned to it These were the major changes, for full list of improvements and bug fixes, you can take a look at release notes. Read next Elixir Basics – Foundational Steps toward Functional Programming Erlang turns 20: Tracing the journey from Ericsson to Whatsapp Python governance vote results are here: The steering council model is the winnerlast_img read more

Optimizing GraphQL with Apollo Engine Tutorial

first_imgApollo Engine is a commercial product produced by MDG, the Meteor Development Group, the company behind Apollo. It provides many great features, which we’ll explore in this article. We will also answer these questions using the Apollo Engine: How is our GraphQL API performing, are there any errors, and how can we improve the GraphQL schema? This article is taken from the book Hands-on Full-Stack Web Development with GraphQL and React by Sebastian Grebe. This book will guide you in implementing applications by using React, Apollo, Node.js, and SQL. By the end of the book, you will be proficient in using GraphQL and React for your full-stack development requirements. To follow along with the examples implemented in this article, you can download the code from the book’s GitHub repository. Setting up Apollo Engine First, you need to sign up for an Apollo Engine account. At the time of writing, they offer three different plans, which you can find by going to their plans page. When signing up, you get a two-week trial of the Team plan, which is one of the paid plans. Afterward, you’ll be downgraded to the free plan. You should compare all three plans to understand how they differ—they’re all worth checking out. To sign up, go to its login page. Currently, you can only sign up using a GitHub account. If you don’t have one already, create a GitHub account. After logging in, you will see a dashboard that looks as follows: The next step is to add a service with the NEW SERVICE button in the top-right corner. The first thing you need to enter is a unique id for your service across all Apollo Engine services. This id will be auto-generated through the organization you select, but can be customized. Secondly, you will be asked to publish your GraphQL schema to Apollo Engine. Publishing your GraphQL schema means that you upload your schema to Apollo Engine so that it can be processed. It won’t get publicized to external users. You can do this using the command provided by Apollo Engine. For me, this command looked as follows: npx apollo service:push –endpoint=”http://localhost:8000/graphql” –key=”YOUR_KEY” The preceding endpoint must match your GraphQL route. The key comes from Apollo Engine itself, so you don’t generate it on your own. Before running the preceding command, you have to start the server, otherwise, the GraphQL schema isn’t accessible. Once you’ve uploaded the schema, Apollo Engine will redirect you to the service you just set up. Notice that the GraphQL introspection feature needs to be enabled. Introspection means that you can ask your GraphQL API which operations it supports. Introspection is only enabled when you run your Apollo Server in a development environment, or if you explicitly enable introspection in production. I highly discourage this because it involves giving away information about queries and mutations that are accepted by your back end. However, if you want to enable it, you can do this by setting the introspection field when initializing Apollo Server. It can be added inside the index.js file of the graphql folder: const server = new ApolloServer({ schema: executableSchema, introspection: true, Ensure that you remove the introspection field when deploying your application. If you aren’t able to run the GraphQL server, you also have the ability to specify a schema file. Once you publish the GraphQL schema, the setup process for your Apollo Engine service should be done. We’ll explore the features that we can now use in the following sections of this article. Before doing this, however, we have to change one thing on the back end to get Apollo Engine working with our back end. We already used our API Key to upload our GraphQL schema to Apollo Engine. Everything, such as error tracking and performance analysis, relies on this key. We also have to insert it in our GraphQL server. If you entered a valid API key, all requests will be collected in Apollo Engine. Open index.js in the server’s graphql folder and add the following object to the ApolloServer initialization: engine: { apiKey: ENGINE_KEY} The ENGINE_KEY variable should be extracted from the environment variables at the top of the file. We also need to extract JWT_SECRET with the following line: const { JWT_SECRET, ENGINE_KEY } = process.env; Verify that everything is working by running some GraphQL requests. You can view all past requests by clicking on the Clients tab in Apollo Engine. You should see that a number of requests happened, under the Activity in the last hour panel. If this isn’t the case, there must be a problem with the Apollo Server configuration. Analyzing schemas with Apollo Engine The Community plan of Apollo Engine offers schema registry and explorer tools. You can find them by clicking on the Explorer tab in the left-hand panel. If your setup has gone well, the page should look as follows: Let’s take a closer look at this screenshot: On the page, you see the last GraphQL schema that you have published. Each schema you publish has a unique version, as long as the schema includes changes. Beneath the version number, you can see your entire GraphQL schema. You can inspect all operations and types. All relations between types and operations are directly linked to each other. You can directly see the number of clients and various usage statistics next to each operation, type, and field. You can search through your GraphQL schema in the top bar and filter the usage statistics in the panel on the right. You can also switch to the Deprecation tab at the top. This page gives you a list of fields that are deprecated. We won’t use this page because we are using the latest field definitions, but it’s vital if you’re running an application for a longer time. Having an overview of our schema is beneficial. In production, every new release of our application is likely to also bring changes to the GraphQL schema. With Apollo Engine, you can track those changes easily. This feature is called schema-change validation and is only included in the paid Team plan of Apollo Engine. It’s worth the extra money because it allows you to track schema changes and also to compare how those fields are used. It allows us to draw conclusions about which clients and versions are being used at the moment. I have created an example for you in the following screenshot: Here, I published an initial version of our current GraphQL schema. Afterward, I added a demonstration type with one field, called example. On the right-hand side, you can see the schema difference between the initial and second releases of the GraphQL schema. Viewing your schema inside Apollo Engine, including the history of all previous schemas, is very useful. Performance metrics with Apollo Engine When your application is live and heavily used, you can’t check the status of every feature yourself; it would lead to an impossible amount of work. Apollo Engine can tell you how your GraphQL API is performing by collecting statistics with each request that’s received. You always have an overview of the general usage of your application, the number of requests it receives, the request latency, the time taken to process each operation, the type, and also each field that is returned. Apollo Server can provide these precise analytics since each field is represented in a resolver function. The time elapsed to resolve each field is then collected and stored inside Apollo Engine. At the top of the Metrics page, you have four tabs. The first tab will look as follows: If your GraphQL API is running for more than a day, you’ll receive an overview that looks like the one here. The left-hand graph shows you the request rate over the last day. The graph in the middle shows the service time, which sums up the processing time of all requests. The right-hand graph gives you the number of errors, along with the queries that caused them. Under the overview, you’ll find details about the current day, including the requests per minute, the request latency over time, and the request latency distribution: Requests Per Minute (rpm): It is useful when your API is used very often. It indicates which requests are sent more often than others. Latency over time: It is useful when the requests to your API take too long to process. You can use this information to look for a correlation between the number of requests and increasing latency. Request-latency distribution: It shows you the processing time and the number of requests. You can compare the number of slow requests with the number of fast requests in this chart. In the right-hand panel of Apollo Engine, under Metrics, you’ll see all your GraphQL operations. If you select one of these, you can get even more detailed statistics. Now, switch to the Traces tab at the top. The first chart on this page looks as follows: The latency distribution chart shows all the different latencies for the currently-selected operation, including the number of sent requests with that latency. In the preceding example, I used the postsFeed query. Each request latency has its own execution timetable. You can see it by clicking on any column in the preceding chart. The table should look like the following screenshot: The execution timetable is a big foldable tree. It starts at the top with the root query, postsFeed, in this case. You can also see the overall time it took to process the operation. Each resolver function has got its own latency, which might include, for example, the time taken for each post and user to be queried from the database. All the times from within the tree are summed up and result in a total time of about 90 milliseconds. It’s obvious that you should always check all operations and their latencies to identify performance breakdowns. Your users should always have responsive access to your API. This can easily be monitored with Apollo Engine. Error tracking with Apollo Engine We’ve already looked at how to inspect single operations using Apollo Engine. Under the Clients tab, you will find a separate view that covers all client types and their requests: In this tab, you can directly see the percentage of errors that happened during each operation. In the currentUser query, there were 37.14% errors out of the total currentUser requests. If you take a closer look at the left-hand side of the image, you will see that it says, Unidentified clients. Since version 2.2.3 of Apollo Server, client awareness is supported. It allows you to identify the client and track how consumers use your API. Apollo automatically extracts an extensions field inside each GraphQL operation, which can hold a name and version. Both fields—Name and Version—are then directly transferred to Apollo Engine. We can filter by these fields in Apollo Engine. We will have a look at how to implement this in our back end next. In this example, we’ll use HTTP header fields to track the client type. There will be two header fields: apollo-client-name and apollo-client-version. We’ll use these to set custom values to filter requests later in the Clients page. Open the index.js file from the graphql folder. Add the following function to the engine property of the ApolloServer initialization: engine: { apiKey: ENGINE_KEY, generateClientInfo: ({ request }) => { const headers = request.http.headers; const clientName = headers.get(‘apollo-client-name’); const clientVersion = headers.get(‘apollo-client-version’); if(clientName && clientVersion) { return { clientName, clientVersion }; } else { return { clientName: “Unknown Client”, clientVersion: “Unversioned”, }; } },}, The generateClientInfo function is executed with every request. We extract the two fields from the header. If they exist, we return an object with the clientName and clientVersion properties that have the values from the headers. Otherwise, we return a static Unkown Client text. To get both of our clients – the front end and back end – set up, we have to add these fields. Perform the following steps: Open the index.js file of the client’s apollo folder file. Add a new InfoLink to the file to set the two new header fields: const InfoLink = (operation, next) => { operation.setContext(context => ({ …context, headers: { …context.headers, ‘apollo-client-name’: ‘Apollo Frontend Client’, ‘apollo-client-version’: ‘1’ }, }));return next(operation);}; Like AuthLink, this link will add the two new header fields next to the authorization header. It sets the version header to ‘1’ and the name of the client to ‘Apollo Frontend Client’. We will see both in Apollo Engine soon. Add InfoLink in front of AuthLink in the ApolloLink.from function. On the back end, we need to edit the apollo.js file in the ssr folder: const InfoLink = (operation, next) => { operation.setContext(context => ({ …context, headers: { …context.headers, ‘apollo-client-name’: ‘Apollo Backend Client’, ‘apollo-client-version’: ‘1’ }, }));return next(operation);}; The link is almost the same as the one for the front end, except that we set another apollo-client-name header. Add it just before AuthLink in the ApolloLink.from function. The client name differs between the front end and back end code so you can compare both clients inside Apollo Engine. If you execute some requests from the back end and front end, you can see the result of these changes directly in Apollo Engine. Here, you can see an example of how that result should look: At the top of the screenshot, we see the number of requests the back end has made. In the middle, all the clients that we have no further information on are listed, while at the bottom, we can see all requests that have been made by the client-side code. Unknown clients might be external applications that are accessing your API. When releasing a new version of your application, you can increase the version number of the client. The version number represents another comparable field. We now know which clients have accessed our API from the information provided by Apollo Engine. Let’s take a look at what Apollo Engine can tell us about errors. When you visit the Error tab, you will be presented with a screen that looks like the following screenshot: The first chart shows the number of errors over a timeline. Under the graph, you can see each error with a timestamp and the stack trace. You can follow the link to see the trace in detail, with the location of the error. If you paid for the Team plan, you can also set alerts when the number of errors increases or the latency time goes up. You can find these alerts under the Integrations tab. This article walked you through how to sign up to and set up Apollo Engine. Further, we will learn how to analyze schemas, check how our GraphQL API is performing, and track errors using Apollo Engine. If you found this post useful, do check out the book, Hands-on Full-Stack Web Development with GraphQL and React. This book teaches you how to build scalable full-stack applications while learning to solve complex problems with GraphQL. Read Next Applying Modern CSS to Create React App Projects [Tutorial] Keeping animations running at 60 FPS in a React Native app [Tutorial] React Native development tools: Expo, React Native CLI, CocoaPods [Tutorial]last_img read more