j

Petite fleur: the music of Sidney Bechet / David Liebman ; John Stowell

MEDIA PhonCD J B387 pet




j

Double concertos: Brahms, Rihm, Harbison / Mira Wang, Jan Vogler, Royal Scottish National Orchestra, Peter Oundjian

MEDIA PhonCD W18412 dou




j

The greatest showman: original motion picture soundtrack / original songs by Benj Pasek & Justin Paul

MEDIA PhonCD P263 gre




j

Legacy! Legacy! / Jamila Woods

MEDIA PhonCD P W864 leg




j

Anima sacra / Jakub Józef Orliński ; Il Pomo d'Oro ; Maxim Emelyanychev

MEDIA PhonCD Or53 ani




j

Nattfiolen / Jordsjø

MEDIA PhonCD P J767 nat




j

Paris to Calcutta: men and music on the desert road / Deben Bhattacharya ; with an introduction by Jharna Bose Bhattacharya ; produced and edited by Robert Millis

MEDIA PhonCD F G3200.B469




j

Amadjar / +10:I Tinariwen

MEDIA PhonCD F G8800.T562




j

Jane Eyre / Louis Karchin ; libretto by Diane Osen

MEDIA PhonCD K144 jan




j

Tangos for Yvar / Aharonián, Babbitt, Berkman, Biscardi, Fennelly, Finch, Hill, Johnson, Mumford, Nichifor, Nobre, Nyman, Pender, Piazzolla, Rzewski, Schimmel, Vigeland, Wolpe

MEDIA PhonCD Sh97 tan




j

Travel with love / Justin Hinds and the Dominoes

MEDIA PhonCD P H588 tra




j

"We, like Salangan swallows...": a choral gallery of Morton Feldman and contemporaries / the Astra Choir ; John McCaughey, director

MEDIA PhonCD As89 we




j

Missa Grecorum & motets / Jacob Obrecht

MEDIA PhonCD Ob6 vocmu




j

Harmonium / James Tenney

MEDIA PhonCD T257 sel c




j

Songplay / Joyce DiDonato

MEDIA PhonCD J D562 son




j

Thelonious Sphere Monk: a cosmic journey reinterpreting the great Thelonious Monk song book / Mast

MEDIA PhonCD J M749 the




j

99 words / Sir John Tavener ; Roxanna Panufnik

MEDIA PhonCD V85088 nin




j

Jerusalem / Pera Ensemble ; Mehmet C. Yeşilçay

MEDIA PhonCD P41 jer




j

Complete cello suites / JS Bach ; transcribed for violin

MEDIA PhonCD B122 suvc ar d




j

Silvergrass & other orchestral works: Jian mang hua / Shih-Hui Chen

MEDIA PhonCD C4199 orcmu




j

Soundpieces 1-7 / John J. Becker

MEDIA PhonCD B3878 insmu




j

Missa Mater Patris / Josquin des Prés. Missa Da pacem / Noel Bauldeweyn

MEDIA PhonCD T146.5 mis




j

Music for wind band. John Philip Sousa

MEDIA PhonCD So85 bamu a v.19




j

Web Tools #346 - JS Quiz, Code Editors, React, Testing Tools

Web Tools Weekly

Issue #346 • March 5, 2020

Advertisement
Be in the Know on Emerging New Trends
Subscribe to our mailing list to receive reports on the latest trends in products, markets, companies, and styles. We constantly analyze over 300,000 blogs, forums, portals and social media accounts to keep track of the emergence of new trends at the earliest stages.
Try it now!

If you love little JavaScript coding challenges that teach you about the basics of the language, you'll enjoy TypeOfNaN JavaScript Quizzes, a project by Nick Scialli and a number of other contributors.

TypeOfNan JavaScript Quizzes

Even after writing JavaScript for many years, I still find it hard to believe how many of such questions I get wrong. Ultimately, I don't think that matters unless I'm live coding in front of an audience or something. Debugging is part of the workflow so even if we get something subtle wrong initially, we can usually figure out the problem and fix it. What we are aiming for in most cases is an end result, not necessarily a process. But a little quiz like this can definitely enhance your understanding, and that can't hurt!

And if you like interesting little JavaScript tidbits like I often share in this newsletter, don't forget that I've compiled all my previous tutorials with updated demos and code samples in an e-book bundle you can grab from Leanpub.

Now on to this week's tools!

 

Text Editors, IDEs, etc.

Be in the Know on Emerging New Trends
Subscribe to our mailing list to receive reports on the latest trends in products, markets, companies, and styles. We constantly analyze over 300,000 blogs, forums, portals and social media accounts to keep track of the emergence of new trends at the earliest stages. sponsored 

Debug Visualizer
A VS Code extension for visualizing data structures while debugging. Works best with JavaScript/TypeScript. Also tested with C#, Java, and PHP. Works with any language that you can debug in VS Code.

Lens.vim
An automatic window resizing plugin for Vim. Automatically resizes windows when their content exceeds their window dimensions, but does so respecting some minimum and maximum resize bounds.

guijs
A multi-purpose native Windows and Mac app to help you manage your development projects. Has features for projects, package installation, script management, and more.

OpenChakra
Full-featured visual editor and code generator for React using Chakra UI (the React component library).

Autocode
An online IDE for connecting APIs together, for makers and developers alike.

Codecov
A code coverage solution to improve your code review workflow and quality. Provides highly integrated tools to group, merge, archive, and compare coverage reports.

CodeinCloud
Provides managed and dedicated cloud IDEs, hosted private cloud solutions and DevOp pipelines. Users can access on-demand IDEs for development.

Markdown App
Online or native WYSIWYG editor for Markdown for Mac, Windows, and Linux.

