Home Minister Tjahjo Kumolo has inaugurated high-ranking National Police officer Comr. Gen. M. Iriawan, who once served as the provincial police chief, as an acting governor to replace incumbent West Java Governor Ahmad Heryawan, whose term as the province’s head ended on June 13.

“I, on behalf of the President, officially inaugurate Comr. Gen. M. Iriawan as West Java’s acting governor. I believe you will do your job well and according to your responsibilities,” Tjahjo said during the ceremony on Monday.

The ceremony was held at Gedung Merdeka in the West Java provincial capital of Bandung and was attended by a number of officials, including Ahmad, who wished his successor good luck during the former’s speech.

Prior to his appointment as West Java’s acting governor, Iriawan had been the main secretary of the National Resilience Institute (Lemhanas) since March 8. The three-star general was also appointed West Java and Jakarta Police chief in 2013 and 2016, respectively.

Speaking to journalists after the ceremony, Iriawan said he had been contacted by the minister regarding his appointment and the inauguration on the second day of Idul Fitri celebrations on Saturday.

“My family and I were in Surabaya [East Java] visiting relatives when the minister called, so I went back right away to Jakarta. As a soldier, I’m ready to do what the country has ordered me to do,” Iriawan said.

He added that he would focus on serving West Java residents as well as the provincial state officials’ neutrality during the upcoming gubernatorial election.

West Java is among 171 regions participating in the 2018 simultaneous regional elections, which will be held on June 27. (kuk)</s>Washington driver’s licenses will have a new look starting July 1.

Standard licenses and identification cards will be marked with “Federal Limits Apply” to indicate the card is not valid for federal identification purposes and cannot be used to board airplanes or enter federal facilities in October 2020.

The change is to bring Washington state under compliance with the REAL ID Act, which requires all states mark identification documents that don’t comply with federal law.

The REAL ID Act was passed in 2005 and mandates state driver's licenses and ID cards to have security enhancements and be issued to people who can prove they're legally in the United States. Washington state’s standard licenses and ID cards do not meet those requirements, but the state’s enhanced licenses and ID cards do.

More driver’s license changes will come in September. Beginning September 4, all newly issued or renewed driver’s licenses and ID cards will have different license numbers will begin with WDL followed by nine random characters and numbers. This format helps protect personal information, because it doesn’t correspond to a person’s name or birthdate, like the current format, according to the Department of Licensing.

A sample standard Washington state ID card with the marking "Federal Limits Apply," which will be added to all standard ID cards and licenses beginning July 1, 2018. (Photo: Department of Licensing)

The DOL expects to be in compliance with the REAL ID Act in fall 2018.

Washington residents can continue to use standard driver’s licenses and ID cards for air travel until October 1, 2020. After that deadline, travelers will either need an enhanced driver’s license, passport, or passport card for domestic flights. The deadline was extended from October 2018 earlier this year.

The enhanced license takes two to three weeks to process. You must provide proof of citizenship – bringing your old license won't be enough. You have to go into one of the selected Department of Licensing offices get the enhanced license.

Here is more information on what you need to bring to get your enhanced license and which DOL offices provide them.</s>MADISON, Wis. >> A federal judge is criticizing Wisconsin for not telling people clearly how they can obtain voting credentials if they lack documents to obtain photo ID.

Liberal advocacy group One Wisconsin Institute wants District Judge James Peterson to block Wisconsin’s voter ID law. The group’s lawsuit follows media reports that show Division of Motor Vehicles workers giving inaccurate information to people without proper ID who need a receipt that allows them to vote without it.

Peterson began a hearing Wednesday by saying the state has fallen short of its obligations to administer the credentials and the chances of getting misinformation is very high.

Peterson questioned whether he has the authority to block the voter ID law, though, noting the 7th U.S. Circuit Court of Appeals has upheld the law.</s>"As the Advertising ID Consortium expands across markets, we are giving our partners flexibility of choice in their technology infrastructure," said Mike O'Sullivan, Senior Director, Product, Index Exchange. "The addition of a third common domain through DigiTrust, a well-known and trusted coalition of key independent publishers and platforms, amplifies our scale and reach for the ultimate benefit of consumers. We've done a tremendous amount of education separately on the importance of reducing user sync activity, and we're pleased to join forces for an improved digital experience."

With this integration, the Advertising ID Consortium's open identity solution now includes the following common domains: Open Ad-ID (adnxs.com), The Trade Desk's Unified Open ID (adsrvr.org), and the DigiTrust ID (digitru.st), which facilitate easy synchronization of user IDs to improve the delivery of relevant marketing to consumers. As part of their agreements, Consortium members will prioritize the use of one of these three domains. The collective existing scale of these identifiers, combined with the amplification from its membership, ensures that, for clients of Consortium members that want to utilize the benefits provided by the Open Ad-ID, the Consortium's people-based identity solution will offer vast scale, global reach, and meaningfully-improved consumer experiences.

