Documenting Russian Aggression in Ukraine

Over the last couple of weeks the Ukrainian army has made some incredible advances against the Russian occupying forces, retaking thousands of square miles in the east of the country. Video clips of joyous local citizens welcoming the liberating soldiers have been shared around the world. 360war wants to ensure that images of the damage caused by the occupying Russian army are also seen by Maps Mania… more →
Posted in: Interactive Maps

How to Inject a Global with Web Extensions in Manifest V3

For those of you not familiar with the world of web extension development, a storm is brewing with Chrome. Google will stop support for manifest version 2, which is what the vast majority of web extensions use. Manifest version 3 sees many changes but the largest change is moving from persistent background scripts to service workers. This…is…a…massive…change. Changes from manifest version 2 to version 3 include: Going from persistent background script to a service worker that can die after 5 minutes No use of <iframe elements or other DOM APIs from the service worker All APIs have become Promise-based Restrictions on content from a CSP perspective One function that... more →
Posted in: JavaScript

The Disastrous Growth of Arctic Wildfires

Temperatures in some parts of the Arctic this year have risen as much as 30C. Because of global heating the Polar Jet Stream is slowing down, which in turn can lead to extended punishing heat waves in the Arctic. Another effect of global heating is an increase in lightning strikes in the Arctic.  This combination of extreme high temperatures, slower air circulation, and increased lightning Maps Mania… more →
Posted in: Interactive Maps

Using Google Maps with Alpine.js

It’s been a little while since I’ve blogged about Alpine.js, and I thought an example of integratingGoogle Maps with it would be a good way to continue my path to becoming comfortable with the framework. I imagined it would be fairly simple, but in building a few demos I ran into some interesting issues that helped me learn a bit more about Alpine. Let’s take a look. Raymond Camden… more →
Posted in: JavaScript

Is Havana the World’s Least Sexist City ?

Geochicas has been at the forefront of efforts around the world to reveal the under-representation of women in street names. Their interactive map Las Calles de las Mujeres explores the ratio of streets named for men and women in a number of cities in Spain, Argentina, Mexico, Bolivia, Cuba, Paraguay, Peru, Italy and Uruguay. The Geochicas map now includes an analysis of street names in 32 Maps Mania… more →
Posted in: Interactive Maps

CSS :out-of-range

One aspect of web development I’ve always loathed was working with forms. Form elements have been traditionally difficult to style due to OS and browser differences, and validation can be a nightmare. Luckily the native HTML APIs added methods for improving the form validation situation. With input[type=number] elements, you can add min and max attributes. Those attributes are great but the browser doesn’t display distinct error styles if those numbers are out of range. Luckily we have :out-of-range: /* matches when number is not within min and max */ input[type=number]:out-of-range { border-color: red; } Thanks to CSS :out-of-range, developers can style input elements based... more →
Posted in: JavaScript

New Maps of Westeros & Middle-earth

Fans of fantasy fiction must believe that they have sailed across the Great Sea and arrived in the blessed lands of Valinor. With both House of the Dragon and The Lord of the Rings: The Rings of Power currently airing on subscription tv we really are living in the Blessed Realms. One of the many highlights from the first two episodes of The Rings of Power have been the sumptuous and sweeping Maps Mania… more →
Posted in: Interactive Maps

Monitor Events and Function Calls via Console

Despite having worked on the very complex Firefox for a number of years, I’ll always love plain old console.log debugging. Logging can provide an audit trail as events happen and text you can share with others. Did you know that chrome provides monitorEvents and monitor so that you can get a log each time an event occurs or function is called? Monitor Events Pass an element and a series of events to monitorEvents to get a console log when the event happens: // Monitor any clicks within the window monitorEvents(window, 'click') // Monitor for keyup and keydown events on the body monitorEvents(document.body, ['keyup', 'keydown']) You can pass an array of events to listen for multiple... more →
Posted in: JavaScript
1 55 56 57 58 59 190