iHateRegex
Interactive regex cheatsheet for searching for common or complex regular expression solutions.

Peacock
VS Code plugin to subtly change the color of your workspace. Ideal when you have multiple VS Code instances and you want to quickly identify which is which.

Courses by Wes Bos (Master Packages!) on Sale for $97:
 

Testing and Debugging Tools

>&campaign_id=f4daed5baf&device=desktop&v=0.14" style="padding-bottom: 12px;max-width: 568px;border: 0;height: auto;line-height: 100%;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" width="568">

Haxor
Helps you support and learn from developers as they build with your products. See how developers use your product by watching their screens, code changes, and open applications.

Kasaya
A "WYSIWYG" (kind of) scripting language and run-time for browser automation.

Blisk
Now at version 12+. A developer-oriented browser that provides businesses with a development workspace for teams and freelancers to develop and test modern web applications twice as fast.

Hexometer
All-in-one website maintenance and performance monitoring tool that continuously monitors and reports 2800+ data points.

Beautify.log
A Node.js library to beautify console.logs with colors, making them easier to read and more useful.

virtual-module
Evaluate a module in a sandbox with in-memory module resolution.

findead
Dead React components finder to find components no longer in use.

ci-detect
Detect what kind of CI environment the program is in (e.g. Jenkins, GitLab, Netflify, Travis-CI, etc).

Zoya
A highly composable logging library written in TypeScript, used for both client and server applications.

React Tools

>&campaign_id=f4daed5baf&device=desktop&v=0.14" style="padding-bottom: 12px;max-width: 568px;border: 0;height: auto;line-height: 100%;outline: none;text-decoration: none;-ms-interpolation-mode: bicubic;" width="568">

Edtr.io
A customizable edit-in-place WYSIWYG component for enabling user-editable pages in React.

resourcerer
Declarative data-fetching and caching framework for REST APIs with React.

react-typical
React typing animation in ~400 bytes of JavaScript.