"DigiTrust offers a highly-scaled identifier for IAB Tech Lab members to use with their proprietary systems in lieu of ID syncs," said Jordan Mitchell, SVP of Membership and Operations, IAB Tech Lab. "It's clear DigiTrust and the Advertising ID Consortium are both focused on creating a better experience for consumers, more financial support for publishers, and increased efficiency for buyers. We're excited to see the Consortium integrate the DigiTrust ID in its efforts to improve our industry."

"The recent alignment of DigiTrust and the GDPR Transparency & Consent Framework under the IAB banner feels like a positive and significant step for our industry," said Daniel Spears, Programmatic Director, Guardian News & Media. "We're pleased to hear that the Advertising ID Consortium will now be participating in DigiTrust via the IAB Tech Lab also, creating a path to neutral governance of identity and user preferences."

The Advertising ID Consortium gives members the ability to select a partner aligning best with their regional and federal regulations. All participating companies are required to comply with the law, including the General Data Protection Regulation (GDPR), and all relevant self-regulations.

About the Advertising ID Consortium

The Advertising ID Consortium is an open and independent organization comprised of companies spanning the digital advertising industry that provides an open identity solution for the ecosystem. Founded by AppNexus, Index Exchange, and LiveRamp in 2017, the Consortium enables buyers and sellers of programmatic advertising to leverage people-based marketing to create more relevant campaigns and improve user experience. For more information, visit us at adidentity.org.

About IAB Technology Laboratory

The IAB Technology Laboratory ("Tech Lab") is a non-profit research and development consortium that produces and provides standards, software, and services to drive growth of an effective and sustainable global digital media ecosystem. Comprised of digital publishers and ad technology firms, as well as marketers, agencies, and other companies with interests in the interactive marketing arena, IAB Tech Lab aims to enable brand and media growth via a transparent, safe, effective supply chain, simpler and more consistent measurement, and better advertising experiences for consumers, with a focus on mobile and "TV"/digital video channel enablement. The IAB Tech Lab portfolio includes the DigiTrust real-time standardized identity service designed to improve the digital experience for consumers, publishers, advertisers, and third-party platforms. Board members include AppNexus, ExtremeReach, Google, GroupM, Hearst Digital Media, Integral Ad Science, Index Exchange, LinkedIn, MediaMath, Microsoft, Oracle's Moat, Pandora, PubMatic, Quantcast, Telaria, The Trade Desk, and Yahoo! Japan. Established in 2014, the IAB Tech Lab is headquartered in New York City with an office in San Francisco and representation in Seattle and London.</s>In today’s typical scenario, where the average website ships 500KB of gzipped JavaScript and 1.5MB of images, running on a midrange Android device via 3G with a 400ms round trip time, CSS selector performance is the least of our problems.

Still, there’s something to be said about the topic, especially to weed out some of the myths and legends surrounding them. So let’s dive right in.

First, to get on the same page — this article isn’t about the performance of CSS properties and values. What we’re covering here is the performance cost of the selectors themselves. I’ll be focusing on the Blink rendering engine, specifically Chrome 62.

The selectors can be split into a few groups and (roughly) sorted from the least to most expensive:

Does this mean that you should only use IDs and classes? Well … not really. It depends. First, let’s cover how browsers interpret CSS selectors.

Browsers read CSS from right to left. The rightmost selector in a compound selector is known as the key selector. So, for instance, in , the key selector is . The browser first matches all key selectors. In this case, it finds all elements on the page that match the selector. It then finds all elements on the page and filters the s down to just those elements that are descendants of s — and so on until it reaches the leftmost selector.

Therefore, the shorter the selector, the better. If possible, make sure that the key selector is a class or an ID to keep it fast and specific.

Ben Frain created a series of tests to measure selector performance back in 2014. The test consisted of an enormous DOM comprising 1000 identical elements, and measuring the speed it took to parse various selectors, ranging from IDs to some seriously complicated and long compound selectors. What he found was that the delta between the slowest and fastest selector was ~15ms.

However, that was back in 2014. Things have changed a lot since then, and memorizing rules is all but useless in the ever-changing browser landscape. Always remember to do your own tests, especially when performance is concerned.

I went to do my own tests, and for that I used Paul Lewis’ test mentioned in Paul Irish’s comment expressing concern over the useful, yet convoluted “quantity selectors”:

The test was bumped up a bit, to 50000 elements, and you can test it out yourself. I did an average of 10 runs on my 2014 MacBook Pro, and what I got was the following:

The results will of course vary depending on whether you use or , and the number of matching nodes on the page, but comes closer to the real use case of CSS, which is targeting all matching elements.

Even in such an extreme case, with 50000 elements to match, and using some really insane selectors like the last one, we find that the slowest one is ~20ms, while the fastest is the simple class at ~3.5ms. Not really that much of a difference. In a realistic, more “tame” DOM, with around 1000–5000 nodes, you can expect those results to drop by a factor of 10, bringing them to sub-millisecond parsing speeds.

