The 2016 Almanac
Each year in the web development industry is quite busy. And so has been 2016. This Almanac collects the most important articles and tricks of the year for you to review. 2016 brought WDRL 119 to 164, meaning I’ve written 47 editions in this year.
What happened in “News” in 2016? #
Along with the big topic HTTPS, this shaped the first quarter of 2016 quite a bit. HTTPS usage increased a lot in 2016, mainly due to the availability of Let’s Encrypt that offers free TLS-certificates for everyone. Browsers now restrict a lot of APIs to HTTPS-contexts only to push the adoption of HTTPS and to protect user data (i.e. Geolocation). But SSL doesn’t make everything better, it also introduces new problems: WoSign and StartCom certificates have been untrusted by major browsers after it’s been revealed that they created and validated backdated certificates.
But what else happened? jQuery version 3 was published, Angular 1.6 and 2.0, React.js v15, and a lot of other new JavaScript frameworks such as vue.js and libraries as well. Node.js v6 and v7 was released, Docker now works fine on Macs, and the git client Tower is now on Windows as well.
Now some fun fact: In 2016, Amazon Web Services’ Cloudfront service finally got support for gzip.
Getting back to browsers, Chrome supports preload as, has support for CSS hyphens again, and will no longer execute document.write on 2G network connections. Safari 10 is out, with CSP2 support, Internationalisation API, WOFF2 and Safari Technology Preview is available for developers. Firefox introduced -webkit- prefix to fix the web, and supports VP9, WebM, Brotli now.
For JavaScript, ESLint is now the standard way to lint your code, and JSCS has been merged into it. I’m glad that some consolidation happened and we now have a great tool that we can use without needing to compare all the tools for each project.
-
AWS enables gzip for Cloudfront
Finally, Amazon Cloudfront now supports gzipping text and binary content. You can and should enable it right with now if you serve such files over the service.
-
IPv6 celebrates its 20th birthday by reaching 10 percent deployment | Ars Technica
This week, IPv6 is twenty years old and it celebrates its birthday with a global share of 10%. It’s incredible how slow the usage of IPv6 has been but for two years now we see a fast growing adoption of the technology and I’m delighted to see how it will develop over the next two years.
-
Webkit! RESOLVED FIXED - otsukare
As still a lot of websites are horribly broken in Firefox, Firefox starts accepting
-webkit-prefixes. With that step, they follow Microsoft with its Edge browser. Another occurrence of why vendor prefixes are nothing we should be proud of using. -
Firefox 44: Find out what is new - gHacks Tech News
This week, Firefox 44 has been released to the public. The new version offers better video support (VP9, WebM in addition to h.264) and adds support for Brotli compression (a new, better compression than gzip) for HTTPS connections. Service Workers are also supported now. Furthermore, the new Firefox requires add-ons to be signed and it doesn’t connect to sites anymore that allow RC4 ciphers in their HTTPS configuration.
-
Safari - Downloads - Apple Developer
Big news from Apple again: They now have a developer edition of Safari for us (usually updated every two weeks) that you can run side by side with Safari or WebKit Nightly. Feature-wise, see the release notes for more information.
-
Grunt 1.0.0 released - Grunt: The JavaScript Task Runner
Grunt 1.0.0 has been released. Long time no hear, it’s still one of the most used task runners for front-end workflows. Now finally the stable release is out, and with it, many bugs and glitches have been fixed, making it now a robust solution for long-term projects. I’m excited to hear that the development roadmap has very nifty features for it to keep evolving in the future.
-
Welcoming JSCS To ESLint - ESLint - Pluggable JavaScript linter
Using JSCS? First the great news: Version 3 will be based on a CST instead of an AST, making the tool way more effective. And while you should upgrade to the latest version, the team announced that it’ll also be the last version as they’ll join the ESLint team and will now put their efforts into providing a nice transition from JSCS to ESLint.
-
Node v6.0.0 (Current) | Node.js
Node.js 6.0 has been released and it’ll be the new LTS version. However, the release also brought along a lot of changes. While this is great because performance and security have improved and cool new features were added, it also forces a lot of modules based on Node.js to update their code. That said, test carefully before upgrading it in a production environment.
-
Dev.Opera — What’s new in Chromium 50 and Opera 37
With the Chromium 50 and Opera 37 release, Regular Expressions can now handle Unicode better,
<link rel="preload" as="…">is supported, CSScolumn-fillcan balance multi-column layout content better, and Geolocation and App Cache API won’t work on non-HTTPS contexts anymore, andObject.observewon’t work anymore as well. -
WebKit adopts Geolocation HTTPS only
Following Chrome and Firefox, WebKit will block Geolocation API requests in future releases, except in HTTPS network contexts.
-
Dev.Opera — What’s new in Chromium 51 and Opera 38
Opera 38 (and Chromium 51) brings a lot of new ES6 features, Iterable array-like DOM interfaces, passive event listeners, and the Intersection Observer API to track when a given element in the DOM enters or leaves the visible viewport.
-
Safari 10.0
Safari 10 has been announced at WWDC, and it has some great new features: IndexedDB support, CSP 2.0, Shadow DOM 1, complete ES6/ES2015 support, ES Internationalization API support, inline and auto video playback on iOS, Picture in Picture on OS X, and WOFF2 support as well as font loading support (yay!). In CSS we now have
object-positionfor the already availableobject-fitproperty, and clipping using SVG paths. Last but not least, even ifuser-scalable=nois set as viewport rule, users will be able to pinch-and-zoom from now on. -
Improved Font Loading | WebKit
WebKit finally supports improved font loading through the CSS Font Loading API, as well as WOFF 2 and
unicode-range. -
Git Tower for Windows Beta
The beloved Git Tower app is coming to Windows. I’m pretty sure that the pricing will be the same as for the Mac app and it’s great to see that this useful Mac app will soon be available to Windows users as well.
-
Apple tests WebP graphics format to speed up websites - CNET
The new “technology preview” version of Safari now supports Google’s WebP image file format. Note that it's currently a beta test version, and the final support is unknown — however, it could be interesting since it would mean native support of the file-format for Mac OS as well, making it the first large OS supporting WebP.
-
Bootstrap 4 Alpha 3
Bootstrap 4 Alpha 3 has been released this week. It comes now with an overhauled grid, updated form controls, a system font stack, and more.
-
Why ChakraCore matters | Christian Heilmann
Microsoft announced that their JavaScript engine ChakraCore now supports Mac OS and Linux. This means, you can now test and run your Node.js applications not only in Google’s V8 engine. Christian Heilmann wrote up why this is an important step.
-
CSS Function Syntaxes (color and otherwise) - Tab Completion
There’s a big change coming up for how we write colors in CSS. Tab Atkins recently changed the color functions syntax in the CSS specification. So in future, we will write
rgb(0 255 0 / 50%)instead ofrgba(0, 255, 0, 50%). This might sound awkward after years of doing it differently, but the reason for it are the new color functions available in CSS Colors Level 4, includingcolor(). You can read more about this in Tab’s blog post, but for now be assured that the old syntax is likely to be supported forever in our browsers thanks to legacy support. -
Docker for Mac and Windows is Now Generally Available and Ready for Production | Docker Blog
The new Docker for Mac and Windows is finally production-ready after several months in beta. Great news for all who eagerly awaited it and always had issues with the previous version (i.e. disk and permission management problems).
-
Firefox 48 Release Notes
Big news from Mozilla this week: With Firefox 48, the multi-process engine e10s is now enabled for many users, making Firefox much more robust, faster and more reliable. Also, protection against harmful downloads has been improved and unsigned/unverified add-ons won’t load anymore. Web Extensions support including CSP enforcements for web extensions is also new, just like the
about:debuggingdeveloper page. For developers, the DevTools come with an improved font inspector,calc()is now supported forline-heightand can be nested, and, last but not least, support for the CSP directiveupgrade-insecure-requestshas been added. -
Microsoft Edge 14 is out - Microsoft Edge Development
Microsoft pushed Edge 14 this week and with it a lot of great new things. Notably, the new version got a lot of accessibility improvements and now competes as one of the best browsers in the HTML5 Accessibility test. New features also include extensions and pinned tabs and performance got better to improve battery life, too. Fellow developers will be happy to hear about web notifications, the Fetch API, Beacon Interface, JavaScript’s
async\await, and support for<time>and WOFF2. -
SustainableUX: free online conference Feb 16 2017
I rarely recommend conferences here, but this free online conference might be interesting for some of you: Sustainable UX, with topics on doing meaningful, sustainable work.
-
jsPerf: JavaScript performance playground
Do you remember jsPerf? It has been down for years (due to spam), now it celebrates its revival. Finally a chance to use this great, great tool again.
-
Distrusting New WoSign and StartCom Certificates | Mozilla Security Blog
Following a suggestion by other major browser vendors, Mozilla will distrust WoSign and StartCom certificates from January 1st, 2017 due to backdated certificates and non-disclosure and denial of an acquisition of the two companies. A great step for better CA security.
-
Node v7.0.0 (Current) | Node.js
Node.js v6 transitioned to the current LTS version this week and Node.js v7 just has been released, too. It now covers 98% of ES6, brings the new V8 engine, improved reliability and performance, and a new URL-parser based on the WHATWG URL standard.
-
Introducing FlyWeb
FlyWeb is a new experimental Web API that allows web pages to host local web servers for exposing content and services to nearby browsers. It also adds the ability to discover and connect to nearby local web servers to the web browser itself. This might be a bit hard to grasp now, but imagine this in combination with a decentralized service picking the nearest edge server via FlyWeb. You wouldn’t need any complex external CDN solutions that choose the “nearest” edge server via geolocation resolution or similar unreliable technologies anymore. Another use case could be an “off-grid on-the-fly network” with devices that use FlyWeb together with Bluetooth and WiFi chips to find other devices in the vicinity and hereby introduce a whole new area of network reliability. As FlyWeb is a technology experimentally developed by Mozilla, you need to have Firefox Nightly installed to test this out.
-
Implement UI for input type="date" in Firefox Nightly
After the time picker landed in Firefox Nightly a few weeks ago, there’s now a datepicker as well.
-
418833 – can't define the style of input when the type is set to "checkbox" or "radio" with CSS
Support to style input type checkbox and radio via CSS landed in Firefox Nightly.
-
Ryan Feeley on Twitter: "Coming soon to Firefox. We’ll let you know when you go to type your password into an insecure (HTTP) page or form. https://t.co/kvu9DIZrUm"
Firefox will soon warn people if they are about to enter a password in insecure (HTTP) contexts. It’s time to secure every login with an HTTPS connection and enforce this as a best practice.
-
Angular 1.6 is here, this is what you need to know
Angular 1.x users, here’s version 1.6 for you. Todd Motto shares what’s new in the version and how to migrate easily.
-
Microsoft Edge build 14986 changelog - Microsoft Edge Development
The new Microsoft Edge build features support for Brotli, for CSS Custom Properties, as well as async/await. DOM performance has also been improved.
-
Dev.Opera — What’s new in Chromium 55 and Opera 42
Opera 42 (built upon Chromium 55) is out and comes with a built-in currency converter, support for Pointer Events, JavaScript async/await, and CSS
hyphens.document.write()on the other hand, will no longer load over 2G connections. -
EU ready to set laws for accessibility testing | QA Financial
The EU Parliament is now drafting a directive that will force private sector companies to accommodate disabled people when offering their goods and services. This means financial firms will need to comply with WCAG and other accessibility standards soon.
-
Firefox Hardware Report
Firefox has introduced Telemetry a while ago to its browser and now shares some details on what devices and hardware Firefox users use. In September 2016, for example, 10% still used Windows XP while only 7% used macOS and 77% of the users still have Flash installed. The most common screen resolutions are
1366x768pxand1920x1080px. There are many more really interesting statistics in there, and we’ll have to see how this develops over the next few years. But for us web developers, this also highlights that we shouldn’t assume that people use QuadCore CPU, 8GB RAM machines but have “lower-end” devices instead. So be aware of this before you create fancy CPU/memory-consuming web applications that a user will not have fun with. -
Samsung Internet 5.0
Samsung Internet browser 5.0 has been released. It has some interesting new technologies built in, such as content provider extensions, 360˚ video, a QR code reader, and a video assistant.
What happened in “Generic” in 2016? #
The Generic section contains articles that don’t really fit into any other category and therefore we will see very various topics.
In late 2015, Maciej Ceglowski held a talk about the “Website Obesity Crisis”—a talk that the community took serious. A talk about the always growing page size of websites, a talk about the bloat of websites. Mandy Brown took up this talk and elaborated on the importance of hyperlinks and the importance of redirecting and preserving URLs, since they are the key successors of websites.
To err is human, Stephen Hay realized and gave the advice that sometimes we should be more pragmatic and less idealistic. Sometimes, the reality is messy, and not all people can spend days optimizing the smallest details.
Aaron Gustafson shared a piece on why Progressive Enhancement is not an anti-JavaScript concept that pretty much finished all the previous discussion about whether Progressive Enhancement is bad.
For those who love to read technical books, Eric Elliot, author of some great JavaScript articles and books, has built an enormous collection of the best books for people who love code.
Another timeless topic gained attraction in 2016 again: HTTP status codes are a thing that we neglect so very often. And instead of serving the proper status codes as response to a request, we just use generic ones. And this while not only you but also your logging, the remote logging service or the user could benefit a lot from a 402 Payment Required status instead of getting a generic 403 forbidden response.
Then, at some point I stumbled over an article that showed me how fragile our whole Internet architecture has become. Up to 70% of the internet traffic go through a datacenter in Virginia. It’s AWS’ main datacenter and routes the majority of websites and applications. Of course this might have already changed again a bit and now might be distributed a bit more equal between Microsoft’s, Google’s and Amazon’s cloud but it’s impressive that we rely on one company, on one location so much.
And finally, Zach Leatherman wrote a comprehensive guide to font loading strategies.
-
The Website Obesity Crisis
Really, if you only read one thing this week about web development, let it be this transcript of Maciej Ceglowski’s talk “The Website Obesity Crisis” or watch the talk.
-
Hypertext for all | A Working Library
Everybody who has ever linked to a third party and checked the health of links from time to time knows the issue: broken links. And we still change URLs or remove resources (yes, I did this myself a couple of times) without sending a proper redirect or notice to the user. We do that despite knowing that the hyperlink is one of the most important parts of the web. I think this is also a good place to remind you of this article, too.
-
Reality is messy | The Haystack
Stephen Hay writes about best practices featured in blog articles and why the reality is often very different, requiring us to be more pragmatic and less idealistic. The reality is sometimes messy, not all people can spend days optimizing the smallest details.
-
Up to 70 Percent of Global Internet Traffic Goes Through Northern Virginia - Nextgov.com
Phew, I always wondered about how much of the internet Amazon AWS transports. In fact, we still don’t know it, but we now know that up to 70% of the global internet traffic goes through Northern Virginia, so we can assume that the global share of what’s hosted on AWS is even higher. A scary thought by all means, as this makes the majority of the internet very vulnerable to any kind of attack or catastrophe. Did you ever think of having a backup plan for your AWS hosted application? Can you make the switch to another data center within minutes?
-
One weird trick to get online — designers hate it! Bruce Lawson
“I ran the stats today. Of more than 250 million Opera Mini users, 50% are on Android/iOS and 50% are on feature phones. The second group of people almost certainly have no choice in which browser to use to get a full web experience. That’s 125 million people that the designer-on-stage doesn’t care about.” says Bruce Lawson in his article about why Opera Mini matters for designers and developers in the Western world.
-
How to reduce the cognitive load of your code – CODE
What’s the key to good code? It’s not about great algorithms, or that the code is scalable. The key to good code is reducing its cognitive load. Christian M. Mackeprang shares his approach on how to do that easily.
-
The Software Developer’s Library: A Treasure Trove of Books for People Who Love Code
Eric Elliot collected the — from his view — best books for people who love code in this article.
-
CloudFlare is ruining the internet (for me) : SLASHGEEK
Cloudflare has constantly been under fire for displaying Captchas and blocking various visitors, especially if they use Tor networks or special Virtual Private Networks. But this is about more than just a few users; this article shares how many people are affected by Cloudflare’s firewalls, especially if they live in Africa and Southeast Asia.
-
Choosing an HTTP Status Code — Stop Making It Hard – Racksburg
These lovely flowcharts will help you decide which proper HTTP status code your application should respond with.
-
A Comprehensive Guide to Font Loading Strategies—zachleat.com
A Comprehensive Guide to Font Loading Strategies by Zach Leatherman is the current best pocket guide on how to load fonts.
-
Writing Less Damn Code | HeydonWorks
Heydon Pickering shares tips on writing less code to make your developer life easier. Something we all should remember.
-
An exclusive look on how AI and machine learning work at Apple
While many think Apple isn’t in the Artificial Intelligence game, this exclusive look gives some insights into why Apple handles things differently. An interesting read that reveals how Apple tries to do Artificial Intelligence with less user data and without tracking you — contrary to the industry’s big players.
-
Not Shipping Is a Virtue — Jason Zimdars
Jason Zimdars explains why not shipping a feature can be a virtue. An article about hidden costs, and why shipping does not equal success.
-
Chromium Blog: Chrome 55 Beta: Input handling improvements and async/await functions
With the upcoming Chrome 55 (now in beta), the browser will finally get support for Pointer Events. It will also support JavaScript
async/await-functions and revive the CSShyphensproperty again after years of absence in Chromium browsers. TheonceEvent Listener option will also be added and, to improve load times and prevent failed navigations, cross-origin and parser-blocking scripts injected usingdocument.write()will no longer load over 2G connections (which also means that in upcoming Chrome versions 3rd-party fallbacks as used by the HTML5Boilerplate won’t work anymore in upcoming Chrome versions). -
The JavaScript Wars • cssence.com
Matthias Beitl has written a well-thought-out essay on how we got into the “JavaScript wars”, the paradigm shift, and an overtime improvement.
-
[Insert Clickbait Headline About Progressive Enhancement Here], From the Notebook of Aaron Gustafson
Aaron Gustafson wrote a thoughtful piece on why progressive enhancement is not an anti-JavaScript concept but a concept of finding the best way to adapt to the nature of the web. It’s a subtle, inclusive concept that takes the environment and its quirks into account.
What happened in “UI/UX” in 2016? #
2016 had a couple of interesting concepts and design principles to talk about. For example, it’s incredibly useful to start a project by doing an UX-kickoff meeting. But while this sounds very easy, there are things to consider for such meetings. Robert Hoekman Jr. wrote this up in a great summary for you, so you can use this guide for every kick-off meeting from now on.
Some articles took a focus on how to put data and analytics into perspective. And while one thing is to show data correctly and not interpolating it to avoid false visual numbers, the other important finding was that it’s important to acknowledge that data is incomplete. That data you get from Google Analytics is not reflecting or indicating what decision you should make.
Design guides, living styleguides have become a thing in the past. Now that we have a clue that it’s doable, we start to realize that it’s important to add documentation on animations in your design systems, or to build inclusive design patterns.
And while accessibility has its own section in the WDRL, it’s important that you start thinking about accessibility not only from a technical implementation side but right from the beginning of a project. Accessibility affects your content strategy, the design and the user experience of your project and therefore has to be considered by every person on the project.
-
Troy Hunt: It’s 2016 already, how are websites still screwing up these user experiences?!
Troy Hunt complains that in 2016, websites still fail on basic user experiences and, instead, take over the user’s screen with newsletter subscriptions, surveys, multi-part articles, password restrictions, popover ads, cookie warnings and scroll-jacking.
-
How To Take Charge of A UX Kick-Off Meeting
Robert Hoekman Jr shares an important lesson on How To Take Charge of A UX Kick-Off Meeting. This features his experience from agencies which didn’t manage to get this right, and stresses how important it is to ask the right questions before designers and developers are starting to work on the project.
-
7 Things Every Designer Needs to Know about Accessibility
Accessibility is often seen as a technical task but in reality, it’s an integral process that should be taken into account by everyone. Here’s what designers can do to improve the usability and accessibility of the product.
-
The Psychology of Color in Marketing and Branding
Gregory Ciotti shares his findings about the psychology of color in marketing and branding.
-
Death to Complexity: How we Simplified Advanced Search
Ali Torbati shares the process of reimagining Spokeo’s advanced search tools. All about making a very complex interface as simple as possible.
-
guide Archives - Web Methodology Project
The Web Methodology Project is a fresh guide to building web projects, and even though it’s still a work in progress, it already looks very useful. So keep an eye on it.
-
Google and Monotype have created a full font face for all languages — Noto
Google and Monotype created a full typeface for all the world’s written and spoken languages: Noto.
-
Don’t make Line Charts lying about its data
Coding a line chart isn’t a big deal anymore thanks to libraries like D3 or Highcharts. But what seems so easy, actually isn’t: there are quite some pitfalls which can distort the results and lead to false assumptions about the presented data. Line-smoothing is one of them.
-
Beyond Measure – Erika Hall – btconfBER2016 on Vimeo
Erika Hall explains in her recent Beyond Tellerand talk why we are trying so hard to measure things and collect data and why this doesn’t mean we get better insights or make better decisions.
-
Elizabeth Allen on Twitter: "Placing labels above items means if someone with low vision zooms in, they don't lose context
Something that’s easily forgotten when thinking about form usability is how placing labels can matter when a user zooms into a page. For example, we need to consider that placing labels above items means users who zoom in won’t lose context.
-
Simplifying the GST registration process: a designer’s perspective
How do you design a simple, usable registration form for a tax reform? @jelumalai explains the process from a designer’s perspective , diving deep into the challenge of asking for a lot of information while maintaining a clear workflow for the user.
-
We've updated the radios and checkboxes on GOV.UK | GDS design notes
Gov.uk explains why they enlarged their radio and checkbox buttons. As it turned out, the enlarged versions performed better than default browser styles due to increased visibility and improved proportions between labels and form action elements.
-
Inclusive - Microsoft Design
Microsoft’s Inclusive Design guidelines and resources are very helpful to understand how you as a company can take advantage of creating an inclusive product by design.
-
Animation in Design Systems ◆ 24 ways
Sarah Drasner on why it’s important to properly describe and document animations in a design system.
What happened in “Tooling” in 2016? #
Tooling and Tools—one of the biggest discussions and changes to front-end development in the past years. And while we still struggle to find the proper tool-set and workflow automation tools, we had some pretty amazing tools coming out in 2016 and also great articles how to use the tools.
Addy Osmani for example, shared how you can use many features of npm offline, including offline installation of dependency packages. Speaking of npm, there’s now yarn, a pretty decent alternative client to npm’s default client that solves a lot of the issues that people experience with npm.
Una Kravets created a simple but effective visual diff-checker using CSS blend-modes, we can now compare image differences in an even better way using Butteraugli.
Now, let’s have a look at the important things as developers: our workflow tools. With rollup.js, there’s a great bundler that does tree-shaking to reduce the size of the bundle and this can result in a way smaller filesize than with a default bundler. Webpack 2 has a way to support code splitting into modules so that we can load the modules on a page only when they’re needed and not all everywhere. And after a decade, Firebug is now officially dead and users are advised to use native Developer Tools instead now.
2016 was also the year when Bash landed in Windows, when Jenkins CI server 2.0 was published, when GitLab released Gitlab Pages, a CI runner and therefore is now a strong self-hosted competitor to Github.
When you deal a lot with remote SSH connections, you might know the situation when the connection breaks and your CLI stops working in the same window. We learned how to properly close such interrupted connections by entering [enter], then ~, followed by a ..
For smaller client-projects, GitFTP-Deploy might be a handy tool to automate the deployment without having a CI/CD service in place.
And with a global host file you can block ads and trackers easily from sending data to companies.
-
AddyOsmani.com - Offline installation of npm packages
Working with npm? Then you’re probably annoyed by installing dependencies over and over again over the network. Fortunately, there is a second option that lets you use many features of npm offline. Addy Osmani explains what you need to do to use it.
-
Better bundles with Rollup
Jack Franklin explores how we can build better JavaScript bundles with Rollup. Rather than excluding dead code, it includes only live code (aka ‘tree-shaking’). That’s only possible when using ES6 modules, though.
-
Force push with care
Pushing git updates with
--forceis something you usually should avoid. There are reasons why some teams forbid this entirely, I personally like to use it for edge-cases where you want to squash your feature branch before merging. Tute Costa shares a way how to prevent you from overwriting remote changes when force-pushing by using the--force-with-leaseoption instead. -
GSX2JSON - Google Spreadsheet to JSON API service.
GSX2JSON is a useful tool to convert Google Spreadsheet to JSON data, available as a simple API.
-
Developers can run Bash Shell and user-mode Ubuntu Linux binaries on Windows 10 - Scott Hanselman
At Microsoft’s Build 2016 conference, the company announced the availability of the Bash Shell on Windows 10 with the next major OS update.
-
Jenkins 2.0 Overview
Do you remember Jenkins, the Continuous Integration server? It’s back with an improved version 2.0. The update has better pipelines, much better git support and integration, a way better user experience with easier configuration pages, and it’s backwards-compatible so that there is no reason not to upgrade from a Jenkins 1.x version to the new one! As an alternative, GitLab now has better Runners that allow it to be used not only as a version control management platform but as a full CI service as well.
-
GitLab Pages · Websites for your GitLab projects, user account or group
If you use GitLab, the self-hosted alternative to GitHub, you can now also create GitLab Pages, using a static site builder of your choice (like Jekyll, Hexo, Middleman, or others). You can also easily set up HTTPS for them, and—even better—there are plans to integrate Let’s Encrypt in it, so you get a “seamless” HTTPS experience along the way. This is quite amazing to see as it has strong potential now to replace many hosted services with just one self-hosted GitLab server for many people.
-
Diffee Checker
There are different ways to compare screenshots. Usually, for testing tools, this has been done with command line applications, but you can now also create visual diffs easily by using CSS blend modes.
-
Hide whitespace diffs in Github with URL parameter
Very often, when you have git changes, some indentation or whitespace setting is altered, too. This is a bit annoying as it results in very confusing diffs. But you can actually add a
w=1query param to GitHub diff URLs to ignore whitespace. -
Butteraugli – estimate the psychovisual difference between two images
Butteraugli is a project that estimates the psychovisual similarity of two images. Y’all likely know that there are very different results from app to app if you use for example a JPEG-compression of
65—in one app this looks still perfectly fine while others already create unbearable artifacts. Butteraugli tries to solve this by creating a standardized comparison of two images and even claims to work better than SSIM. -
Properly Close a Frozen SSH Session
Do you know what to do when your SSH connection freezes? There’s actually a simple solution for this: Press
[enter], then~, followed by a.to send an escape sequence to your local SSH client to terminate the connection. -
Getfirebug Blog » Blog Archive » Unifying Firebug
Firebug. The tool that has been long replaced by Firefox’ native developer tools but nevertheless has wide-spread acceptance among developers. With Firefox’ switch to e10s (multi-process Firefox), however, the extension will no longer work, and its authors now announced that they won’t port it over as a new extension either. Instead, they will focus on providing a Firebug theme for native dev tools and improve those.
-
Dreamweaver is back for us, coders. — Anselm Hannemann
This week, Adobe presented a new beta of their code editor Dreamweaver. I had a look at it, and am pretty impressed that they managed to turn the tide and make it an appealing, modern editor for professional coders again. I’m curious what the open feedback will bring to the final product in the future.
-
peermaps — Peer to peer cartography.
Peermaps provides a decentralized, cooperative alternative to commercial map providers like Google Maps. Instead of fetching data from a centralized tile service, fetch map data from your peers using webtorrent.
-
GitFTP-Deploy, dead simple FTP-deployments
If you work on small projects, an (S)FTP-client can still be very useful. But on the other hand, it means you need to manually copy files from your git workflow to the server. To solve this issue, the indie developer Jan Östlund built GitFTP-Deploy, a handy (S)FTP tool for a small fee that does automatic deployments based on your git workflow.
-
MVPS HOSTS System-wide Privacy/AdBlocker
The privacy/tracking issue is bigger than we think. Have you ever monitored which apps connect to which service? You suddenly realize that an ad blocker/privacy add-on in your browser is only a drop in the bucket. Apps often connect to Google services, Google Analytics, sometimes to various ad networks, and very often to New Relic’s user tracking service. Fortunately, there’s a solution to nearly every problem: Add tracker hostnames to your
/etc/hostsfile. There’s even a public sample hosts file that you can use to be found here that includes most ad networks and trackers. Use it at your own risk though and be aware that some apps might not work anymore. But maybe your privacy is worth it? -
How to recover a dropped stash in Git?
If you ever lost a stash in git, here are a few tips on how to recover dropped stashes.
-
Google Closure Compiler JS
Google’s Closure Compiler is one of the best tools out there to compile JavaScript, but so far has only been available as a Java platform tool. Now, the team released a JavaScript version of Closure Compiler designed to run in Node.js environments. Available on GitHub or npm.
-
Yarn
This week, the Yarn npm client was published. It’s an open-source project that builds on top of npm’s registry, replacing the default npm client with a faster, more reliable client. But before you hop on the new train, consider that some features like custom registries and private packages are still missing and that the concept of locking down dependencies is fundamentally different to bower’s or npm’s principles of dependency management. Therefore you should try it out and read the concept before using it in your projects.
-
Automated browser testing for the modern web development stack | TestCafe
Automated browser testing usually causes a lot of trouble and custom build solutions. TestCafé now tries to solve this now in an easy way with a Node.js tool that takes care of all the stages: starting browsers, running tests, gathering test results, and generating reports without the need for a browser extension.
-
Getting Started with Webpack 2 — Drew Powers
Last week I shared a Webpack version 1 to 2 migration guide. Now Drew Powers wrote a tutorial to get started with Webpack 2, and, as a bonus, it uses Yarn as a package manager instead of npm’s native CLI client.
-
A beginner’s step-by-step guide to Code Splitting with Webpack 2 and React Router — Dennis Brotzky
Dennis Brotzky wrote a beginner’s step-by-step guide to Code Splitting with Webpack 2 and React Router.
-
Continuous Integration Using WebPagetest and Webpack — Rahul Yadav
Rahul Yadav shares how to use Webpack and WebPagetest on a Continuous Integration server to collect metrics and performance statistics on your web application.
What happened in “Security” in 2016? #
With several high-class security breaches and innumerable vulnerabilities found in web software, 2016 has been a year of both, struggle and big improvements to security in the web. With the broad availability of free HTTPS certificates through Let’s Encrypt, the number of websites using HTTPS doubled. With technologies like HSTS, HPKP and CSP2.0, and SRI developers got the tools to improve security effectively for our users. A common answer to how to add HTTPS to your website is “use Cloudflare”. It’s free and easy to set up; however, it’s also giving a false sense of security to users and might cause issues for users that visit with a proxy browser or Tor browser.
But we’ve also been shown how the shift towards more complex technology and logic in JavaScript can result in a security-risks. With Mario Heiderich showing off how to do XSS attacks in Angular, or showing why static HTML, DOMPurify, and Security in the DOM is all needed, we realized that we’re building upon a fragile system when using such frameworks to build entire front-end applications. Research has shown that browsers print out way too much information about a user’s system via JavaScript and that Service Workers make it relatively easy to install a backdoor into a foreign website, since SW are allowed to be installed via iframe.
If you use target="_blank" for links, did you know this can be a security issue? Fortunately it’s as easy to prevent this as adding rel="noopener" to these links. And for external resources, it’s recommended to use Sub Resource Integrity to ensure an external source hasn’t been modified or intercepted. This can be a great way to prevent third-party script vulnerabilities. By the way, this year a postMessage vulnerability has been detected in a social network widget that exposed a XSS-issue to million of sites.
If you run a Node.js application on a server, I’d highly recommend to monitor and fix security issues with Snyk.
In the end, we need to follow the best practices for security that are available as a comprehensive checklist and take care of user data, which doesn’t mean we only need to hash passwords with the latest methods such as Argon2 but protect other sensible data such as email addresses and personal data as well, if possible.
-
Why You Should Choose Your Own HTTPS. – Anselm Hannemann, Freelance HTML
There is a common misunderstanding of services like Cloudflare or CDNs regarding the way they handle HTTPS. I wrote an article why it’s wrong to think your website data is secured when you use the HTTPS provided by Cloudflare and what privacy implication the usage of a CDN usually has.
-
Eliminating Known Vulnerabilities With Snyk – Smashing Magazine
Guy Podjarny shares how you can eliminate known node.js / npm vulnerabilities easily.
-
ToStaticHTML for Everyone! About DOMPurify, Security in the DOM, and Why We Really Need Both
Just in time for my reading list, Mario Heiderich’s new talk slides are here. The topic? “ToStaticHTML for Everyone! About DOMPurify, Security in the DOM, and Why We Really Need Both” and very serious considerations about email clients running in the browser, flawed security process and why the browser vendors are ultimately in charge here.
-
PwnPhone: Default passwords allow covert surveillance.
Never say “We’ll just use defaults, for now. That password will do, for now.” in the context of security. It’ll be forgotten, and this is the most dangerous threat to your data, giving attackers the possibility to do anything with very little effort. Do you have a VoIP phone with a default password? A WiFi router? Change it to something secure. And please tell your friends and family as well. This is important.
-
Distribution packages considered insecure
Most of today’s software is delivered via package managers. While it’s an easy, and mostly reliable, way to distribute ready-to-use packages of source code, it also brings along a few security issues. Lukas Reschke shares why: why the whole system is based on trust. And since trust cannot be ensured, we should try to find alternative methods to provide a more open, secure, and reliable way to avoid scenarios like the one that just happened to a Linux distribution this week, which served malware from the official package.
-
Secure Password Hashing in Node with Argon2 - Stormpath User Identity API
Randall Degges explains how you can use the new, recommended hashing algorithm Argon2 for password hashing in Node.js. It’s pretty easy to use, so if you store passwords somewhere, consider Argon2 before it’s too late and your customers data is exposed because of a weak storing solution.
-
Barricade | Cross-Site Request Forgery Visually Explained
Do you know how a Cross-Site Request Forgery works? There is now an infographic that visually explains how CSRF works.
-
Open Whisper Systems >> Blog >> WhatsApp's Signal Protocol integration is now complete
A spectacular announcement regarding content security has been made this week by Whatsapp: All (group) messages, calls are now End-To-End encrypted with Open Whisper Systems’ protocol, if possible. While this is great to see as it enables encryption for over 1 billion users, you should be aware, that your metadata attached to Whatsapp is still not encrypted and while your message content is encrypted for all in-between, Whatsapp is still closed source and they could theoretically build in a logger prior to when the content is encrypted without you noticing it.
-
How to implement SRI in your build process ★ Mozilla Hacks – the Web developer blog
Justin Dorfman and Joshua Mervine explain how to implement Sub-Resource Integrity (SRI) in your build process.
-
Analysis of CSP in the Alexa Top 1M sites (April 2016)
Alexa’s top one million sites were analyzed for their CSP implementation. The result: 99.62% don’t have a Content Security Policy at all, and of the remaining share only 53 sites integrated it without
unsafe-inlineoptions. -
How we built Origin CA: Web Crypto
GlobalSign has created a client-side PKI implementation to make certificates more secure. The open-source JavaScript library pkijs implements the formats that are used in PKI applications like signing, encryption, certificate requests, OCSP and TSP requests/responses. It is built on WebCrypto (Web Cryptography API) and requires no plug-ins. And now, CloudFlare has built “Origin CA” with it to make it easier to secure the connection between CloudFlare and the origin server.
-
WireGuard: fast, modern, secure VPN tunnel
Most VPN technology is already quite old, and cryptography is not as good as it could be. Wireguard is a new VPN currently in development that will have state-of-the-art cryptography and claims to be faster than IPSec. It’s built by people who have a deep understanding of secure software and cryptography, and I’m excited to see this as a stable product soon.
-
Backdoor Service Workers — Jeremy Keith
Jeremy Keith brings up a new point to the whole Service Worker and PWA debate: Currently, you can easily install a Service Worker via
iframewithout a user ever visiting the SW-site itself. Gladly, users who block third-party cookies and site data in their browser settings are safe but unfortunately this has huge potential to be abused by third-parties. -
Making CSP great again! - Michele Spagnuolo and Lukas Weichselbaum // Speaker Deck
Content Security Policy [CSP] has great features but also brings its very own issues and risks. Michele Spagnuolo and Lukas Weichselbaum present the most common problems, implementation mistakes, some bypasses and how to make CSP great again in their slide deck.
-
Firefox 48: blocklist against plugin fingerprinting - gHacks Tech News
Firefox 48, out August 2, 2016, will block known plugin fingerprinting services thanks to a new blocklist that Mozilla developed to improve user privacy. For example, Flash files that are known for fingerprinting (or super cookies) are automatically blocked. In other news, Mozilla also announced that they will implement Tor’s privacy settings in Firefox, starting in Firefox 50 with the first features such as plugin information leaks and other techniques known to track down user behavior.
-
SRI: The `require-sri-for` CSP directive. - Chrome Platform Status
A new
require-sri-fordirective in Content Security Policy gives developers the ability to assert to the browser that every resource of a given type ought to be checked for integrity. If a resource of that type is loaded without integrity metadata, it will be rejected without triggering a network request. -
A practical security guide for web developers
FallibleInc’s “A practical security guide for web developers” tries to help developers build more secure, less vulnerable solutions. While they claim that it’s by no means a comprehensive guide, it covers stuff based on the most common issues they’ve discovered in the past.
-
Massive AdGholas Malvertising Campaigns Use Steganography and File Whitelisting to Hide in Plain Sight | Proofpoint
Proofpoint published a very interesting in-depth analysis of a big malvertising network that they found in the wild and that hid itself from plain sight by using steganography and file whitelisting. There’s evidence that they targeted a daily traffic of 1-5 million high-quality client hits.
-
New attack steals SSNs, e-mail addresses, and more from HTTPS pages
Mathy Vanhoef and Tom Van Goethem presented a new HEIST-attack on HTTPS pages to steal SSNs, email addresses, and more. You can view the slides [pdf], or read the write-up [pdf] to understand the attack and what you can do to prevent it.
-
Let's look at some of the security at Github
When we look into the source code of forms at github.com, we’ll find some interesting markup in there. Its purpose: preventing XSS attacks. In this blog post we can learn about the tricks that GitHub uses to maximize the security of their web application.
-
Troy Hunt: Website enumeration insanity: how our personal data is leaked
Troy Hunt wraps up how our personal data is usually leaked and why security is a design process, not only an implementation process. Also a good primer on how to design a password recovery feature.
-
More control with Clear-Site-Data and Feature-Policy
Both the W3C and WICG (Web Incubator CG) share ideas on two new new headers:
Clear-Site-DataandFeature-Policy. They both improve the security and privacy of users. While the first one can clean locally-stored objects, the latter declares features the browser is allowed to use within the origin, such as geolocation, cookies, and WebRTC. As a site-owner, you can use this to prevent a third-party from tracking your users. -
NIST’s new password rules – what you need to know – Naked Security
NIST’s new password rules say that text messages shouldn’t be used for two-factor authentication anymore. A huge progress that will hopefully lead to less crappy 2FA in the future.
-
The target="_blank" vulnerability by example
I recently shared an attack abusing
target="_blank"on pages where users can add custom URLs. To make clear how bad the attack is, Ben Halpern now shows how he made it work on Instagram (they fixed it pretty fast). . So remember to userel="noopener"for any URL that you didn’t hard-code into the source. -
Troy Hunt: Protecting your embedded content with subresource integrity (SRI)
I’ve already shared some thoughts on using SRI, but now Troy Hunt explains why it’s important to use it right now if you reference external third-party scripts, for example jQuery, from its CDN.
-
How To Issue A New SSL Certificate With An Old SSL Key – Smashing Magazine
Last week, Smashing Magazine had to deal with an expiring SSL certificate. While this is usually an easy thing to renew, problems may arise if you have HTTP Public Key Pinning (HPKP) enabled and set to a long expiry date (which usually is intended). Mathias Biilmann Christensen now wrote about the lessons learned from this and why you should be aware (and afraid!) of HPKP and how to issue a new certificate with an old key so that the site won’t break for your users with HPKP enabled.
-
Troy Hunt: Disqus' mixed content problem and fixing it with a CSP
What to do if a third party causes your site to throw mixed content warnings? Thanks to the
upgrade-insecure-requestsheaders you can fix your site by applying the header via your Content Security Policy. -
The pitfalls of postMessage
Mathias Karlsson shares the common pitfalls of
postMessageand why this can be a source of client-side vulnerabilities. The postMessage API is an alternative to JSONP, XHR with CORS headers and other methods enabling sending data between origins. -
postMessage XSS on a million sites
Mathias Karlsson shows how easy it is to enable a
postMessageXSS on your site by integrating a sharing button. -
The Orphaned Internet – Taking Over 120K Domains via a DNS Vulnerability in AWS, Google Cloud, Rackspace and Digital Ocean | The Hacker Blog
Matthew Bryant found a DNS vulnerability in AWS, Google Cloud, Rackspace and Digital Ocean which would basically allow him to take over 120.000 domains and it’s likely that other DNS providers are vulnerable as well.
What happened in “Privacy” in 2016? #
Privacy is a term that is easily getting mixed up and misunderstood. In a society where we have most personal information and data online and connected to several companies, we tend to forget what can happen to our data. 2016 was marked by privacy discussions. As predicted in late 2015, with the availability of Content Blockers for iOS we saw a big rise of ad and privacy blockers in 2016. As logical follow-up, several companies and publishers have built ad-blocker blockers, which then were blocked by the blockers again. Another result is that the BatteryStatus API will be deprecated after various websites misused it for tracking people or even to change pricing when the phone battery is low. On the other hand, Disqus changed its business plan to now focus on gathering data. But then, we shouldn’t forget that Apple has fought to protect users’ privacy in court and succeeded and also gathered a lot of other companies that supported protecting privacy.
And while the big bad internet companies Google, Facebook, et al. extended their tracking of users massively, there is clear evidence that users are more and more aware of this and try to hide their information from these services. Facebook sees this in a decline of personal posts, and those companies have been enforced by user-demand to provide end-to-end encryption in their messengers. We acknowledged it but still know that they have more than enough meta-data to track users and do targeted advertising. Spying organizations and surveillance companies can use these data to easily get data without the need of intercepting a specific cable.
As web developers, we’ve been provided with official guidelines on how we can comply with a user’s request to “Do not track” and how to implement privacy features for your users.
-
Turning Your Phone On Is Consenting To Being Tracked - Deep Dot Web
Unfortunately, it now seems to be common sense that by not turning off your cell phone entirely you’re consenting to being tracked. At least, that is how the police and secret services think about this and that’s how they act. This is a worrying step towards total surveillance, and I’m seriously considering leaving my smartphone at home more often and turning it off more often.
-
Customer Letter - Apple
This week, Apple started a new discussion about privacy, encryption and built-in backdoors on their devices. They received an order to build a custom iOS built, signed by Apple, that lacks several security measurements so that the FBI could hack into phone data relatively easily. In an open letter Apple shared why they declined to do so. Luckily, a lot of companies seem to agree with Apple, and I hope we can find a good way to protect our privacy, and with that, our personal security. Because, as we all know, even if such a backdoor is kept secure, no one could assure that this piece of software won’t get stolen and abused by someone who shouldn’t have access to it.
-
What every Browser knows about you
Today, as developers, we have many great features built into the browser. On the darker side, many of the features are affecting privacy and security of the user, as a site can read most of the information available even without user noticing anything. A demonstration shows what information a site can get about you without your confirmation. An eye-opener to re-think browser UIs and how much responsibility we, as developers, have to do the right thing. Be it educating the product owners or your own product where you voluntarily display a dialog to give a choice and notice about sending such data to your servers, we should embrace ethics. As a user, I tried to access the demo with a default Chrome setting (revealing horribly much sensitive data) and Firefox with Strict Tracking Protection, uBlock Origin, Disconnect and 3rd party cookies disabled. Despite all blockers, the latter reveals ‘only’ the data about my browser, its active plugins, my hardware and my local and public IP address.
-
Alexa, Cortana, and Siri aren’t novelties anymore. They’re our terrifyingly convenient future.
A.I. assistants can give you the news, order you a pizza, and tell you a joke. All you have to do is trust them—completely. An interesting story about the new listen-to-us devices that can scare the hell out of you if they surprise you. Reading George Orwell’s “Nineteen Eighty-Four” currently, I keep asking myself how we can still want to have such devices that are fully controlled by some company that only has follow-up commercial interest in selling such devices.
-
How sites can comply with Do Not Track
This guide explains
how websites and apps can comply with the Do-Not-Track settings(newer link: DNT Guide) of users and how to use the Consent API to let people opt-out of tracking. I would love to see every website that tracks something providing it. -
Facebook begins tracking non-users around the internet | The Verge
Facebook is already known for not respecting privacy. They now announced: “[…] we’re expanding Audience Network so publishers and developers can show better ads to everyone — including those who don’t use or aren’t connected to Facebook.” This basically means that they now track every user who gets in touch with some Facebook tracking technology (cookies, web storage, embedded fb-scripts, etc.) without asking. For Firefox, I added the Self-Destructing Cookies extension in addition to my Canvas Blocker and uBlock Origin to browse more safely. But remember that an open Facebook tab still might track you on other sites, so the browser’s private mode seems more appropriate.
-
Facebook’s new ads will track which stores you visit - Recode
Facebook wants to prove that its ads lead to actual purchases. That’s why Facebook advertisers can now add their physical store locations, and Facebook will then track users by their phone locations and report if they have visited the store. Of course, Facebook is not the first company doing that: Google folks are proud of having done the same already for quite some time. I’m glad I don’t have apps of these brands on my phone anymore.
-
Uh Oh: Google Expands Its Ad Tracking. But, Yay: It’s Opt-In | WIRED
Google adjusted their privacy settings once again. I’ll leave you with these useful links where you can adjust your privacy settings for Maps, All Account Activity, more activity controls, and finally Google Payment privacy settings which have opt-in for data sharing and analysis for advertising on by default. Note that Chrome has its own settings in the app as well. So far, privacy…
-
Battery Status readout as a privacy risk
The Battery Status API in general sounds like a great addition to our web platform. Initially built by Mozilla to complete the API-set on the web, we can use it on websites to reduce the amount of interactivity and animation or serve videos in low resolutions when the battery is nearly empty, for example. Lukasz Olejnik, however, found out that this API is actually already used as a user tracking identifier by ad networks and others. And last but not least, it can also be used to charge more for a service when a user’s battery is low—as reportedly done by Uber.
-
Deep-Fried Data
Maciej Ceglowski has given quite a lot of great talks already. At the Library of Congress he recently spoke about “deep-fried data,” and the transcript really is worth a read if you’re interested in machine learning, data gardening, archiving data and the responsible use of it.
-
Oversharing with the browser’s autofill
Stoyan Stefanov explains why using autocomplete fields in forms is great for some fields but can easily lead to data oversharing when used on fields that aren’t required.
-
Pi-Hole: A DNS-based blacklist for ads and tracking for Raspberry Pi
Mattias Geniar shares how you can easily block ads and trackers from your entire home network using Pi-Hole, a DNS-based blacklist for Raspberry Pi.
-
Setting up S/MIME on macOS Sierra & iOS — Anselm Hannemann
I set up S/MIME this week for my primary email address to be able to send and receive encrypted emails. I’m already using PGP, but S/MIME comes with better cross-platform support, and by offering both, I maximize the chance to communicate securely via email. I wrote up a little introduction on how to set up S/MIME on MacOS and iOS if you’d like to learn more about it.
-
Disqus lays off 11 as it plans a deeper focus on data | TechCrunch
A lot of us are using Disqus’ commenting system on their websites. It’s an easy way to add comments to your static website, but now Disqus announced that they need to lay off about 20% of their employees. But not only that, they will also change their strategy towards data collection and advertising. Specifically, they elaborate on displaying ads in comments, and there are speculations that they will try to sell (anonymized) user data to advertisers to help them tailor their ads more precisely to users. Maybe time to reconsider if you really want to use the service.
-
Web users’ metadata can be tracked by targeted ads, leaked draft EU law reveals | Ars Technica UK
According to a leaked draft, the new EPrivacy law of the European Union will allow companies to do behavioral advertising based on user metadata.
What happened in “Web Performance” in 2016? #
With more and more real-time communication, data to transfer and varying network conditions, we all want to make sure we can deliver the best performance to our users. Unfortunately, this is easier said than done in real projects, especially if you take all the circumstances and technological decisions into account.
In 2016, we learned that serving content via HTTPS is in fact not slower than via HTTP, and since effectively HTTP/2 is only available in browsers if you serve via HTTPS, it’s now advised to provide HTTPS by default for your sites.
One of the biggest threads for your website’s performance are third-party scripts. If they are loaded in a blocking manner, they can take down your entire website. This means, we want to load external resources always in an asynchronous way to avoid them being the bottleneck and you want to design for load failure. Especially since content blockers have are used by many people, you should always remind yourself that any tracker or third-party might never load in the user’s browser.
And while we talk a lot about performance optimization by shifting resources to a CDN, and similar micro-optimizations, we definitely needed the reminder by Jake Archibald about Caching best practices. He shared how to properly cache your resources and how this, combined with Service Workers, can be one of the biggest performance benefit you can do on a website.
Speaking of Service Workers, we sorted out that they’re mainly not for offline availability of a website but to provide a reliable performance of a web application regardless of the network state.
Finally, in times where building a project on Amazon Web Services is super easy, we got reminded about how to not waste hundreds of Dollars for unnecessary hosting but to build a high-performance application by having a solid and scaling technical concept. Even for quickly built MVPs this is very important.
-
10 pro tips for managing the performance of your third-party scripts | SOASTA
If you include a third-party script, you should always be aware of its consequences. As you don’t control the resource but often rely on it, you should spend some time thoroughly considering whether it’s worth implementing it, what happens if the script is not available on the remote server any longer and, more specifically, whether your application will still work in such case.. Tammy Everts shares a couple of tips to consider when you include a third party script. Lots of great advice regarding advertising scripts, their ROI, caching methods, and how to detect malicious changes in such scripts.
-
CPP: A Standardized Alternative to AMP - TimKadlec.com
Tim Kadlec and Yoav Weiss came up with a (web) standardized alternative to Google’s AMP project. They’ve started writing an early draft of a specification, but they also need your feedback on that. The goal behind it is to achieve the same that AMP wants to achieve but by using and keeping the openness of the web instead of inventing a different format. That is also the reason why it’s not called a “project” or “platform” but declared as “Content Performance Policy”, similar to a Content Security Policy that you can opt-in for as a creator.
-
Caching best practices
Jake Archibald elaborates on common caching mistakes and how to build a caching concept for your documents that works with the browser’s native cache and Service Workers. If you think
no-cacheormust-revalidatemeans the browser does not cache such resources, or if you ever wanted to understand caching properly, read his article. -
Bits Up!: Cache-Control: immutable
Do you remember when Facebook researched the efficiency of the browser’s cache? Patrick McManus now made a reference implementation in Firefox to improve the situation by adding a new directive in the
Cache-Control- header:immutable. It indicates that the response body will not change over time and is complementary to the lifetime cachability expressed bymax-age. Thus, the browser will assume that, if not expired, it’s unchanged and should not be revalidated. The goal is to land support in Firefox 49 and tests have shown that this will make a big difference. -
Service Workers and PWAs: It’s About Reliable Performance, Not “Offline” – Infrequently Noted
Alex Russell wrote up why Service Workers are about more than just an offline experience but also about providing reliable performance.
-
Designing for Performance by Lara Callender Hogan
Lara Callender Hogan now published her book “Designing for Performance” for free as an online HTML book. If you like it, consider purchasing it nevertheless to support the author.
-
How I built an app with 500,000 users in 5 days on a $100 server
Erik Duindam writes about how a good architecture can save you a lot of money when building a product. He shares how he built a Pokémon Go app with 500k users in just five days and reduced the costs of it to a $100/month server infrastructure, compared to many MVP products that burn money by choosing bad technical designs.
-
Google's QUIC protocol: moving the web from TCP to UDP
Mattias Geniar had a look at Google’s new QUIC protocol that uses UDP instead of TCP and manages to be more reliable and faster—an ideal candidate as a successor to the TCP protocol. While it’s still at an early stage, the IETF is considering to make it a standard, Google uses it for some of their services already, and several server and browser vendors have plans to implement it, too.
-
How To Use WebPageTest and its API | CSS-Tricks
Eduardo Bouças explains how to use the WebPageTest API to improve your quality assurance process.
-
How loading JavaScript can slow websites down (even if it’s asynchronous)
Alex Painter wrote about how loading JavaScript can slow down websites, even if it’s asynchronous.
-
You’re probably doing DNS wrong, like we were
Brian Armstrong from Canopy shares why you shouldn’t rely on default DNS settings, as the recent Dyn DNS outage has shown. He covers how to configure DNS the right way, why a longer TTL is important, and why having different nameservers from different providers can save your service’s uptime.
-
Web fonts, boy, I don't know – Monica Dinculescu
Monica Dinculescu just spent a week traveling Taiwan with a 2G roaming plan and now reminds us that we need to care more about proper lazy font loading if we use web fonts to not annoy our users.
-
Reorganizing Website Architecture for HTTP/2 and Beyond
Kazuho Oku’s slide deck about reorganizing website architecture for HTTP/2 shares real experiences of implementing HTTP/2 and valuable details on browser implementation.
-
Performance Calendar » Meet The Web, Worldwide
Tim Kadlec describes what a new project called “The Web, Worldwide” is about and why it’s important for developers and project owners to understand the role of the Internet in various markets. I wrote a similar post this week about choosing browser support in a project and why we’re often doing it wrong because we base our assumptions on misleading data.
-
GPU Animation: Doing It Right – Smashing Magazine
Sergey Chikuyonok dives deep into the technical details of browsers and hardware to explain how to get GPU animation right and why it makes a big difference if we render animations on the CPU or on the GPU.
-
Performance Calendar » Prefer DEFER Over ASYNC
Steve Souders explains why setting
asyncon a script can cause various issues and howdeferis different from that. His conclusion:defershould be your default choice overasync. -
Front-End Performance Checklist 2017 (PDF, Apple Pages) – Smashing Magazine
Vitaly Friedman put together a great Front-End Performance Checklist 2017 for your next projects, with PDF and Apple Pages files so you can tick it off point by point.
-
Performance Calendar » Cache Digests: Solving the Cache Invalidation Problem of HTTP/2 Server Push to Reduce Latency and Bandwidth
Sebastiaan Deckers on how to get the real performance benefit from HTTP/2 by solving the Cache Invalidation problem.
What happened in “HTML & SVG” in 2016? #
While HTML sound pretty boring in 2016 to most developers, I realized that there is quite a lot to learn still. And since we have SVG in this section covered as well, I promise you that you can learn a lot from the articles shared in that year.
First, before we use SVG-files on a web project, we should optimize it for web usage, similar to what we should do with JPEG/PNG files as well. Andreas Larsen wrote a 3-part series about how to create small SVG files and how to optimize assets.
If you display country flags, they’re most likely some gif or png files. Instead, you can include them as SVG now since there’s an open-source set of country-flags available. This does not only improve the page performance but is vector-based, so it provides high-resolution support and scaling.
With the Boxy Editor we now have an in-browser SVG graphics editor.
Switching back to HTML now, Jason Grigsby shares how you should mark up a form to support auto-filling the fields. Due to different browser implementations, it’s a bit more complicated than you might think but in the end, you can do very cool things like a “scan credit card”-feature on iOS, a generate password feature in Chrome and Safari and many more cool things that make filling out forms for the user a lot easier.
And while we talk about HTML, many developers tend to forget setting one of the most important attributes of a HTML-document: The lang-attribute. It’s usually set on the <html> element itself and indicated the document’s main language, so please don’t forget to set this in your projects.
There’s confusion about how to mark up buttons and links nowadays, especially if you control the action via JavaScript. Thankfully, Marcy Sutton wrote a definitive guide on what to use in modern web applications and websites.
Back to SVG, you might have already implemented icons or shapes for a website that should scale and then realized that the stroke-width scales as well. Nick Salloum has found a way to prevent this and while scaling an element, preserving the stroke-width via the vector-effect attribute and its non-scaling-stroke value.
-
Optimising SVGs for Web Use
Andreas Larsen shares step by step in a 2½-article series on how to optimise SVGs for the use on the web: The first steps, a deeper dive into SVG, and how to drastically optimize an existing logo.
-
SVG Country Flags | flag-icon-css
If you have to display country flags, you likely have some sort of picture-list for it. At least all the time this happened to me in the past, I was annoyed to not have an appropriate resource-set for it in times where we have SVG. Now, there is flag-icon-css, an MIT-licensed set of country-flags.
-
Boxy SVG Editor
You can build vector graphics in SVG format with the Boxy SVG editor, a Chrome application that is based on web technologies. A pretty cool alternative to the heavy-weighted Illustrator and Sketch applications which often create SVG code that not every browser understands.
-
» Autofill: What web devs should know, but don’t Cloud Four Blog
How convenient would it be if payment forms would just let you scan a credit card and fill out your invoice and delivery address? Despite most sites not using them, there are web standards that define exactly this behavior and many browsers actually support it already. For example, Safari lets you scan a credit card if you define the field properly. Jason Grigsby gives you a tutorial on how to properly format payment forms. Finally, we will get an entire Web Payment API that will offer developers a great way to build convenient checkout processes where the browser will autofill all information.
-
Safari Autofill: Trigger password suggestions in Devise registration form
Using account registration pages on a mobile phone is annoying, especially if you need to enter a password. But there’s a way to make this more convenient for your users: Safari provides an option to let users use the iCloud keychain to generate a password on demand.
-
Using the HTML lang attribute | The Paciello Group
Despite being a simple and old attribute, you can find a lot of websites doing it wrong: HTML’s
lang. Sometimes it’s not declared at all, and sometimes its value is"en"although the content is not in English. Learn how to use thelang-attribute properly and where you can apply it. -
SVG Vector Effects - Call Me Nick
Nick Salloum shares how you can scale SVG graphics without scaling their borders. This is very useful for outline icons which you want to homogeneously display in various sizes altogether. The effect is achieved through the widely unknown
vector-effectattribute, which for example can have thenon-scaling-strokevalue. -
Responsive Images 201: Client Hints - Cloud Four
Jason Grigsby explains how we can use Client Hints for responsive images. With Client Hints, the browser can tell a server via HTTP headers what types of content it prefers based on information about the device pixel ratio, viewport width, and width of the image element on the page. This allows the server to serve the most appropriate image back to the client.
-
Random Interesting Facts on HTML/SVG usage
These fun statistics on HTML and SVG usage are really insightful. By analyzing eight million websites, some interesting facts could be discovered:
href="javascript:void(0)", for example, is still used massively, andspan.buttoncan also be found in a lot of codebases.
What happened in “Accessibility” in 2016? #
As already written in the introductions, I have the feeling that 2016 was a big year for accessibility. The awareness has grown massively, the push towards accessible modules, widgets, solutions is definitely there. Google’s team put accessibility high on their priority list for their video tutorials, and we saw quite a couple of new helper tools and libraries that help you build an accessible web project.
We’ve seen people writing how to test for accessibility with a screenreader, we saw lists of tools and helpers, how to comply with WCAG2.0, and how to create better accessible content. Iconfont systems like Fontawesome have added new accesssibility guidelines to ensure that such icons are recognizable and make sense to people who cannot see them.
A lot of good primers have been written about why alt="" is perfectly valid and advised if you don’t want to give any context to an image, about patterns for accessible web chats and much more. And a couple of nice libraries have been published, such as a11y.js to help controlling the focus behavior in your application, and a11y-toggle or a11y-modal that gives you a simple but powerful accessible modal and toggle-widget on your website.
With Web Components and Custom Elements we not only got powerful tools to create our own elements but we also got the responsibility of taking care of all accessibility of the element ourselves. This is often neglected but so important that there are several articles on how to make custom elements accessible.
And finally, not only our HTML needs to be accessible but our SVGs as well. But fortunately, smart people like Heather Migliorisi write about such things as well. Last but not least, Microsoft presented that their Artificial Intelligence system called Caption Bot is able to analyze images and automatically provide useful captions for it.
-
Free web accessibility tools round-up
An overview of free tools you can use to make sure your website is accessible. A short introduction that helps you to test your application or site easily.
-
The accessibility stack: making a better layer cake » Simply Accessible
When we see our development stack as an accessibility stack and follow some basic principles, we can easily build an accessible web solution that integrates all kind of users, no matter how they consume the content on the website.
-
Basic screen reader commands for accessibility testing | The Paciello Group
Léonie Watson collected the basic commands on how to use and control the most common screen readers (including the OS X built-in Voice Over) so that everyone can test websites for accessibility compatibility.
-
Short note on use of alt=”” and the title attribute | The Paciello Group – Your Accessibility Partner (WCAG 2.0/508 audits, VPAT, usability and accessible user experience)
Sometimes you have an image that is only presentational but included with an
<img>element. In such cases, instead of not providing analt-attribute at all (which causes screenreaders to assume an alternative text from the file name), you can add an emptyalt=""attribute and screen readers will omit the element. -
ally.js 1.1
Rodney Rehm published the first big update to his amazing accessibility library ally.js. Version 1.1 has completely rewritten tests, supports way more browsers, and is even more reliable to handle focus states on your web application. And finally, you can also learn a lot about how to maintain an open-source project — just look at the incredibly detailed release notes or at the test suite that’s behind it.
-
How to Meet WCAG 2.0
The W3C published a new document summarizing what is needed to meet WCAG 2.0 requirements withing your website or application.
-
How to Create More Accessible Content, Part 2: Media | Viget
How do you implement media to be accessible for a variety of users? Tricks for writing better alternative texts, or when to provide an empty
alt=""attribute, how to add video captions, or create transcripts are shared by Megan Zlock. -
CaptionBot - For pictures worth the thousand words
Microsoft has released CaptionBot at their Build conference. The tool analyzes images for their content and suggests a description of what is seen on the photo. It’s actually quite impressive how good the results work and how this could improve accessibility and help automate processes to provide alternative texts for images.
-
Font Awesome
Fontawesome shares their new accessibility guidelines for the usage of icon fonts. A great resource you should read if you use fonts to serve icons on your website.
-
Custom Control Accessible Development Checklist
If you’re building custom controls in HTML and JavaScript, like a custom select / typeahead-field or similar components, you should at least bear in mind this helpful W3C checklist on how to make custom controls usable and accessible. This one is not about the usual accessibility for screenreaders, but for things like keyboard and touch operability, contrast and a clear focus indication state.
-
WCAG 2.0 checklist - a free and simple guide to WCAG 2.0
Luke McGrath now provides a free and pretty complete, understandable checklist for WCAG 2.0. Use it for your upcoming projects and even to recognize what could be improved in future.
-
Designing A Dementia-Friendly Website – Smashing Magazine
When we talk about accessibility we usually think of users with well-known disabilities and diseases. However, there’s much more than we usually think about it and this article covers how to design a dementia-friendly website, a topic I hadn’t given any thought on before.
-
How to Make Accessible Web Components — a Brief Guide
Web Components received a lot of negative feedback in the past. One major point is that developers need to implement accessibility features completely on their own. Now Artem Tabalin shares how to make accessible web components using a multi-select field as example.
-
Frend — A collection of accessible, modern front-end components.
Frend is a modest and dependency-free collection of accessible, modern front-end components. They are built with web standards as a priority and aim to avoid assumptions about tooling or environment.
-
Web Accessibility | Udacity
Google released a free web accessibility course on udacity.
-
Accessible SVGs | CSS-Tricks
Heather Migliorisi wrote a huge compendium about creating accessible SVGs that you should definitely read if you use SVG files in your projects (and who doesn't it?).
-
Accessible UI Components For The Web — Addy Osmani
Addy Osmani explains how to build accessible UI components for the web, taking into consideration visual, hearing, mobility and cognition as accessibility factors. A pretty great entry-level guide to better, accessible products.
-
A (not so) short note on ARIA to the rescue | The Paciello Group
Steve Faulkner points out the importance of not overusing ARIA when native elements are available for the same purpose.
-
Dynamic links and focus
Jordan Scales shares how to build dynamic links while maintaining the focus state.
-
aria-selected – when (not) to use it
Stefan Judis explains when to use and when not to use
aria-selected. . Applying it to the current active navigation item, for example, isn’t correct, but applying it to the current active tab in atablist, on the other hand, would be. -
Accessibility Testing with Intern | Blog | SitePen
Covering unit tests and functional tests, The Intern is a nice testing tool for JavaScript. But you can also use The Intern for accessibility testing, as Jason Cheatham explains in a recent article.
-
Patterns for accessible webchats | Accessibility
Chats are much more common these days, but how many of the web-chats out there are accessible? Theodor Vararu shares the patterns for accessible web chats.
What happened in “JavaScript” in 2016? #
Let’s start this with a basic thing, that we’ve neglected over the last years. While in the earlier years of web development we always included <noscript> elements for all our content where we used JavaScript but knew not every client has JavaScript enabled, it’s rarely seen nowadays. But especially since we now have entire applications based on JavaScript that fail to display anything when JavaScript is disabled for whatever reason, it’s important to be reminded about this useful fallback element again.
Going a bit deeper into the scripting now, ECMAScript has evolved a lot again. We’re still all struggling to understand the whole variety of new features that have been added in ES6 and many people wrote very useful guidelines, tutorials, screencasts about it so that you understand it better.
Todd Motto has wrapped up JavaScript’s powerful scoping feature again, and classic performance improvement techniques like debouncing and throttling for event listenters are still a topic if you look into most websites and realize that most don’t use it.
Promises are a great way to replace the ugly Callback hell, but as powerful and neat as they are, they can be quite tricky and confusing as well. To avoid this confusion, we now have plenty of articles, tutorials, wizards and tools to check JavaScript promises.
Besides language-specific news, we also got a couple of great new scripts in 2016: An leight-weight, accessible video player that also works with YouTube and Vimeo, a script that reduces the CPU usage in JavaScript and more.
We learned how to use Service Workers, how to build efficient infinite scrollers, how to use web notifications and how to improve the performance of onscroll event listeners.
And in late 2016, the WebShare API has been introduced which hopefully will reduce the amount of JavaScript third-party widgets on websites.
-
Reimagining Single-Page Applications With Progressive Enhancement – Smashing Magazine
Reimagining Single-Page Applications With Progressive Enhancement provides you with view on how to write web applications in a better way. And Addy Osmani gives you some interesting ideas on how to progressively enhance web apps these days.
-
Don’t forget the noscript element
It’s easy to forget about when you build JavaScript applications, but you should always remember to provide meaningful fallback content via the
<noscript>element. It also targets people disabling scripts in their browsers or using content blockers. -
Const & Immutable Objects
Ada Rose Edwards shares how she writes modern ES6 JavaScript code and why she follows the approach to “use
constby default,letonly where it is required andvarto identify code which needs to be refactored”. -
How to learn ES6
This short guidance article gives you some of the best resources on how to learn ES6.
-
Neat trick for CSS object-fit fallback on Edge (and other browsers)
This neat trick for CSS object-fit fallback on Edge (and other browsers) by Primož Cigler explains how you can build an easy, basic fallback for IE11 and MS Edge for
object-fit. Actually, as my own polyfill for this is non-functional in Edge, this is a great way to add support for it. And if you really love the property, let Microsoft know with your vote. -
Everything you wanted to know about JavaScript scope @toddmotto
It’s not a new resource but worth reading if you haven’t yet fully understood how the JavaScript scope works: Everything you wanted to know about JavaScript scope by Todd Motto.
-
Progressive enhancement and JavaScript failure · molily
Mathias Schäfer summarized how important progressive enhancement is for JavaScript applications. To back it up, he analyzes a recent issue on twitter.com that prevented people from tweeting because a JavaScript regex failed and no fallback was available.
-
Debouncing and Throttling Explained Through Examples | CSS-Tricks
Seeing so much code that does not use
debouncingorthrottlingfor scroll, resize or typing events, I can only recommend this article for everyone not yet using it. The article visually explains the differences between a normal event listener, debouncing and throttling and shows example code for most common use cases. -
NodeList object is finally an Iterable
In the upcoming version of Chrome, the
NodeListobject will finally be an iterable. This is great because finally, we’ll be able to useconst elements = document.querySelectorAll('a'); elements.forEach(a => console.log(a.getAttribute('href')))to get a list of allhref-attributes instead of an error. And as it’s defined as an iterable in the spec, too, we can hope for wide-spread browser support in the future. -
Tracking unhandled rejected Promises
In promise-based asynchronous code, rejections are used for error handling. One risk is that rejections may get lost, leading to silent failures.
-
Plyr - A simple HTML5 media player
There are a couple of JavaScript video players out there already. But Plyr is a simple, lightweight and accessible media player that you can use for most projects to embed YouTube, Vimeo or self-hosted videos.
-
Resize Observer
A great step towards Element Queries and better control over modules in our front-ends is coming to browsers now with the new Resize Observer API that observes changes to an element’s size. This, together with the Houdini project, could serve well for a custom Element Query polyfill. No browser supports this yet, but all vendors consider it and see it as a useful addition.
-
chillout.js — Reduce CPU usage in JavaScript
Chillout.js reduces the CPU usage in JavaScript by providing asynchronous iteration functions that have a Promise-based interface. No more “Warning: Unresponsive Script” alerts in the browser.
-
jQuery 3.0 release
jQuery 3.0 is finally out. In the works since 2014 already, this is a huge step as it offers a slimmer, faster, and more modern approach than v1 and v2. There’s an extensive upgrade guide available as well as a new version of the jQuery migrate plugin.
-
Apple Pay JS - Apple Developer Documentation
You can now start implementing Apple Pay into your website by using the company’s ApplePay JavaScript framework, as announced during this year’s WWDC event. It’s interesting that Google and Apple both heavily work on getting their payment systems directly into the browser. Unfortunately, but also usual for Apple, they don’t follow a web standard such as the Web Payment API here but provide only their own ecosystem.
-
Things to Know (and Potential Dangers) with Third-Party Scripts | CSS-Tricks
We have a complex relationship with third-party scripts, mainly because we neglect that these resources can have downtime, can be altered silently or blocked in the client by the user. Yaphi Berhanu shares what you need to know about third-party scripts and the potential dangers that come with them.
-
Awesome Service Workers
I already shared a couple of Service Worker resources but which one to choose when you want to use it? Likely the best option is to search for the suitable use-case in the Awesome Service Workers list.
-
Complexities of an infinite scroller | Web Updates - Google Developers
A lot of projects nowadays have an infinite scrolling implemented. But most of these implementations lack certain details such as DOM recycling or scroll anchoring. The tutorial “Complexities of an infinite scroller” shows you how to build this with solid code.
-
Learning How to Set Up Automated, Cross-browser JavaScript Unit Testing — Philip Walton
Philip Walton shares his approach of setting up automated, cross-browser JavaScript unit testing with Saucelab.
-
Web Notifications Series — The Guardian Mobile Innovation Lab
In a multi-part story about Web Notifications, developers from The Guardian Mobile Innovation Lab share their experience and findings of implementing notifications into their news site. For each individual step, they explain what you need to do, can do and what can still be improved.
-
Passive Event Listeners are only needed for touch/pointer events
Paul Irish left a note this week on Passive Event Listeners. Apparently, they’re only needed for touch and pointer-events and have no advantage when used in other cases.
-
Of Course I’ll Let You Execute Arbitrary Javascript Code in My Users’ Browsers
“Add this JS-snippet to the project.”—a common request that developers hear quite often. Kevin J. Dolan shares his eye-opening experience with a QA-person on why it’s a very, very bad idea to follow such requests blindly and explains why you shouldn’t include external third-party JavaScript references without extensive reviews.
-
Understanding native JavaScript array methods – Ben Frain
Ben Frain explains the native JavaScript array methods and how they differ from each other. A great introduction (or reminder) of what we can use today to get data out of arrays.
-
Shadow DOM v1: self-contained web components | Web Fundamentals - Google Developers
Eric Bidelman explains the new Shadow DOM v1 standard, the now de-facto standard for building self-contained web components.
-
Passport.js – Simple, unobtrusive authentication for Node.js
Passport.js is an authentication middleware for Node.js, supporting authentication via username and password, Facebook, Twitter, and many more.
-
André Staltz - Is your JavaScript function actually pure?
André Staltz explains the importance of pure functions in JavaScript.
-
Hyperform - Capture form validation back from the browser
Hyperform is a complete implementation of the the HTML5 form validation API in JavaScript. It replaces or polyfills the browser’s native methods and eases your validation task with custom events and hooks.
-
Lazy Loading Images? Don’t Rely On JavaScript! — Robin Osborne
Lazy loading images is a great way to save your users data. However, on bad network connections, JavaScript can easily break, and, thus, users often won’t be able to see the images at all. To tackle the issue, Robin Osborne shares an approach in which he first goes through the obvious JavaScript-enabled, then JavaScript-disabled scenarios, and concludes with a clever solution to solve broken JavaScript for image lazy loading.
-
One weird devtool trick this developer uses. {$experts} hate him!
Remy Sharp shares a great developer tools trick for working with elements on a page to work with elements on a page: Select an element with
$('element')as in jQuery, and get a real array of elements with$$('div'). -
Stateful and stateless components, the missing manual @toddmotto
Todd Motto wrote the missing manual on stateful and stateless components. This is a pretty good round-up for everyone writing JavaScript today.
-
50K Array, HTML5 Web Worker Demo
Afshin Mehrabani illustrates the impact of Web Workers when sorting a 50K array with JavaScript on the main thread or in a background task. Great to see why we should consider using asynchronous worker tasks for complex and non-time-critical operations.
-
bitsofcode | for..in versus for..of Loops
When should we use
for … inand when should we usefor … ofloops? Ire Aderinokun explains the differences and advantages of these basic JavaScript loops in detail. -
Enhancing a comment form: From basic to custom error message to BackgroundSync | justmarkup
Michael Scharnagl explains how you can enhance a basic form ((i.e. a login or comment form) with custom validation, AJAX requests, auto-expansion of a textarea, and, finally, Service Worker and BackgroundSync to store input when a connection is unstable.
-
Service Worker, what are you? — Mariko Kosaka
Is Service Worker an alien to you? Mariko Kosaka gives a better understanding of why it’s hard to grasp what we can do with Service Workers. A refreshing explanation that is quite different from what we usually read in Service Worker tutorials.
-
Performant Parallaxing | Web | Google Developers
The parallax effect isn’t going away anytime soon, so if we need to make use of it, we should at least do it in the most effective, most performant way. Paul Lewis shares how to achieve that.
-
Emoji.prototype.length — a tale of characters in Unicode - Contentful
[...'👨👩👦'] // ["👨", "", "👩", "", "👦"]or‘👨👩👦’.length // 8— do you wonder why that works? Stefan Judis found out and shares the technical details on why the Emoji family works so well with JavaScript operations and how you even can dynamically generate the skin color of an emoji with color codes and the unicode. -
format-num.js…or ES6!
If you need to deal with different currency formats, it’s likely that some third-party library is in place. A powerful tool that can handle most conversions really well is
toLocaleString.
What happened in “CSS” in 2016? #
-
StickyState
StickyState is a high performance module making native
position: stickystateful and polyfilling the missing sticky browser feature. -
A Complete Guide to Grid | CSS-Tricks
So, one of the best resources to refer to when looking up some Flexbox property, is the “Complete Guide to Flexbox” on CSS-Tricks. Now the same concept has been transfered to CSS Grids, making the “Complete Guide to CSS Grid” the resource to remember for the future when this technology is ready to be widely used.
-
CSS containment | justmarkup
Have you ever heard about the CSS
containproperty? I didn't. Well, until I read the article by Michael Scharnagl, explaining that this little property will be soon helping us to solve a lot of use-cases for container queries. The property will allow authors to indicate that an element and its contents are, as much as possible, independent of the rest of the document tree. -
HOW TO: Pure CSS masonry layouts
Using multi column properties and Flexbox together lets you achieve a so called ‘Masonry’ layout with only CSS.
-
Stylelint | CSS-Tricks
Do you use scss-lint? It’s a nice tool to ensure Scss coding conventions. One drawback of it though always was that it’s Ruby-based and has not very much granular options. But stylelint, a Node.js based alternative to it is much more powerful, giving you full, fast linting capacity for your CSS, Scss or Less code. And with stylefmt you can even auto-format code based on your rules.
-
You might not need a CSS framework ★ Mozilla Hacks – the Web developer blog
A lot of developers think about this differently, but a lot of others use frameworks for every project, even if it’s not the best decision to make. Read on why you might not need a CSS framework, about drawbacks and alternatives to the framework approach that won’t sacrifice efficiency when developing a project.
-
Truly Fluid Typography With vh And vw Units – Smashing Magazine
Michael Riethmuller shares how you can achieve responsive typography in your layouts with
vh/vwunits and thecalc()function. -
CSS Will Change Module Level 1
The
will-changeproperty is still widely unknown and people don’t know exactly when and how to use it properly. Fortunately, the W3C took the effort to write up how to usewill-changewell. -
Form Validation Techniques
Client-side form validation is hard, we all know that. But thanks to the browsers’ internal validation API, we can display very clever messages telling the user what went wrong. This article shows how to do that effectively and even offers a boilerplate.
-
Form Validation UX in HTML and CSS | CSS-Tricks
Often we don’t use the full potential of CSS for form validation UX. Chris Coyier shares some CSS trickery to get it right.
-
Adactio: Journal — Sticky headers
Sticky headers are a common technique to use these days. But there are a few catches that most developers ignore. Jeremy Keith managed to implement sticky headers the right way and explains how you can do, too.
-
Another use for the `ch` unit: year fields
Another use for the
chunit: year fields: no more guessing at widths.width: 4ch;theoretically allows for four numbers to be entered. -
Sara Soueidan on Twitter: "I’ve gotten some constructive, highly appreciated a11y feedback from my blog readers about using vw for font sizes. Basically, don’t.
If you’re using
vwor other viewport units for element sizing, always bear in mind that viewport-unit sized elements are not user-zoomable. You can try on your own with this demo. An alternative could be to usecalc(1em + 0.25vw)or similar calculations that don’t entirely depend on viewport units and therefore are scalable. -
How do create full width containers in limited width parents
Chris Coyier wrote up solutions to create full-width child containers oof a limited-width parent, including Sven Wolfermann’s simple and clever approach.
-
CSS only scroll indicator
For long articles, a scroll indicator can be very useful to indicate the reading progress. Most people use some sort of JavaScript code to do this (which is calculation-expensive); some people, however, find clever tricks to do it with CSS. The CSS-only scroll indicator by Mike Riethmuller is an awesome show-off of using gradients, viewport units and a pseudo-element.
-
Building Themes with CSS4 Color Features - Cloud Four
Erik Jung explores new ways to add dynamic themes in CSS with CSS variables and CSS Colors Level 4 features like the new
color()function. -
Fukol Flexbox Grid
Heydon Pickering wrote the probably shortest and smallest CSS grid framework possible: Fukol, a Flexbox grid that weighs in at only 93 bytes.
-
Continue Normalising Your CSS – CSS Wizardry
In the past months I’ve heard a lot of people question the need for normalize.css. But the truth is that normalize.css wasn’t only created to fix browser bugs but also to provide us developers with solid baseline styles. As Harry Roberts now points out, the latest normalize.css with 984 bytes after gzip doesn’t even add much to your existing codebase — in fact, it makes less than 1.3% of the average CSS project.
-
I totally forgot about print style sheets — Manuel Matuzovic
Manuel Matuzovic confesses that he totally forgot about CSS print styles and how easy it actually is to provide a basic printing experience for users. Manuel only realized this when he saw Aaron Gustafson complaining about Indiegogo’s completely messed up print layout if you want to print your order receipt (it’s basically not printable).
-
CSS Inheritance, The Cascade And Global Scope: Your New Old Worst Best Friends
Heydon Pickering wrote about “CSS Inheritance, The Cascade And Global Scope: Your New Old Worst Best Friends.”
-
CSS Reference - A free visual guide to the most popular CSS properties.
cssreference.io is a new place to play around with and learn about CSS properties. It explains what the properties do and shows in demos how they affect a layout.
-
CSS Shorthand Syntax Considered an Anti-Pattern – CSS Wizardry – CSS, OOCSS, front-end architecture, performance and more, by Harry Roberts
Harry Roberts shares why you shouldn’t write
background: black;but be explicit withbackground-color: black;. The shorthand syntax often unsets other properties that we never intended to modify and, thus, can cause unwanted side-effects.
What happened in “Work & Life” in 2016? #
Work and Life. Two words, so much interpretation, so much different opinions behind it. But what we can see is that remote teams are growing, that remote work is more popular than ever before, and with that, problems arise and solutions are found. I’m pretty happy that I can be part of this phase that revolutionizes the way we work.
And while it’s important to be productive at work, we’re slowly figuring out that this cannot be achieved by working more hours but by working less and more focused. By having stronger workflows, by reducing stress, by making work enjoyable and by embracing people’s lives. This means we need to take care of ourselves, of our team mates.
-
Dann Petty on living an inspiring life – Crew blog
Dann Petty, designer and founder of the Epicurrence conference, gives us some life guidance on how to stay creative, productive and to reflect on what really matters in your life.
-
Communal Momentum and Accountability - Ian Feather
“Why can I hit deadlines imposed by others, but not those imposed by myself?” — Ian Feather raises this question and tries to find an answer and an approach on how to fix this human behavior.
-
10 Rules of Running a Remote Team
To run a remote team, you need to set some rules to work together and have the team stick to them. Wiktor Schmidt shares the rules he created for Netguru, where they work remotely in a lot of places around the world.
-
Too Busy to Pay Attention to Life
Sometimes we’re too busy to pay attention to life. We tend to focus rather on looking at photos instead of on the moments themselves. We tend to call or instant message with people instead of meeting them at a place. And instead of paying attention to our surroundings and the people near us in the streets, we’re focusing on our phones.
-
Being A Developer After 40
Being a young developer is easy. One learns fast, new technology is exciting, and every type of work is accomplished easily. But if you’re getting older, things change. You might have a family, not enough time for learning, or just have realized that you value your spare time more if you’re not programming. Adrian Kosmaczewski shares his experience with being a developer after 40 and why learning the basics of a programming language is more important than focusing on frameworks and specific libraries.
-
Run Meetings That Are Fair to Introverts, Women, and Remote Workers
Running good, meaningful, and effective meetings is one of the toughest things at work. And it’s actually a challenge to run them being fair to introverts, women, remote workers. But there are a couple of tricks to solve these issues.
-
Remarks at the SASE Panel On The Moral Economy of Tech
Maciej Cegłowski’s gave a talk on ‘On The Moral Economy of Tech’ that is full of ideas and thoughts to reflect upon. I’ll quote him here with his most important statement about how we see our jobs — something we should bear in mind:
“Hop on BART after the conference and take a look at Oakland, or take a stroll through downtown San Francisco and try to persuade yourself you’re in the heart of a boom that has lasted for forty years. You’ll see a residential theme park for tech workers, surrounded by areas of poverty and misery that have seen no benefit and ample harm from our presence. We pretend that by maximizing our convenience and productivity, we're hastening the day when we finally make life better for all those other people.”
-
Change Your Location. Change Your Life. — Taylor Pearson
“When you change your location, it’s a lot easier to wash away a lot of bad habits. That’s not to say if you move somewhere, you’ll become a different person, but you have a greater opportunity to make dramatic changes in your identity. […] This process, done over and over, makes you a more robust person. You not only become more adaptable, you gain increasing confidence and self-assurance that who you are is congruent with who you want to be.”—Taylor Pearson in “Change your location, change your life”.
-
Why can’t designers solve more meaningful problems? — Andy Budd
Andy Budd analyzes the problem of the always recurring question on “Why can’t designers solve more meaningful problems?”. An essay on how to find the right work for yourself, and why it’s sometimes challenging to acknowledge that their vision differs from the type of job they want to work in. Andy concludes that we need to create an alternative success narrative to what we have now.
-
Always Improve, Never Stop, Never Pause, Never Appreciate
“Always improve, never stop, never pause, never appreciate” is something that developers, company leaders, and managers can easily apply to their work. Mathias Meyer points out the importance of properly appreciating work that has been done.
-
What Happened When I Gave Up Multitasking For A Week | Fast Company
We have some evidence already that multitasking isn’t beneficial for productivity. Lydia Dishman now wrote up what changed when she moved to monotasking for a week. The reason why I found this article particularly interesting, is realizing how much multitasking we do during a normal day without taking note of it.
-
How Exhaustion Became a Status Symbol | New Republic
Hannah Rosefield puts exhaustion, the ‘status symbol’ of today, into perspective.
-
Recalibrate Your Productivity Sensors - Tom Bartel
Tom Bartel shares some great thoughts on re-calibrating your productivity sensors as a developer. Reframe your work, whether it’s managing people, talking to others, or actual coding work whenever you think you’re not productive. Most of the time it’s simply untrue.
-
Why should employers care about families? | Rose Marcario | LinkedIn
Rose Marcario, CEO of Patagonia, has published an essay on why it’s important that employers support families. It’s not just about saying this but about taking meaningful, real action to make employees feel comfortable, have a good life, and enjoy working for their employer.
-
The Love of a Long Walk : zen habits
Sometimes, a long walk outside can refresh your mind. It can give you new inspiration and help you calm down if you’re feeling upset.
-
Why Aren’t You Asking Questions? · An A List Apart Article
When dealing with clients, it’s important to ask the right questions. It’s your job to find out what the end user needs and to guide the client to what they want.
-
Enough Vacation — An Individual Goal – Anselm Hannemann, Freelance Front-End Developer
I wrote a medium-length piece on how important it is to take proper vacation time regularly to relax your body and mind.
-
Pressure
Bastian Allgeier shares his thoughts on why you should choose tools that fit best into a project and that you feel confident working with instead of considering frameworks and tools just because they’re cool.
-
Why's that company so big? I could do that in a weekend
“Why’s that company so big? I could do that in a weekend” is something we tend to say easily when we look at a company’s product and its team. But Dan Luu shares why we think that way and why we’re wrong and should avoid doing this.
-
Show Up: Mind The Work — Mercedes De Luca
“Mind The Work” is a great piece by Mercedes De Luca about how we tend to judge colleagues based on false assumptions and why and how we should seek to better understand them and their actions.
-
Top developers can have a life outside coding
As developers, do we really need to code all day? Is it necessary to have side projects and participate in open-source? Belén Albeza doesn’t think so. He shares why having a life away from coding matters and why you can be a passionate developer nonetheless. It’s important to have a balance between your computer time and other life activities (to help gathering data on this matter, please fill out this survey please) , and that’s also the message we have to send across to new developers. You can do great coding in a normal workday.
-
Vision vs. Leverage | Clearleft
Tea Ivanova wrote about the common misunderstanding that agile work methods are seen as operational and tactical rather than strategic. A good read for anyone working with agile methods.
-
On Deep Breaks - Study Hacks - Cal Newport
Cal Newport shares his thoughts on how deep breaks during work can help your mind recharge and, thus, improve your productivity.
-
Doing what you think is right for you
Tobias Tom wrote about doing what you think is right for you and why it matters to slowly change your habits and take small steps to reach your goals instead of seeing only black and white.
-
Giving Feedback Without Much Context — Tom Bartel
Tom Bartel shares tips for giving feedback without much context in development teams and how you can express concerns without making accusations.
-
The Paradox of Life Balance | Thought Expansion Network
Jonathan MacDonald’s article “The Paradox of Life Balance” targets a social problem we all face: While our connected devices offer great things, they also make us neglect real life and social communication. A great piece on why innovation is important and why it’s equally important to balance our activity and prioritize the non-digital reality.
-
Let Us Now Praise Ordinary People – Mike Monteiro – btconfBER2016 on Vimeo
Mike Monteiro gave an impactful talk at this year’s Beyond Tellerrand conference in Berlin. “Let Us Now Praise Ordinary People” opens our eyes to how we can change the world and why we need to get over-hyped startups that only claim to change something to actually do meaningful work. If I can make you watch one thing this week, take 45 minutes, sit back and listen to Mike Monteiro.
-
selfcare.tech - developer resources for self-care
selfcare.tech wants to help developers take better care of their health. It shows some great methods for solving common problems every one of us will face at some point.
-
totes profesh: it's ada lovelace day: wish you would step back from that ledge my friend
Garann Means quit the web industry about two years ago. Now she shares what that really meant to her, why she did it, and why it’s important that we think very carefully about it before we take this step for real. It’s easy to joke about leaving the industry, but the consequences are real and might differ a lot from what we expect.
-
You Are Not Paid to Write Code – Brave New Geek
“You Are Not Paid to Write Code.” Tyler Treat wrote about our job as developers and why we introduce the possibility of failure into a system every time we write code or introduce third-party services. Our job is to find solutions that (if possible) don’t require a new system and to keep out everything else from a codebase unless it’s really necessary.
-
From Deep Tallies to Deep Schedules: A Recent Change To My Deep Work Habits - Study Hacks - Cal Newport
Cal Newport wrote about the concept of Deep Work and why it’s probably more efficient if you schedule your deep work in advance rather than just logging it on-the-go.
-
Work ethic — Jason Fried
Working long hours doesn’t mean someone has a good “work ethic”. Instead, it just means working too much. Jason Fried on what “work ethic” really is about.
-
Forget About Setting Goals. Focus on This Instead. | James Clear
New year’s resolutions — you know it, they’re hard to reach. James Clear on why it’s easier to use recurring systems instead of setting goals.
-
No, I have no side code projects to show you | Ezekiel Buchheit | LinkedIn
Ezekiel Buchheit’s “No, I have no side code projects to show you” is a great read for everyone interviewing folks for a job position.
What happened in “Go beyond…” in 2016? #
You probably already know that this section contains topics beyond web development. 2016 brought us mixed feeling in all the various topics, so let’s summarize it a bit here.
Great news cam from China at the beginning of the year: They announced to stop approving new coal mining licenses, which is a great thing for the climate and fresh air in Asia.
Not so great news are fake news, of which we saw way more this year and unfortunately, more and more people aren’t able to determine if news are fake or real. Also, the news business still relies on the concept of “fear sells” and brought us so many bad news that a lot of people got depressed and sad. A study revealed that when we read/watch too much bad news, our brain is directly affected and we not only get depressive but less productive and sad. So keep in mind to always have a balance of news, appreciate the good ones and don’t get afraid of other people and the world because of bad news. Because if we look at the world and human population overall, we can see that the world in fact is becoming a better place. It’s just that this is a slow process and often overseen.
Researchers found out how to produce improved solar panels that are incredibly thin, or can look like a real terracotta roof (Tesla), or ones that can store water. We see that cars get safer with technology that helps to prevent car crashes and we can now already buy the first Artificial Intelligence consumer products.
-
China to Halt New Coal Mine Approvals Amid Pollution Fight - Bloomberg Business
This year, China for the first time ever suspends approvals for new coal mines to fight against air pollution and save our planet’s climate. That’s a big step forward and I’d love to see other countries doing the same.
-
California’s massive methane leak | Environmental Defense Fund
In California, a massive methane leak is happening since October and it’s as bad as the BP oil spill a few years ago. In fact, the daily leakage has the same 20-year climate impact as driving 7 million cars a day. And it’s yet to see if the leak can be fixed by March, 2016. Gosh, this is bad and I still can’t believe it’s so less covered in the media.
-
26 charts and maps that show the world is getting much, much better - Vox
These times we’re used to bad news. In fact, that’s the reason I gave up reading newspapers and general social media streams. But it’s not that things are getting so much worse, the problem is no one looks at the bigger numbers. Actually, the world is getting a better place — it just happens much slower than we’re used to in times of real-time media. We should acknowledge the good news more again this year. And to back this up, I recommend you to watch this short video.
-
From the gutter: How your litter ends up in the ocean - LA Times
I have written about plastic trash in our oceans over and over again here. I don’t know about you but I, even though informed about the issue, could not imagine how my trash ends up polluting the oceans even though I don’t live anywhere by the sea. The LA Times now shares an example of how this happens.
-
A Roadmap to Overcoming Insecurities
There isn’t a person amongst us who doesn’t have insecurities—some are just better at dealing with them, or perhaps hiding them. But if you make yourself aware of the obstacles, you can get onto the road to overcoming the feeling of insecurity.
-
Project Include
True diversity is inclusive, comprehensive, and measurable. Project Include is an open community working toward providing meaningful diversity and inclusion solutions for tech companies. The initiative wants to provide collected perspectives, recommendations, materials, and tools to help CEOs and their teams build meaningful inclusion.
-
We've forgotten how to take blame for our actions - Independent.ie
“Everything from fatness to school marks and career advancement must always be someone else’s fault. In fact, the concept of an accident is disappearing from our collective consciousness. If you fall over on a street made slippery by dead leaves, then someone should have swept them away. If you fall off a cliff, someone should have warned you by putting up a notice warning that it is too far to jump.” We’ve forgotten how to take blame for our own actions.
-
If You Want to be Understood - Listen - Tom Bartel
“If you want to be understood—listen.” Tom Bartel shares why it’s so important to listen to other people in order to be understood.
-
Panama Papers: John Doe's Manifesto
John Doe is the “name” of the source for the Panama Papers that reveal deceptive tax saving strategies. The source now shared the reasons for leaking the data: wide-spread income inequality which is supported by massive and pervasive corruption. This is a primer on ethics, corruption and being a whistleblower. There’s also an organization working for more transparency and against corruption since years now and you can support them.
-
Tech Companies Design Your Life, Here’s Why You Should Care | Tristan Harris
There’s evidence that new types of media consumption shape our society, yet we don’t see how it happens, because we tend to forget thinking about it. Currently, if at any moment reality gets dull or boring, our phones offer something more enjoyable, more productive, and even more educational than whatever reality gives us. But it also changes us on the inside. We grow less and less patient for reality as it is, especially when it’s boring or uncomfortable. What’s at stake is our Agency. Our ability to live the lives we want to live, choose the way we want to choose, and relate to others the way we want to relate to them – through technology. This is a design problem, not just a personal responsibility problem.
-
The self-fulfilling prophesy - SCHIRN MAG
“There are many reasons why we give away our identities so easily. As far as searching is concerned, we are not used to see ourselves as clusters of missing information. And so we struggle to realise that we may easily be defined negatively, by all our wants. […] Our digital technologies are designed to make us feel relaxed about our lack of privacy.”—Luciano Floridi in his essay about “ME: The Limitless Self”.
-
Google Public Policy Blog: The Trans-Pacific Partnership: A Step Forward for the Internet
It’s not surprising that big data companies like Google are no opponents of CETA or TPP/TTIP. What’s more surprising is that Google now takes a firm stand on supporting TPP. With bloodcurdling logic they argument why it would be a step forward for the internet: “But Internet restrictions — like censorship, site-blocking, and forced local storage of data — threaten the Internet’s open architecture.” None of these issues would disappear with TPP except for local storage (which is a feature that the EU finally enforced last year in its fight to protect users’ privacy). TPP instead enforces copyright protections, can do nothing to prevent non-TPP-partners from blocking parts of the internet, and actually does a lot of harm to existing privacy, to existing laws and to countries’ courts as it gives companies the possibility to bring matters to arbitral courts — a fact that helps corrupt, capitalistic companies gain more power while normal citizens are at a disadvantage. You can see how much influence private companies already have on politicians in the excellent Netflix series “House of Cards”.
-
.generation on Vimeo
.generation is a short fictitious film about the Millenials generation in 2054 sharing their loss of all digital records and how they deal with losing their memories. It’s fictitious, but it reminded me to print some of my photos as a physical good from time to time.
-
A Mindful Shift of Focus : zen habits
“I don’t have the answers, and my heart goes out to all who are grieving, afraid, hurt, feeling helpless, fed up, frustrated or angry. My only hope is that in the middle of all this sorrow, we can appreciate the gift of life that we’ve been given, and find love for our fellow human beings despite all their flaws and messiness.”—Leo Babauta in A Mindful Shift of Focus
-
Solar panels have gotten thinner than a human hair. Soon they’ll be everywhere. - Vox
South Korean scientists have created solar PV cells that are 1 micrometer thick, hundreds of times thinner than most PV and half again as thin as other kinds of thin-film PV. This makes it the ideal candidate to power various things since the material will be barely noticeable and still give enough energy. We could think about integrating them into bridges, streets, or even our clothes.
-
What Is a Constant Cycle of Violent News Doing to Us? - The New York Times
Katie Rogers asked experts what happens to our human brain when there’s a constant cycle of violent news. While it of course depends on the individual person, a higher frequency of such news increases fear and the sense of vulnerability and powerlessness. And I’m not saying you shouldn’t follow the news anymore but maybe limiting access to it for yourself is a good idea, as is filtering it on social media (use mute keywords or similar) so you don’t get flooded about violent, horrible news all the time. It’s enough to check it once per day or so and it’s unhealthy if you’re surrounded by anxiety everywhere, all the time.
-
Greenland lost a staggering 1 trillion tons of ice in just four years - The Washington Post
We still might not know if it’s our fault that the climate is changing. But what we now know is that Greenland’s ice-shield lost twice as much ice in the past four years as in the 20 years before that. And this means much faster-rising sea levels, the loss of drinking water, and the loss of an important weather control on Earth (the Arctic has much influence on how storms and weather develop). In the end, it’s us who suffer from it, so we need to act and do our best to stop this trend.
-
Decentralize now? - O'Reilly Media
Simon St. Laurent on decentralizing the web. Some useful thoughts about our current lock-in on technology, service providers, and centralized solutions, and how we might be able to break that up again to unlock the real power of the web.
-
How technology disrupted the truth | Katharine Viner | Media | The Guardian
Katharine Viner writes about how social media swallowed the news and how the consequences of this go far beyond journalism. An interesting essay on how well-done social marketing has an enormous influence on the decisions people make—no matter if it’s about buying a product or making a political decision.
-
This Is Your Life, Brought to You by Private Equity - The New York Times
Since the financial crisis, the private equity industry has become hugely influential. The New York Times curated a lovely, interactive story about how private equity plays out in your daily life.
-
The Moral Character of Cryptographic Work and Scientists
Phillip Rogaway shares a paper on “The Moral Character of Cryptographic Work” (PDF). An interesting read on the shift of power and why cryptography is often a political tool that demands high morals and ethical fundamentals of those who build it. Anyone who ever discussed the topic of morals and ethics in science should read this.
-
OpenStreetMap | mvexel's diary | Introducing OpenStreetView
You can now contribute to OpenStreetView with your phone. The aim of creating an open-source alternative to Google’s Streetview functionality is really promising and has already some locations covered. This is especially interesting in situations where people need fast updates — like in the case of the earthquake that stroke Italy this week and in which contributors updated all the maps in OpenStreetMap within a few hours.
-
These Solar Panels Can Pull Drinking Water Straight From the Air
These solar panels are certainly a cool invention: They can pull drinking water straight from the air, up to 5 liters per day per panel. A very nice way to source water when you don’t have traditional water resources.
-
The code I’m still ashamed of — Bill Sourour
Bill Sourour’s article “The Code I’m Still Ashamed Of” points out an important aspect of our jobs as developers: responsibility. An incredibly important story.
-
Silicon Valley Has an Empathy Vacuum — Om Malik for The New Yorker
“It is time for our industry to pause and take a moment to think: as technology finds its way into our daily existence in new and previously unimagined ways, we need to learn about those who are threatened by it. Empathy is not a buzzword but something to be practiced. Let’s start by not raging on our Facebook feeds but, instead, taking a trip to parts of America where five-dollar lattes and freshly pressed juices are not perks but a reminder of haves and have-nots. Otherwise, come 2020, Silicon Valley will have become an even bigger villain in the popular imagination, much like its East Coast counterpart, Wall Street.” — Om Malik in The New Yorker
-
Google is not ‘just’ a platform. It frames, shapes and distorts how we see the world | Opinion | The Guardian
Carole Cadwalladr discusses the struggles of services like Google and Facebook between freedom of the press and promoting fake news. An interesting insight into how search results are influenced.
-
The Year Silicon Valley Went Morally Bankrupt | New Republic
Sarah Jones on tech moguls that claim that they want to remake the world and why they behaved as if they owe us no explanation for their decisions this year. A moral analysis of the startup culture.
-
99 Good News Stories You Probably Didn’t Hear About in 2016 – Angus Hervey
We like to say “2016 was the worst”, and I don’t like this. Angus Hervey shares 99 good news stories that we probably didn’t hear about in 2016. Don’t let you be fooled by the all negative news and instead embrace the good things that happened as well. Despite some bad news, 2016 was quite a good year. Enjoy its last days!
-
IEEE puts out a first draft guide for how tech can achieve ethical AI design | TechCrunch
The Institute of Electrical and Electronics Engineers (IEEE) published a first draft guide for how tech can achieve ethical Artificial Intelligence (AI) design.