React Tiny Fab
A tiny (~700 byte gzip'd) WAI-ARIA compliant floating action button for React. The home page has the button working in the bottom right corner if you want to see what this does.

react-roughviz
a thin React wrapper around roughViz, the library for creating sketchy/hand-drawn styled charts in the browser.

react-ga
A JavaScript module that can be used to include Google Analytics tracking code in a website or app that uses React for its front-end codebase.

React Awesome Slider
React content transition slider. A 60fps, lightweight, performant component that renders an animated set of production-ready general purpose sliders.

React Tippy
A lightweight tooltip library for React based on Tippy.js and powered by Popper.js.

react-adal
Azure Active Directory Library (ADAL) support for React.

iframe-resizer-react
The official React interface for iFrame Resizer, a library that auto-resizes height and width of same- and cross-domain iframes to fit their contained content.

React Puzzle Confirm
This is kind of odd. It's a modal to "confirm" (kind of like a captcha) by fitting a puzzle piece using a slider.
 

A Tweet for Thought

According to reports, Corona beer sales are not down due to confusion with Coronavirus (despite some false claims). But I did like this tweet by Kelly Vaughn on that subject.
 

Got a Tool Suggestion?

Made something? Send links via Direct Message on Twitter @WebToolsWeekly (details here). No tutorials or articles, please. If you have any suggestions for improvement or corrections, feel free to reply to this email.
 

Before I Go...

Speaking of code editors, Codewerks is a new project that is running a Kickstarter for "software using a streamlined iPad interface that gives you all the flexibility of a Linux machine."

Thanks to everyone for subscribing and reading!

Keep tooling,
Louis
webtoolsweekly.com
@WebToolsWeekly
PayPal.me/WebToolsWeekly
WTW on YouTube




j

Web Tools #347 - JS Testing, Media Tools, Git/CLI Tools, Uncats

Web Tools Weekly

Issue #347 • March 12, 2020

The following intro is a paid product review for Wallaby, a developer productivity tool that runs your JavaScript and TypeScript tests immediately as you type.

Code testing is a huge part of the current JavaScript landscape, so if it's crucial that you run tests on your code base regularly, you'll love Wallaby. Wallaby is available as an extension for VS Code, JetBrains Editors, Visual Studio, Sublime Text, and Atom. I'll demonstrate here how powerful Wallaby is by showing you how it works within VS Code.

Once you've installed and configured Wallaby, you can open any project and run it via its Command Palette, shown here:

 
Wallaby's Command Palette in VS Code


When you choose the Start command, you can open any JavaScript or TypeScript file and you'll see something like the following:

 
Wallaby's code coverage and logs


Notice a few things:
 

  • The colored squares on the left indicate code coverage. These squares can be grey, yellow, green, pink, or red, indicating various levels of coverage from your tests.
  • The lines that contain console.logs have their outputs displayed to the right. These get updated in real time as you write or edit your code (similar to Quokka.js, another tool by the same developers that I've reviewed previously)


As you can see, if you're accustomed to using a lot of console.logs and adding breakpoints to your code, Wallaby is going to dramatically increase your productivity. You get that feedback immediately within the code, without actually executing it in a browser or other environment. In other words, your code editor is the console, with the bonus of everything displaying in its immediate code context.

When it's running, Wallaby displays the number of failed and passed tests in the status bar:
 

Wallaby displays passed/failed tests in the status bar


Clicking on the failed and passed tests in the status bar will open Wallaby's Output Channel, with a little more detail on what's happening with your tests:

 
Wallaby's Output Panel


One of the features that has caught the attention of many developers is Wallaby's Time Travel Debugger, which was added to Wallaby in December. This feature allows you to move forward or backwards through your code to understand what led to a specific bug.

 
Wallaby's Debugger View


You can start the debugger on a line of code where your test begins, or on any line executed by one of your tests. Once begun, you can run a number of different commands to get to the root of a particular issue. This is helped out by the Debugger View that opens in the left panel. Pretty powerful! And again, part of the power is that this is all available right inside your code base – no need to open up a separate environment like the developer tools in your browser.

There's a lot more to Wallaby that I haven't mentioned here, but this should be enough to give you a taste of some of the primary features of the tool, which is free to try. Check out the docs for more on what I've only briefly touched on here.

Now on to this week's tools!

 

Media Tools (SVG, Video, etc)

Iconset
Free, cross-platform SVG icon organizer app for designers, developers or product teams. Works on both Mac and Windows.

Open Peeps
A hand-drawn illustration library to create scenes of people, each drawing available in PNG or SVG format.

Cosha
JavaScript utility to add colored shadows to your images. Use via defaults or customize via the API.

Filmage Screen
Screen recorder and video editor for Mac. All-in-one video toolbox that lets you record HD video, edit video, make animated GIFs, convert video, and more.

Biteable
Video making platform with ready templates for creating marketing videos for different social platforms, industries, etc.

Unscreen
Online tool that uses AI to remove the background from an uploaded video.

SequenceDiagram.org
Online tool to build sequence diagrams using a drag-and-drop interface, useful for presentations.

Faux Code Generator
Input real code via a Gist URL and this tool will produce an SVG version of the code in a mock format, for possible use in slides, etc.

Smithsonian Open Access
Download, share, and reuse millions of the Smithsonian’s images. Use in commercial projects without attribution or written permission (although you should read the FAQ for copyright considerations).

Panolens.js
Flexible, event-driven, WebGL-based JavaScript panorama viewer built on Three.js.

Fontice.com
Fastest browser-based WebP converter. Free JPG/PNG to WebP conversion without uploading to any other servers.

Heroicons
A set of free MIT-licensed high-quality SVG icons for UI development

Git, GitHub, and CLI Tools

React Chat Tutorial
Quickly build chat leveraging Stream's Chat API. Our comprehensive React components will get you up and running fast.  sponsored

CLUI
A collection of JavaScript libraries for building command-line interfaces with context-aware autocomplete.

actions-comment-run
GitHub action to execute any script in an issue or pull request comment.

tickgit
Allows you to do project management in your codebase with TODO comments.

grep.app
Search across a half million Git repos, with options for case sensitivity, regex, and whole words only.

GitHub Data
Populate data from GitHub into Figma mockups.

GitHub CLI
In case you missed it, this is GitHub's official command line tool.

Octomments
GitHub issues as a comment plugin.

Gitpod
Launches ready-to-code dev environments for your GitHub or GitLab project with a single click.

GistPad
VS Code extension for managing and sharing code snippets, notes and interactive samples using GitHub Gists.

paint-github
This is kind of humourous. It's a Chrome or Firefox extension that adds a feature to GitHub comments that lets you "draw" your comment.

The Uncategorizables

React Chat Tutorial
Quickly build chat leveraging Stream's Chat API. Our comprehensive React components will get you up and running fast.  sponsored

Outgrow
Platform to build interactive content like calculators, quizzes, chatbots, surveys, and more, for marketing purposes.

unavatar
API that searches common social media platforms to get a user's avatar image by means of a username.

Voiceflow
Design, prototype and build voice apps. Collaboratively design, prototype, and build Alexa Skills and Google Actions, without coding.

Limio
Sell subscriptions and recurring products, build landing pages, checkouts, self-service portals, and more, with no code.

ResponseVault
Alpha. Create a database application with a drag and drop form builder. Import your own JavaScript UI widgets.

Awesome JS
A visual tool to look for popular JavaScript packages, categorized.

Advanced App Development Cost Calculator
Seems to be mainly for large corporate apps because the estimated prices are fairly high.

Nots.io
Documentation tool for development teams. Access docs from your code and always know if something is obsolete.

Opensource Buiders
Find open-source alternatives for your favorite apps.

damnshort
Short dot-com names, suitable for branding, available for sale for $195 each.

A Tweet for Thought

I think it's safe to say many of us are punk rock programmers.
 

Send Me Your Tools!

Made something? Send links via Direct Message on Twitter @WebToolsWeekly (details here). No tutorials or articles, please. If you have any suggestions for improvement or corrections, feel free to reply to this email.
 

Before I Go...

If you love numbers and Math, you'll adore MetaNumbers. It's an encyclopedia providing all sorts of super-boring info on any positive integer you enter. To me this is kind of like Brian Regan's comedy bit on refrigerators, but I know a lot of you might find it interesting.

Thanks to everyone for subscribing and reading!

Keep tooling,
Louis
webtoolsweekly.com
@WebToolsWeekly
PayPal.me/WebToolsWeekly




j

Web Tools #350 - JS Libraries, Testing Tools, Site Builders

Web Tools Weekly

Issue #350 • April 2, 2020

Advertisement via Syndicate
Working From Home? Try Team.Video
Team.video makes it easier and faster for remote teams to work together by offering user friendly video meetings with agendas, collaborative notes, and emoji responses. No download required and it’s free to use.
Try Team.video for FREE!

If you've never looked into using the HTML Drag and Drop API, I've created a super simple code example that uses the least code possible to demonstrate how simple it is to allow one element to be dragged into another one on a web page.

First, here's the HTML:

<div id="box" draggable="true"></div>
<div id="dropzone"></div>

Notice the draggable attribute set to true, and the IDs that I'll use as hooks in the JavaScript. Here's the JavaScript:

let box = document.getElementById('box'),
    dropzone = document.getElementById('dropzone');

dropzone.addEventListener('dragover', function (e) {
  e.preventDefault();
});

dropzone.addEventListener('drop', function (e) {
 
e.target.appendChild(box);
});

Here I'm listening for the dragover and drop events to ensure that the element gets moved properly. The move itself is accomplished using the well-known appendChild() method.

And that's it! Aside from the variable declarations, it's just 6 lines of JavaScript. This code on its own isn't going to do a whole lot. All it does is drag the 'box' element into the 'dropzone' element.

You can see this in action in this CodePen demo, which also includes a little extra code that does the following:

  • Adds some styles to indicate that the box is draggable and that the dropzone is being dragged over
  • Listens for the dragend event to remove styles indicating that the box is draggable and disables the 'dragged over' styles
  • Switches the draggable attribute to false
There's a lot more that I could discuss about the API but this should suffice to give you a starting point, after which you can use a resource like the one on MDN to go deeper.
 

Now on to this week's tools!
 

JavaScript Libraries and Frameworks

Working From Home? Try Team.Video
Team.video makes it easier and faster for remote teams to work together by offering user friendly video meetings with agendas, collaborative notes, and emoji responses. No download required and it’s free to use.   via Syndicate

p5.js
Now at version 1+. JavaScript library for creative coding, with a focus on making coding accessible and inclusive for artists, designers, educators, and beginners.

Hex Engine
A modern 2D game engine for the browser, written in TypeScript and designed to feel similar to React.

LInQer
The C# Language Integrated Queries ported for JavaScript for amazing performance.

Type Route
A flexible, type safe routing library, built on top of the same core library that powers React Router.

Angular
The popular framework is now a version 9.

Mirage JS
An API mocking library that lets you build, test and share a complete working JavaScript application without having to rely on any back-end services.

Solid
A declarative, efficient, and flexible JavaScript library for building user interfaces that doesn't use a virtual DOM.

Alpine.js
A rugged, minimal framework for composing JavaScript behavior in your markup.

BlockLike.js
An educational JavaScript library that bridges the gap between block-based and text-based programming.

Testing and Debugging Tools

Beginner JavaScript by Wes Bos is 50% Off!
The master package includes 88 HD videos, part of 15 modules – and course updates are free forever.   promoted 

Screenshot Cyborg
Take a full-page screenshot of a webpage, up to 50 URLs at once. Choose to render the screenshot for desktop, tablet, or phone.

Stryker Mutator
A testing toolkit for JavaScript (also Scala and C#) that uses mutation testing, which means tests are run after bugs, or mutants, are automatically inserted into your code.

Cypress
Now at version 4+. Fast, easy, and reliable end-to-end testing for anything that runs in a browser.

Color Contrast Checker
Online tool that analyses and suggests colors that meet the required contrast ratio. Creates shareable links for chosen contrast checks.

LeakLooker X
Discover, browse and monitor database or source code leaks.

Animockup
Online prototype/animation tool to create animated mockups in your browser and export as video or animated GIF.

single-spa Devtools Inspector
A Firefox/Chrome devtools extension to provide utilities for helping with applications using single-spa (framework for front-end microservices).

micro-jaymock
Tiny API mocking microservice for generating fake JSON data.

The Contrast Triangle
Tool for simultaneously checking text, link, and background contrast. This one also has shareable links for specific tests.

Shieldfy
Automated security assistant that integrates with GitHub to show you potential vulnerabilities in your code.

puppeteer-in-electron
Use puppeteer to test and control your Electron application.

Site Builders, CMS's, Static Sites, etc.

Advanced React & GraphQL by Wes Bos is 50% Off!
The master package includes 68 HD videos, part of 10 modules – and course updates are free forever.   promoted 

LiveCanvas
Pure HTML and CSS WordPress builder that uses Bootstrap 4 and helps pages achieve better SEO results.

React Blog
A blogging system built on React where the blog posts are individual GitHub issues.

Calcapp
A cloud-based app designer enabling you to create apps without having to do any programming.

Factor JS
A JavaScript CMS platform that lets you build powerful and professional JavaScript applications fast.

NoCo
Enterprise-grade, no-code platform for Node or React developers. Generate code for most of your app, and only write the parts that make your product unique.

Sitebot
Create a personal website in a few minutes by just chatting. Seems to require Facebook Messenger login.

Webcodesk
A powerful visual development tool for building React apps. It's tightly coupled to the React API, so the knowledge translates directly.

BuilderX
A browser based design tool that codes React Native and React for you.

gatsby-plugin-next-seo
A plug-in that makes managing your SEO easier in Gatsby projects.

lego
A fast static site generator that generates optimised, performant websites.

Kodular
A drag-and-drop no-code app builder.

A Tweet for Thought

This thread establishes that password strength indicators are flawed.
 

Send Me Your Tools!

Made something? Send links via Direct Message on Twitter @WebToolsWeekly (details here). No tutorials or articles, please. If you have any suggestions for improvement or corrections, feel free to reply to this email.
 

Before I Go...

If a tech conference that you were going to attend has been cancelled, you might want to check out 40 Conferences Gone Virtual, by Spokable, which is tracking which conferences are happening online.

Thanks to everyone for subscribing and reading!

Keep tooling,
Louis
webtoolsweekly.com
@WebToolsWeekly
PayPal.me/WebToolsWeekly




j

Web Tools #351 - JS Utilities, Media Tools, Uncategorizables

Web Tools Weekly

Issue #351 • April 9, 2020

Advertisement via Syndicate
Working From Home? Try Team.Video
Team.video makes it easier and faster for remote teams to work together by offering user friendly video meetings with agendas, collaborative notes, and emoji responses. No download required and it’s free to use.
Try Team.video for FREE!

Last week I covered a really simple introduction to the HTML Drag and Drop API, for those of you who have never used it before. The demo has the minimum code required to produce a drag and drop example. Let's take that a little further and incorporate the dataTransfer object, which has methods and properties that can be used in the midst of a drag and drop operation.

First, I can use the setData() method of the dataTransfer object, which I'll incorporate in the midst of my event listener when listening for a dragstart event (an event I didn't need to use in the previous demo). The relevant line looks something like this (where "e" is the event object):

e.dataTransfer.setData('text/html', box.innerHTML)

As you can see, the setData() method takes two arguments: The data type and the data itself. In this case, the data is simply the innerHTML of the dragged element. This is the first step in transferring data: Setting the data, which happens when the element is initially dragged.

The next key line in my code will be using the getData() method. In this case, I'll use it when the drop event is triggered on my drop area element:

this.style.background = e.dataTransfer.getData('text/html')

The data that I'll be grabbing is text that represents a valid CSS color keyword, which will be inside each draggable element. The data could be a lot of things, but in this case I'm just using some text for demo purposes. And as you can see, the text sets the background color of the drop area element.

See the full working demo here

There's naturally a lot more code there, but it's fairly straightforward. I'm looping over the draggable boxes to add the event listeners to each one. The setData() and getData() methods are used within that loop to obtain and apply the color info.

Try dragging any of the boxes into the drop area to see the background of the drop area change. You can even try changing the HTML to use different colors (any valid CSS color value will work). As long as the color is valid, the background of the drop area element will change to that color.

And that's a basic way to use the dataTransfer object when working with the Drag and Drop API.
 

Now on to this week's tools!
 

JavaScript Utilities

Working From Home? Try Team.Video
Team.video makes it easier and faster for remote teams to work together by offering user friendly video meetings with agendas, collaborative notes, and emoji responses. No download required and it’s free to use.   via Syndicate

Van11y
Bit of an older project that I just discovered. A collection of customizable, accessible scripts for rich interface elements, built using progressive enhancement.

Rsup Progress
A simple progress bar with promises support.

Heapify
A very fast JavaScript priority queue, implemented using a binary heap, with no dependencies.

Nano Events
Simple and tiny (72 bytes) event emitter library for JavaScript.

Chardin.js
Simple overlay instructions for your apps. Kind of like those 'app tour' plugins, but just a single overlay pointing stuff out.

Serialize JavaScript
Serialize JavaScript to a superset of JSON that includes regular expressions and functions.

FullCalendar
A JavaScript calendar plugin, great for displaying events with drag-and-drop capabilities and an API for extending its functionality.

defu
Utility to recursively assign default properties.

Clack
A modern keyboard shortcut library written in Typescript.

Sharect.js
A lightweight (2.9Kb gzipped and minified) JavaScript library to let users share text selections to social networks in desktop browsers (like Medium).

Uppload
A better JavaScript image uploader. Highly customizable with 30+ plugins, open-source, and can be used with any file uploading back end.

Media Tools (SVG, Video, Audio, etc.)

Beginner JavaScript by Wes Bos is 50% Off!
The master package includes 88 HD videos, part of 15 modules – and course updates are free forever.   promoted 

mediasoup
Cutting-edge WebRTC video conferencing. The perfect choice for building multi-party video conferencing and real-time streaming apps.

gifcap
Create animated GIFs in your browser from a screen recording. Client-side only, no data is uploaded.

Tabler Icons
A set of over 400 free MIT-licensed high-quality SVG icons for you to use in your web projects. Each icon is designed on a 24x24 grid and a 2px stroke.

Video Puppet
Using a markdown file, create a video (with captions) from a chosen set of images, audio files and smaller video clips.

Exifr
The fastest and most versatile JavaScript EXIF reading library.

Seamless Pattern Generator
Create seamless, repeatable royalty free patterns for your website, or to download as SVG, JPEG or PNG.

Resoundly
Produce a podcast simply by typing the content and this app will convert it to speech.

Spline
Easily create 3D web experiences without coding. Build and iterate fast with production-ready results.

Photo Stream
Self-hosted, super simple photo stream. Built with Ruby and seems to require either Netlify or Jekyll.

Ionicons
Premium designed icons for use in web, iOS, Android, and desktop apps. Support for SVG and web font.

The Uncategorizables

Advanced React & GraphQL by Wes Bos is 50% Off!
The master package includes 68 HD videos, part of 10 modules – and course updates are free forever.   promoted 

Brim
Desktop application to efficiently search large packet captures and logs from Zeek (the network security monitoring tool).

StartNames
Produces brandable ideas for domain names in a Twitter stream, based on actual domains that are for sale.

WMS Everywhere
Chrome extension to help you research search volume, advertising cost per click, and related keywords inside Google search results – free and on-demand.

PDF.js Express
Add a PDF.js viewer with out-of-the-box annotation, PDF form fill, and signing. Based on Mozilla's PDF.js (for parsing and rendering PDFs).

AsyncAPI
Open source tools to easily build and maintain your event-driven architecture. All powered by the AsyncAPI specification, the industry standard for defining asynchronous APIs.

Weglot
Allows you to make your website multilingual in minutes and to manage all your translations effortlessly.

Our Site Updates
An easy way to post updates to your website (e.g. via easy to install banners) and keep visitors informed.

RightFont
An innovative, beautiful and professional font manager app for Mac, helping designers preview, install, sync, and manage their font files.

PingPong
Remote user interviews and user tests made simple.

Extract Article Text
Lets you easily extract boilerplate-free text from news articles, blogs, press releases, and company pages with a single API request.

Commerce
Drop‑in e‑commerce for any website with a single line of code. Serverless, real‑time, and API‑first.

A Tweet for Thought

When you're living in a tech bubble like many of us are, it's hard to believe there are people this naive.
 

Send Me Your Tools!

Made something? Send links via Direct Message on Twitter @WebToolsWeekly (details here). No tutorials or articles, please. If you have any suggestions for improvement or corrections, feel free to reply to this email.
 

Before I Go...

This is amazing: Open and Shut lets you send messages in Morse code by repeatedly slamming your laptop shut. So if you've been kidnapped and forced to give up all your passwords or something...?

Thanks to everyone for subscribing and reading!

Keep tooling,
Louis
webtoolsweekly.com
@WebToolsWeekly
PayPal.me/WebToolsWeekly




j

Web Tools #352 - CSS Tools, JS Utilities, Build Tools

Web Tools Weekly

Issue #352 • April 16, 2020

Advertisement via Paved
Real-Time Chat at Your Fingertips
Stream Chat offers a variety of SDKs and pre-built components to help integrate real-time chat and messaging into your application in as little as a couple of days. Sign up now for a free 28-day trial – no credit card required.
Start a Free Trail Today!

Continuing on the theme of dealing with HTML's Drag and Drop API, another thing you're able to do with this API is set a custom image that appears during any drag operation.

Normally when you drag a draggable element, the browser will by default display a mini version of the dragged object, which appears next to the user's cursor. In most cases, this is acceptable and is probably the desired behavior. But if you want you can change that image using the setDragImage() method of the dataTransfer object.

Here's the code:

let img = new Image();
img.src = 'my-image.png';

box.addEventListener('dragstart', function (e) {
  e.dataTransfer.setDragImage(img, 92, 92);
});

Notice a few things:

  • I'm creating an image using the Image() constructor. I could also use document.createElement('img') for this
  • I'm setting the image's src attribute to point to my image
  • I'm using setDragImage() inside the event listener for the dragstart event
The setDragImage() method takes three arguments, all mandatory:
  • The image to use during the drag operation
  • The horizontal (x) offset relative to the mouse pointer
  • The vertical (y) offset relative to the mouse pointer
View this in action on CodePen

In my CodePen example, I'm using a portion of the Web Tools Weekly newsletter header/logo as the drag image. I'm also ensuring that the mouse pointer is centered over the image by using x/y coordinates equal to half the image's dimensions.

Of course, in this example, the image isn't relevant to the drag operation, so there's no image appearing in the drop zone or anything like that. This is just a simple example that shows you how to change the drag image during a drag operation.

Now on to this week's tools!
 

CSS and HTML Tools

Real-Time Chat at Your Fingertips
Stream Chat offers a variety of SDKs and pre-built components to help integrate real-time chat and messaging into your application in as little as a couple of days. Sign up now for a free 28-day trial – no credit card required.  via Paved 

CSS Scan
Now at version 2. Chrome or Firefox extension. An alternative to using inspect element to edit and debug CSS. Check the CSS of any element on hover, instantly, and copy its entire rules with a single click.

CSS Color Gradient Generator
Customize your own gradient or choose a gradient from a predefined gallery.

Color Ninja
A color palette and color scheme manager for Mac.

BEM Naming Cheat Sheet
A nicely designed guide to using the BEM naming method for your stylesheets.

sass-link
Use SCSS almost like regular CSS. It parses the link and style tags of your document, compiles them using sass.js and injects the compiled CSS back into the document.

CSS Builder
Live CSS editing tool to fiddle with various CSS properties including shadows, border-radius, filters, typography, and lots more.

MVP.css
A minimalist stylesheet for HTML elements. No class names, no frameworks, just semantic HTML and you're done.

tailwindcss-standalone
Standalone build of Tailwind CSS that runs in the browser. I'm assuming the idea here is that you don't need a build process to use it.

Buttono
A flexible Sass mixin for creating BEM-style buttons.

CSS Specificity Calculator
Interactive tool to better understand CSS specificity. Provides a specificity score along with number of IDs, classes, and element selectors used. Also allows deep linking to whatever selector you enter.

glaze
CSS-in-JS micro-library for making design systems approachable.

JavaScript Utilities

ES6 for Everyone by Wes Bos is 50% Off!
The master package includes 77 HD videos, part of 21 modules – and course updates are free forever.   promoted 

Flip
A nice looking flip-animation timer component that you can add to your website to include a countdown (e.g. for a product launch).

ASScroll
A hybrid smooth scroll setup that combines the performance gains of virtual scroll with the reliability of native scroll. See the two example links in the readme for a demo, which is pretty cool but definitely not for every project.

prerender.js
Another option to preload links before the user clicks them.

Universal Model
A unified state management solution for Angular, React, Svelte, and Vue.

Zod
TypeScript-first schema validation with static type inference.

Prerender
Allows your JavaScript website to be crawled perfectly by search engines. This tool renders the JavaScript in a browser, saves the static HTML, and you return that to the crawlers.

gretchen
Making fetch happen in TypeScript.

sort-isostring
A tiny (110B) and fast utility to sort ISO 8601 date strings.

uid
A tiny (134B) and fast utility to generate randomized output strings of fixed length using lowercase alphanumeric characters.

Checkboxland
Peak weirdness here. A JavaScript library for rendering anything as HTML checkboxes. Yes, that's right.

Routine
An inline, promise-based wrapper around Web Workers.

Build Tools, Bundlers, etc.

Advanced React & GraphQL by Wes Bos is 50% Off!
The master package includes 68 HD videos, part of 10 modules – and course updates are free forever.   promoted 

npm Dependency Visualizer
Enter the name of any npm package and this tool will display a visual showing its dependencies.

Pipedream
An integration platform built for developers. Develop any workflow, based on any trigger. Workflows are code, which you can run for free. No server or cloud resources to manage.

Rome
An experimental JavaScript toolchain. A compiler, linter, formatter, bundler, testing framework, and more.

Destiny
Prettier for File Structures. Scans a folder for all the files in it and creates a graph based on how the JavaScript/TypeScript files import each other.

Prettier
The popular code formatting tool is now at version 2.

Worth It
Enter a URL and this tool will analyze a page to determine how much less JavaScript is downloaded in modern browsers as a result of it using the module/nomodule pattern.

rollup.js
The popular module bundler for JavaScript apps is now at version 2+.

scriptlint
Enforceable standards for your package.json scripts – like ESLint for npm run. The idea here is to o enable people to use memorable and consistent script names across their projects.

Tray.io
Quickly integrate software applications using powerful automated workflows. Easily build and streamline processes using a beautifully designed visual workflow editor.

Unminify
Free online tool to unminify (unpack, deobfuscate) JavaScript, CSS, and HTML code, making it readable and pretty.

A Tweet for Thought

Kent C. Dodds provides a JavaScript quick tip that uses destructuring but it's interesting to read the many responses in the thread. I tend to be on the side of the responders in cases like this. Sometimes clever code is not readable or maintainable code.
 

Send Me Your Tools!

Made something? Send links via Direct Message on Twitter @WebToolsWeekly (details here). No tutorials or articles, please. If you have any suggestions for improvement or corrections, feel free to reply to this email.
 

Before I Go...

Bizarrely, someone has created a project that aims to name each of the web's 16.7 million colors: colornames.org. I guess with so much remote time on our hands, this is as good a time as any to attempt this.

Thanks to everyone for subscribing and reading!

Keep tooling,
Louis
webtoolsweekly.com
@WebToolsWeekly
PayPal.me/WebToolsWeekly




j

Web Tools #355 - Frameworks, Testing Tools, JS Utilities

Web Tools Weekly

Issue #355 • May 7, 2020

Promotion
123FormBuilder Gold Plan: Lifetime Subscription
For a one-time fee of $39.99 (usually $299.88/year) ‬you get a lifetime subscription to the gold plan (20 forms/month, 5000 submissions/month). A web-based form and survey builder with a no-code drag-and-drop editor, 1000+ form templates, integration with Google Sheets, MailChimp, Dropbox, and more.
Check it Out Here

When creating interfaces using HTML's Drag and Drop API (various aspects of which I've covered in recent issues), it's important to note that some elements on a web page are already 'draggable' by default. And you've no doubt noticed this. The spec explains that the following elements are draggable by default:

  • A text selection
  • An image
  • An `a` element with an `href` attribute
Every element on the page that doesn't explicitly have the draggable attribute set has a draggable value of "auto". But that doesn't mean you can check for a value of "auto". As the spec says, if an element's draggable attribute is not set to either true or false:

"...the element's draggable content attribute has the state auto. If the element is an img element, an object element that represents an image, or an a element with an href content attribute, the draggable IDL attribute must return true; otherwise, the draggable IDL attribute must return false."

In other words, the browser will automatically set the draggable value to true or false based on what kind of element it is. Try this CodePen demo to see the effect in action. Notice a few things in the demo:

  • No draggable attributes on the three elements
  • I'm using the Window.getSelection() method to get the selected text after the drag operation begins
  • I'm using preventDefault() when the drop is made to ensure the browser doesn't think something suspicious is happening. If I didn't include this, you'd see a warning before the browser tries to navigate to whatever you drag.
Try selecting any one of the three colors in full, or even a portion of the text in those colors to find another valid color value (e.g. "Pink" inside the color "HotPink"). Notice the background of the dropzone will change accordingly.
As a side point, you can select any random piece of text on that page and you'll see the browser try to figure out what to do with the text if you drop it onto the dropzone. This is similar to dragging an image (which is naturally draggable) into a new page and then the browser visits the URL of that image.

BTW - if you like these kinds of JavaScript tips, you'll love my e-books bundle.
 

Now on to this week's tools!
 

Front-end Frameworks

A No-Code Drag and Drop Form Builder
Get a lifetime membership to 123FormBuilder's Gold plan for a one-time fee of $39.99 (usually $299.88/year). 20 forms/month, 5000 submissions/month, 1000+ form templates, integration with Google Sheets, MailChimp, Dropbox, and more.  promoted 

HTML / Sass Jumpstart
Minimal, themeable, and scalable Sass/HTML template site. Powered by node-sass and includes stylelint, Prettier, and Autoprefixer, hot-reload via Browsersync.

H3
A microframework to build client-side single-page applications (SPAs) in modern JavaScript.

Fast Cart
A Woocommerce PWA platform for building fast loading, mobile-friendly e-commerce websites.

98.css
A CSS library for building retro interfaces that look like Windows 98.

Shorthand
A utility-based CSS framework that allows you to make unique and modern designs without writing any CSS.

Reactron
A tiny Electron project configured to work with React as the front end. The project has the minimum code necessary to start a new app.

Orbit
An open source design system that includes a whole slew of components and utilities for use in your next travel-based app or website.

vue-composable
General purpose Vue Composition API composable and reactive components written in TypeScript.

Hook
A dark HTML landing page template built with the aforementioned Shorthand CSS framework.

LitElement Starter Template
A minimal starter template for a web components app built with LitElement, TypeScript, and Parcel for bundling.

Reach UI
A set of React components to build accessible React-based design systems.

Testing and Debugging Tools

ES6 for Everyone by Wes Bos is 50% Off!
The master package includes 77 HD videos, part of 21 modules – and course updates are free forever.   promoted 

Eruda
Now at version 2+. A console for testing and debugging on mobile browsers.

CursedChrome
This can be used for malicious purposes, so be wary. A Chrome-extension implant that turns victim Chrome browsers into fully-functional HTTP proxies, allowing you to browse sites as your victims.

postMessage-tracker
A Chrome extension to track postMessage usage (URL, domain, and stack) both by logging using CORS and also visually as an extension icon.

Tempomat
Native macOS app for monitoring continuous integration systems.

Will it CORS?
Test if a URL is CORS friendly (i.e. it's safe to send and the response can be read).

Pointer Latency
Tests the delay of pointermove events in the current web browser and demonstrates the usefulness/uselessness of pointer prediction.

axios
A well-known tool but I've never included it here. A Promise-based HTTP client for the browser and Node.

FinDOM-XSS
A fast and simple DOM based XSS vulnerability scanner via a Shell script.

EventReduce Browser Demo
A browser demo where the EventReduce algorithm is used in different browser databases so you can test out the performance gains of different queries.

Insomnia
Now at version 7+. API design platform plus REST and GraphQL client.

JavaScript Utilities

Advanced React & GraphQL by Wes Bos is 50% Off!
The master package includes 68 HD videos, part of 10 modules – and course updates are free forever.   promoted 

emoji-regex
A regular expression to match all Emoji-only symbols as per the Unicode Standard.

Hegel
An advanced static type checker for JavaScript with optional type annotations and is able to prevent runtime type errors.

Rosetta
A general purpose internationalization library in 292 bytes.

SAMD
A tiny, static AMD API implementation that allows including AMD modules in regular script tags.

Flipswitch.js
Pure ES6 library for clipping fixed positioned elements on scroll.

useMemoValue()
Reuse the previous version of a value unless it has changed.

Notyf
A small (~3KB) JavaScript library for toast notifications. Responsive, accessible, dependency-free, and easy to integrate with React, Angular and Vue.

gen-esm-wrapper
CLI tool that makes it easier for module authors to support both ES modules and CommonJS modules for Node.js.

prray
'Promisified' Array, compatible with normal arrays, but comes with support for async methods (e.g. mapAsync).

qrcode-generator
QR code generator implementation in JavaScript, Java, and more.

A Tweet for Thought

In case you wanted to know how long it takes to load your Twitter timeline over a real 56k connection.
 

Send Me Your Tools!

Made something? Send links via Direct Message on Twitter @WebToolsWeekly (details here). No tutorials or articles, please. If you have any suggestions for improvement or corrections, feel free to reply to this email.
 

Before I Go...

Miss the office? Say no more.

Thanks to everyone for subscribing and reading!

Keep tooling,
Louis
webtoolsweekly.com
@WebToolsWeekly
PayPal.me/WebToolsWeekly




j

CBI court extends Kapil Wadhawan, Dheeraj Wadhawan's custody in Yes Bank scam till May 10

The businessmen-brothers are facing charges of financial irregularities in cases filed by both Enforcement Directorate (ED) and CBI.




j

Paper: material, medium and magic / edited by Neil Holt, Nicola von Velsen and Stephanie Jacobs ; with photographs by Thorsten Kern

Browsery TS1105.P134 2018




j

Look both ways: a double journey along my grandmother's far-flung path / Katharine Coles

Browsery QE21.C65 2018




j

Dreyer's English: an utterly correct guide to clarity and style / Benjamin Dreyer

Browsery PN145.D74 2019




j

Silence: a social history of one of the least understood elements of our lives / Jane Brox

Browsery BJ1499.S5 B76 2019




j

Technology, activism, and social justice in a digital age / edited by John G. McNutt

Browsery HM851.T42995 2018




j

Food on the move: dining on the legendary railway journeys of the world / edited by Sharon Hudgins

Browsery TF668.F663 2019




j

Beastly journeys: unusual tales of travel with animals / compiled and edited by Hilary Bradt and Jennifer Barclay

Browsery QL85.B43 2018




j

Pickles: a global history / Jan Davison

Browsery TX805.D38 2018




j

Where corals lie: a natural and cultural history / J. Malcolm Shick

Browsery QL377.C5 S55 2018




j

Dessert: a tale of happy endings / Jeri Quinzio

Browsery TX773.Q55 2018




j

Shadow libraries: access to educational materials in global higher education / edited by Joe Karaganis

Browsery Z286.S37 S48 2018




j

Dying of whiteness: how the politics of racial resentment is killing America's heartland / Jonathan M. Metzl

Browsery RA563.M56 M48 2019




j

The desert and its seed / Jorge Barón Biza ; translated from the Spanish by Camilo Ramirez ; afterword by Nora Avaro

Browsery PQ7798.12.A678 D4713 2018




j

The scientific journal: authorship and the politics of knowledge in the nineteenth century / Alex Csiszar

Browsery Q223.C85 2018




j

Survival math: notes on an all-American family / Mitchell S. Jackson

Browsery E185.86.J332 2019




j

American advertising cookbooks: how corporations taught us to love Spam, bananas, and Jell-o / by Christina Ward

Browsery TX643.W37 2019




j

Seventeen / Hideo Yokoyama ; translated from the Japanese by Louise Heal Kawai

Browsery PL877.5.O369 K8713 2018




j

How to understand your gender: a practical guide for exploring who you are / Alex Iantaffi and Meg-John Barker

Browsery BF692.2.I26 2018




j

Black girl baking: wholesome recipes inspired by a soulful upbringing / Jerrelle Guy, founder of Chocolate for Basil

Browsery TX763.G89 2018




j

More with less: whole food cooking made irresistibly simple / Jodi Moreno

Browsery TX833.5.M674 2018