What we can see from this test is that it’s not really worth it to worry over CSS selector performance. Just don’t overdo it with pseudo selectors and really long selectors. We can also see how Blink improved in the last two years. Instead of the stated ~500x slowdown for a “quantity selector” ( ) compared to an “insanity selector” ( ), we only see a ~1.5x slowdown. That’s an amazing improvement, and we can only expect browsers to get better, making CSS selector performance even less impactful.

You should, however, stick to using classes whenever possible, and adopt some sort of namespacing convention like BEM, SMACSS or OOCSS, since it will not only help your website’s performance but vastly help with code maintainability. Overqualified compound selectors, especially when used with tag and universal selectors — such as — are extremely brittle and a source of many unforeseen errors. They are also a nightmare to maintain, especially if you inherit the code from someone else.

A bigger problem of simply having expensive selectors is having a lot of them. This is know as “style bloat”, and you’ve probably seen the problem a lot. Typical examples are sites which import entire CSS frameworks like Bootstrap or Foundation, while using less than 10% of the transferred CSS. Another example is seen in old, never-refactored projects whose CSS has devolved into, as I like to call them, “Chronological Style Sheets” — CSS with a ton of appended classes to the end of the file as the project has changed and grown, now looking more like an overgrown garden full of weeds.

Not only does a large CSS file take longer to transfer, (and network is the biggest bottleneck in website performance), they also take longer to parse. As well as constructing the DOM from your HTML, the browser needs to construct a CSSOM (CSS Object Model) to compare it with the DOM and match the selectors.

So, keep your styles lean and DRY, don’t include everything and the kitchen sink, load what you need and when you need it, and use UNCSS if you need to.

If you want to dig more into how the browsers parse CSS, check out Nicole Sullivan’s post on Webkit, Ilya Grigorik’s article on how Blink does it, or Lin Clark’s article on Mozilla’s new Stylo CSS engine.

The Elephant in the Room: Style Invalidation

What we’ve covered so far is fine, but we’ve only discussed a single rendering pass. Today’s websites are no longer static documents, but resemble apps with dynamic content users can interact with.

This complicates things, since parsing CSS is only a single step in the browser rendering pipeline. Here’s a render-oriented view of how a browser renders a single frame to the screen (source: Google):

We won’t be going into JavaScript performance and compositing, but will focus instead on the purple part — style parsing and laying out the elements.

After constructing the DOM and CSSOM, the browser needs to combine the two into a render tree before finally painting it on the screen. In that step, the browser needs to figure out the computed CSS for each matching element. You can see this yourself in the Elements > Styles panel of the developer tools. It takes all the matching styles, the cascade, and browser-specific user agent styles to construct the final, computed CSS for the element.

It can then proceed to the layout (also known as reflow) step, where it computes the geometry, and constructs the box model of the page, placing each element on its respective position on the viewport. Layout is the most computationally intensive part of this process.

Finally, the browser converts each node in the render tree to actual pixels on the screen in the paint stage.

Now, what happens when we mutate the DOM by changing some classes on the page, adding or removing some nodes, modifying some attributes, or in any way messing with the HTML (or the stylesheets themselves)?

We invalidate the computed styles and the browser needs to invalidate everything down the tree of the matched selectors. While today’s browsers are much smarter, it used to be the case that if you changed a class on the element, all the descendant elements needed to have their computed styles recalculated.

One way to avoid this issue is to reduce the complexity of your selectors. Instead of writing , use a single selector, like . That way, you reduce the scope of style invalidation, since if you modify anything inside the , you won’t trigger recalculations for the entire node.

Another way is to reduce the scope — such as the number of invalidated elements. Be specific with your CSS. Keep this in mind especially during animations, where the browser has only ~10ms to do all the work required.

If you want to get down to the nitty gritty details of style invalidation, I recommend reading Style Invalidation in Blink.

To sum it up, you shouldn’t worry about selector performance, unless you really go overboard. While the topic was all the rage in 2012, browsers have gotten a lot faster and smarter since. Even Google doesn’t worry about it anymore. If you check out Google’s Page Speed Insights page, you won’t see the rule “Use efficient CSS selectors” which was removed in 2013.

Instead, focus on making your CSS maintainable and readable. Your colleagues and your future self will thank you for it. Try to optimize the CSS delivery by including only the used styles. And after that, get to know the rendering pipeline. Unlike selectors, styles themselves can be expensive, and the difference between a janky site and a smooth one can often be found in how the CSS is implemented.

And as a final note: always do your own tests.

Don’t just believe what someone wrote on the internet a few years ago. The landscape is changing drastically and at an incredible pace. What’s relevant today might become obsolete sooner than you know.
The Joko Widodo administration [id] of Indonesia appoints Mochamad Iriawan [id], an active police general, as acting governor of West Java bringing back dual function.