Stack Overflow's annual developer survey was published this week, giving an insight into the skills, experience, and opinions of a wide slice of the developer community. Since its launch in 2008, Stack Overflow has become an essential developer tool, offering copy/paste solutions to an ever-growing number of programming problems.
The Stack Overflow survey is particularly interesting, as Stack Overflow does not focus on any one kind of developer or development; is used by professionals, students, and hobbyists alike; and has substantial use across Europe, North America, and Asia, with respectable representation from South America, Africa, and Oceania. As such, it gives a view of the software development industry as a whole, across all fields and disciplines.
Microsoft's switch to using the Chromium engine to power its Edge browser was announced in December last year, and the first public preview build is out now. Canary builds, updated daily, and Dev builds, updated weekly, are available for Windows 10. Versions for other operating systems and a beta that's updated every six weeks are promised to be coming soon.
As a result, every Chromium browser offers more or less the same performance and Web compatibility. Indeed, this is a big part of why Microsoft made the switch: the company had grown tired of updating its own EdgeHTML engine to ensure it behaved identically to Chrome and is now offering Chrome-equivalent behavior in the most direct way possible. I've been using a version 74 build (which is a little out of date at this point) for the last week, and I have yet to see any difference between Edge and Chromium Dev when it comes to displaying Web pages. In principle, a page could treat Edge differently (it reports its identity as a rather ugly "Edg/184.108.40.206"; I'm presuming the misspelling is an attempt to ensure it isn't identified as a variation of the current Edge browser), but in general there's little reason to do so.
A new version of Microsoft's integrated development environment (IDE) goes live today with the release of Visual Studio 2019 and its cousin Visual Studio 2019 for Mac.
Visual Studio is in a bit of a strange position, and it would be fair for developers to ask why this branded release even exists. Visual Studio 2017 has received nine point releases and countless patch releases since its release two years ago. Each of these releases has brought a mix of new features and bug fixes, and for Visual Studio users, the experience feels comparable to that of, say, Google Chrome, where each new version brings a steady flow of incrementally improved features and fixes.
Indeed, this iterative, incremental model is the one that Microsoft is pushing (and using) for services such as Azure DevOps and is comparable to the continuous development we see for Office 365, which is updated monthly, and the free and open source Visual Studio Code, which also has monthly iterations. With this development process in place, one wonders why we'd bother with "Visual Studio 2019" at all; let's just have "Visual Studio" and keep on updating it forever.
The new build confirms much of what we've seen before: the browser is a minimally changed rebranded version of Chrome, replacing integration with Google's accounts with integration with Microsoft's accounts. This integration is still at an early stage; bookmarks can be synced between systems, but history, passwords, open tabs, autocomplete information, and open tabs don't yet sync.
Google has multiple release channels for Chrome; beyond the Stable channel, there's a Beta channel previewing the next release, the Dev channel previewing the release after that, and the Canary channel, which provides nightly builds. Microsoft's new extension for Edge Insider appears to offer easy switching between channels, announcements, known issues, and asking users for focused testing on particular areas.
Valve is opening up its latency-reducing, DoS-protecting network relay infrastructure to every developer using its Steamworks platform.
A few years ago, large-scale denial-of-service attacks against game servers were making the news and becoming a frustratingly frequent occurrence in online gaming and e-sports. To protect its own games, Valve has for a number of years been working on developing a networking infrastructure that makes the system more resilient against denial-of-service attacks and lower latency to boot, and the company is using this system for both Dota 2 and CS:GO.
At 30 different locations around the world, Valve has established relaying servers that route networking traffic between clients and servers. These relay points provide DoS-resilience in several ways. They're equipped with an aggregate of several terabits of bandwidth, so they can handle a certain amount of flooding in any case. Games can also switch from one relay to another without necessarily interrupting their connection. This switching can be to another relay in the same location or even to another point-of-presence entirely.
The forthcoming Windows 10 feature update will bring support for DTrace, the open source debugging and diagnostic tracing tool originally built for Solaris. The port was announced at the Ignite conference last year, and today the instructions, binaries, and source code are now available.
DTrace lets developers and administrators get a detailed look at what their system is doing: they can track kernel function calls, examine properties of running processes, and probe drivers. DTrace commands use the DTrace scripting language, with which users can specify which information is probed, and how to report that information.
After its initial Solaris release, DTrace spread to a wide range of other Unix-like operating systems. Today, it's available for Linux, FreeBSD, NetBSD, and macOS. The original Solaris code was released under Sun's Common Development and Distribution License. Microsoft has ported the CDDL portions of DTrace and built an additional driver for Windows that performs some of the system-monitoring roles. The latter driver will ship with Windows; the CDDL parts are all a separate download.
One of the greatest fears when Microsoft announced that it was ditching its EdgeHTML rendering engine and switching to Chromium—the open source engine that powers Google's Chrome, along with a range of others such as Vivaldi, Brave, and Opera—is that Web developers would increasingly take the easy way out and limit their support and testing to Chrome. That would leave Mozilla's Firefox, Apple's Safari, and any other browsers, present or future, out of the fun.
This is, after all, substantially what we saw during Internet Explorer's heyday. Microsoft's browser grew to about 95 percent of the market, and wide swathes of the Web proudly announced that they were "best viewed in Internet Explorer," often to the point of not working at all in any other browser. IE's hegemony presented an enormous challenge for the upstart Firefox browser, which was built to support Web standards rather than Microsoft's particular spin on those standards. Though Internet Explorer was eventually displaced—by Chrome—this arguably would have gone much quicker if developers had been less fixated on Microsoft's browser.
Last week, Microsoft made a major update to the Web version of its Skype client, bringing HD video calling, call recording, and other features already found on the other clients.
Microsoft's embrace and adoption of open source software has continued with the surprising decision to publish the code for Windows Calculator and release it on GitHub under the permissive MIT license.
The repository shows Calculator's surprisingly long history. Although it is in some regards one of the most modern Windows applications—it's an early adopter of Fluent Design and has been used to showcase a number of design elements—core parts of the codebase date all the way back to 1995.
The actual calculations are performed by this ancient code. Calculator's mathematics library is built using rational numbers (that is, numbers that can be expressed as the ratio of two integers). Where possible, it preserves the exact values of the numbers it is computing, falling back on Taylor series expansion when an approximation to an irrational number is required. Poking around the change history shows that the very earliest iterations of Windows Calculator, starting in 1989, didn't use the rational arithmetic library, instead using floating point arithmetic and the much greater loss of precision this implies.
Edge-on-Chromium's homepage. [credit: Neowin ]
Some early screenshots of Microsoft's Chromium-based Edge browser have leaked to Neowin. Unsurprisingly, Microsoft seems to be working on a development cycle that's similar to that of Chrome, with pictures of both a Canary channel, shipped daily, and a Dev channel, shipped weekly.
In many ways the browser is what one would expect of a Microsoft Chromium browser: in those places where Chrome would use a Google account for syncing or a Google store for extensions, Edge-on-Chromium uses a Microsoft account and a Microsoft store. Similarly, the homepage is similar to that of Edge, using Bing pictures and Microsoft News links. Perhaps the biggest change is the settings page, which adopts a similar look-and-feel to the Windows 10 settings app—section headings down the left, the actual settings on the right.
But the screenshots also show just what a challenge Microsoft has to win people over to its browser. If you're going to get an experience that's 99 percent Chrome, why not just use the real thing, with its even more extensive data syncing and extension store?
Google is developing a new cache for Chrome (via CNET)that should make some page loads extremely fast. The only catch? They'll have to be pages you've already seen and are revisiting after hitting the browser's back button.
The new bfcache (for "back/forward cache") changes that: it lets the browser capture the entire state of a running page—including scripts that are in the middle of execution, the rendered images, and even the scroll position—and reload that state later. With bfcache, rather than having to reload the page from scratch, the page will look as if it was paused when you click a link to a new page and subsequently resumed when you hit back.
Google has said that it will revise the proposed changes to Chrome's extension API that would have broken or reduced the functionality of a wide range of ad-blocking extensions to ensure that the current variety of content-blocking extensions is preserved, in response to a wide from the developers and users of those extensions. The company maintains that "It is not, nor has it ever been, our goal to prevent or break content blocking" [emphasis Google's] and that it will work to update its proposal to address the capability gaps and pain points.
The advertising company is planning an overhaul of its extension interface to, among other things, increase user privacy, make it harder for extensions to perform malicious actions, and make the browser's performance more consistent. Together, this work is documented as Manifest V3.
One of these changes in particular had grave consequences for ad blockers. Currently, ad blockers make extensive use of an API named webRequest. This API allows extensions to examine every single network request made by a page and either modify it (to, for example, redirect it to a different address or add or remove cookies), block it altogether, or allow it to continue unhindered. This has both a substantial privacy impact (an extension can see and steal your cookies and hence masquerade as you) and, Google said, some performance impact, as every single network request (of which there may be dozens in a single page) has to wait for the extension to perform its analysis.
Opera has unveiled a new look and feel for its browser. Expected to ship in version 59, codenamed "Reborn 3" (R3), the new appearance adopts the same square edges and clean lines that we've seen in other browsers, giving the browser a passing similarity to both Firefox and Edge.
The principles of the new design? "We put Web content at center stage," the Opera team writes on its blog. The design is pared down so that you can browse "unhindered by unnecessary distractions." Borders and dividing lines have been removed, flattening out parts of the browser's interface and making them look more uniform and less eye-catching. The new design comes with the requisite dark and light modes, a welcome trend that we're glad to see is being widely adopted.
Web-centric is not a bad principle for an application such as a browser, where the bulk of the functionality and interest comes from the pages we're viewing rather than the browser itself. At first blush, I think that Opera has come up with something that looks good, but it does feel like an awfully familiar design rationale.
In a bid to cut the number of coding errors made in its Firefox browser, Mozilla is deploying Clever-Commit, a machine-learning-driven coding assistant developed in conjunction with game developer Ubisoft.
The tool builds on work by Ubisoft La Forge, Ubisoft's research lab. Last year, Ubisoft presented the Commit-Assistant, based on research called CLEVER, a system for finding bugs and suggesting fixes. That system found some 60-70 percent of buggy commits, though it also had a false positive rate of 30 percent. Even though this false positive rate is quite high, users of this system nonetheless felt that it was worthwhile, thanks to the time saved when it did correctly identify a bug.
Since Chrome's very first release, performance has been one of Google's top priorities. But Google is against a competing force: Web developers. The Web of today is a more-complex, bandwidth-intensive place than it was when Chrome was first released, which means that—although Internet connections and the browser itself are faster than they've ever been—slow pages remain an everyday occurrence.
Google engineers have been developing "Never Slow Mode" in a bid to counter this. Spotted at Chrome Story (via ZDNet), the new mode places tight limitations on Web content in an effort to make its performance more robust and predictable.
The exact design and rationale of Never Slow Mode aren't public—the changelog for the feature mentions a design document but says it's currently Google-internal. But taken together, that design and rationale will ensure that the browser's main thread never has to do too much work and will never get too delayed. They will also ensure that only limited amounts of data are pulled down over the network. This should make the browser more responsive to user input, lighter on the network, and a bit less of a memory hog than it would otherwise be.
Last year, Chrome introduced changes to try to prevent the persistent nuisance that is pages that automatically play noisy videos. Next month, Firefox will be following suit; Firefox 66, due on March 19, will prevent the automatic playback of any video that contains audio.
Mozilla's plan for Firefox is a great deal simpler and a great deal stricter than Chrome's system. In Chrome, Google has a heuristic that tries to distinguish between those sites where autoplaying is generally welcome (Netflix and YouTube, for example) and those where it isn't (those annoying sites that have autoplaying video tucked away in a corner to startle you when it starts making unexpected sounds). Firefox isn't doing anything like that; by default, any site that tries to play video with audio will have that video playback blocked.
Firefox users will be able to override this block on a site-by-site basis, so those sites where autoplay is inoffensive can have it re-enabled. This permission is automatically extended to sites that have previously been granted access to microphones or webcams, so that audio and video communications apps built using WebRTC will work as expected. Firefox will also allow muted video to play back automatically.
It's not an OS. It's an application.
Want to be able to run classic Mac OS applications compiled for the Motorola 68000 series of processors on your ever-so-modern Mac OS X machine? Or maybe you'd rather run them on a Raspberry Pi, or an Android device for that matter? There's an emulation project that's trying to achieve just that: Advanced Mac Substitute (AMS).
Emulators of older computer platforms and game consoles are popular with vintage game enthusiasts. But emulators also could be attractive to others with some emotional (or economic) attachment to old binaries—like those with a sudden desire to resurrect aged Aldus PageMaker files.
Advanced Mac Substitute is an effort by long-time Mac hacker Josh Juran to make it possible to run old Mac OS software (up to Mac OS 6) without a need for an Apple ROM or system software. Other emulators out there for 64000 Mac applications such as Basilisk II require a copy of MacOS installation media—such as install CDs from Mac OS 7.5 or Mac OS 8. But AMS uses a set of software libraries that allow old Mac applications to launch right within the operating environment of the host device, without needing to have a full virtual hardware and operating system instance behind them. And it's all open source.
Google is planning to change the way extensions integrate with its Chrome browser. The company says that the changes are necessary for and motivated by a desire to crack down on malicious extensions, which undermine users' privacy and security, as part of the company's continued efforts to make extensions safer. The move also means that popular ad blocking extensions such as uBlock Origin and uMatrix will, according to their developer, no longer work.
The plans, called Manifest V3, are described in a public document. Google is proposing a number of changes to the way extensions work. The broad intent is to improve extension security, give users greater control over what extensions do and which sites they interact with, and make extension performance more robust. For example, extensions will no longer be able to load code from remote servers, so the extension that's submitted to the Chrome Web store contains exactly the code that will be run in the browser. This prevents malicious actors from submitting an extension to the store that loads benign code during the submission and approval process but then switches to something malicious once the extension is published. In a bid to discourage extensions from asking for blanket access to every site, Manifest V3 also changes the permissions system, so universal access can no longer be demanded at extension install time.
The problem for ad blockers comes with an API called webRequest. With the current webRequest API, the browser asks the extension to examine each network request that the extension is interested in. The extension can then modify the request before it's sent (for example, canceling requests to some domains, adding or removing cookies, or removing certain HTTP headers from the request). This provides an effective tool for ad blockers; they can examine each request that is made and choose to cancel those that are deemed to be for ads.
As such, GitHub represented a trade-off: you could use GitHub's services for free, but you had to share. If you didn't want to share, you had to pay.
For many of us, our browsers' new-tab pages are something of a liability. Whichever browser you use, they all follow a fairly similar style: a bunch of boxes linking to the sites that we use and visit regularly. This is great when your regular sites are Ars, Gmail, and Twitter. But all too often, sites of a less salubrious nature find their way onto our new-tab pages, disclosing to the world our dirty habits when nobody's watching. While we can, of course, clean up our new-tab pages by Xing out the buttons for the offending sites, a moment of inattention can all too easily expose our pornographic predilections to the world.
But one browser is working to protect our secrets: Firefox. A redditor spotted (via Techdows) that Firefox contains code to spare your blushes. The browser contains a hard-coded list of adult site domains, and if one of your most-visited sites is one of those domains, it will automatically be hidden from the new-tab page. As long as your porn viewing is reasonably mainstream, you never need to worry about Firefox spilling the beans.
It turns out that this isn't actually a new feature. Much like Chrome's advanced tab management capabilities, it's an old feature that's been newly spotted. Mozilla added the code to the browser about four years ago. It wasn't actually created to prevent potential new-tab page embarrassment; rather, it was to aid Firefox's commercialization efforts. Mozilla experimented with having sponsored content on the new-tab page, allowing companies to pay to have their sites promoted in those buttons. Many advertisers don't relish the thought of having their precious brands juxtaposed with Internet filth, so the Firefox developers added the blacklisting capability to try to prevent porn from appearing alongside sponsored content.
Chrome 73 is going to include support for macOS 10.14's dark mode, with an alternative color scheme for its user interface that cuts the brightness. It's now clear that a Windows version of the same is in development, though it seems to trail the macOS version.
A bug report was spotted by Techdows, and preliminary work has been started to bring Windows its dark mode. Unlike its macOS counterpart, which should track the operating-system mode, the Windows dark mode currently has to be forcibly turned on with a command-line switch. Adding "--force-dark-mode" to the command line of current builds of Chrome 73 makes everything dark.
The macOS work has top priority (P1). The Windows work is only P2 (originally P3), surprisingly suggesting that it's less important, enough though Chrome has far more Windows 10 users than it does macOS users. Development of the Windows theme was at least, for a time, hindered by one of the developers not having a Windows laptop to use.