Christian Heilmann

You are currently browsing the Christian Heilmann blog archives for January, 2020.

Archive for January, 2020

Quick developer tools tip: simulating dark/light colour mode

Thursday, January 30th, 2020

Newer operating systems come with a dark/light mode option and also a “prefers reduced motion” mode. This also affects our products and we should test them in these modes to make sure there is no glaring problem. There is also a high contrast mode in Windows which is an accessibility feature that should be on our radar to test for.

Now, to avoid having to change your whole OS to test for this, browser developer tools have simulators for these modes.

In Microsoft Edge, these are in the “more tools” section.

Here’s the journey;

  • Click the “...”
  • Select “More tools”
  • Select “Rendering”
  • In the lower console, scroll down to “Emulate CSS media feature prefers-color-scheme” and toggle.

Here’s a screencast showing it in action .

If you prefer screenshots of the journey, here they are:

Finding the rendering menu in Microsoft Edge devtools

Colour scheme emulation menu in Microsoft Edge devtools

Now, on a personal note, I think these are kind of hidden and I am not surprised people don’t know about that. Given that we are also considering extending these to add more emulations (like high contrast mode) the question is what we could do to make this easier.

One way is to use the keyboard shortcuts. You can open the developer tools and press Ctrl/Cmd + Shift + P and type “dark” or “light”. Make sure to select the rendering parts of the menu though and not switching the theme of the devtools themselves.

keyboard access to simulator

This is not a Microsoft Edge specific functionality, any Chromium based browser has this.

Do you have any idea how to make this even easier? Please report issues you find using the feedback tool in the developer tools:

Feedback mechanism in developer tools

You can also always ping me @ codepo8 or the official Microsoft Edge Devtools account @ EdgeDevTools on Twitter.

Contributor performance considerations

Thursday, January 23rd, 2020

Node modules folder

It was around 2005 when I sat at my job and didn’t like it. I was head of web development at an agency in London that covered huge web sites and government portals. The pay was great, my team was top-notch and the products interesting. What I didn’t like was that my computer was a mess. I dealt with various products each with their own stack. Early .NET (with state stored in a hidden form field) here, Java Spring there, PHP on another. Flash generated from Apache Turbine from XML to use XSLT to build the HTML fallback. Everything was complex. I had no idea what all these files on my machine were and the hard drive was always 95% full causing blue screens.

There and then I opted to even more moving from random things on the backend to a standardised front-end. It makes sense to know what you use and to leave a lot of the weird things to the browser. It is an exciting task to cover the basic use case and enhance with more capable environments to run your code in.

Fast forward to now. We have won on the web standards front. We’ve never had more capable browsers. Most are evergreen and based on open source projects. The web is a roaring success. Open Source is a roaring success. Want to build something cool? Use an open source, web technology based editor. Host it on a Git based platform that allows people to contribute and you to document it. Check amazing documentation with contributors from huge corporations. And learn what’s possible and what may yet not be ready.

Things couldn’t be simpler, right? Well, yes, but we don’t embrace this enough.

Yesterday I found an excellent repository listing useful resources. I had written a few that fit the bill of this project. So I thought I’d go and contribute them. The project was on GitHub and there were clear and friendly instructions how to add mine.

So far, so hoopy. I forked the repo, I pulled the project. I ran the NPM command to get a CLI wizard to add my projects.

Then the project pulled down 670MB of dependencies. This included a full build of chromium to create a screenshot of my projects. Then my node/NPM setup needed updating as I had it left for a few weeks. Another few megabytes and install steps.

Now, I was in the Microsoft office when I did that, so – hey, whatever. Even at home I have 250mbit downstream, so that’s OK, too. My Mac has a 1TB hard drive, so no worries there…

But here’s the thing. For generating a 10 line JSON object that describes a web resource I spent all this time. I have truckloads of code on my computer I have no idea what it is, how safe it is and if I should keep it up-to-date to be safe.

Imagine me being a much younger, much more eager and gifted developer in a different place. A country where connectivity is at a premium, slow and costs an arm and a leg. An eager person that wants to prove themselves and has a lot to contribute. I can’t. I won’t. And I’d feel terrible for not doing so. I’d feel like I don’t belong. I’d feel like I am not good enough – no matter how much skill I have.

Back to 2005. I have no idea what’s filling up my hard drive. Complex setups are in the way of me contributing. I am not happy. That’s what anyone not as privileged as me would feel like.

We should be better. There is nothing wrong with trying things out. We should use experimental and complex technologies on fun projects. Not much is at stake, they are good for us to play with things.

But – we should not put up random barriers for people who could have fun with us and help us along the way. A small part of us puts a lot of dedication into improving the performance of our projects for our end users.

When you go open source, developers are also users. We should put as much effort into making it easy and fast for people to contribute to our projects. Unless we do so, we will not have any diverse and inclusive community. Let people show their skills – don’t force your devops needs unto them.

Swagged out

Thursday, January 9th, 2020

old swag T-Shirt exchange table

I attend a lot of conferences and have done so for the last ten years or so. I just moved and had to pack and unpack a lot of things I accumulated over the years. Sifting through piles and piles of T-shirts, hoodies, stickers, connectors, leaflets, tote bags, bottle openers, phone chargers, memory sticks, lanyards and so on made me think.

I understand that I am in a massive position of privilege as someone who can attend a lot of events and speaking at them. I am also aware of how cool it was to attend my first event (PHP conference 2004, Amsterdam) and get a PHP plushie elephant, T-Shirt and stickers. I also understand that for companies giving out swag at events is a good marketing strategy. Sensible swag is a great thing. I do use my totes to go shopping. Some of the power plugs and phone chargers I got at an event saved me from running out of battery.

The problem though is that a lot of the things you get at events don’t have a long time until they are obsolete. I have a few powerbanks that are woefully under-equipped for today’s mobile needs. I have charger cables that don’t connect to any of today’s electronics.

Often there is a hoarder mentality taking over and when we go to events, we grab as many things as we can. Once the rush ebbs down we sit at home in our hotel room looking at the loot and wondering what the hell we did take this for. When I go to conferences I tend to make it worth while by adding a few days for office or customer visits. It is depressing to go through a big hotel and see cleaners throw away piles of branded things from the conference the day before. We should do better.

Now, I am not a conference organiser. I organised one and that was hard enough to avoid being wasteful. So I am not putting the blame on people as many are want to do on the internet. There may be valid reasons for things being the way they are. Talking to conference organisers I also heard that attendees expect a few seemingly superfluous things. Without a T-Shirt you’re never going to wear again it wasn’t a good conference, right?

There are a few events that do better. I am a big fan of Beyond Tellerrand. Marc, the organiser makes sure of a few things each time:

  • That the T-Shirt looks great and is something designed for you to wear outside of our little world.
  • That swag given out by conference sponsors are sensible, reusable things.
  • That there is a bin for swag that people don’t want on the way out
  • That you can leave your lanyards for re-use
  • That there is a sticker exchange table. If you have some left over, you can bring them and someone who will get excited about them can take them

A few other conferences have taken on similar approaches. Halfstack has a pub quiz at the end of it where prizes are often swag from older editions or other conferences.

Speaking of which, there is a real issue with re-use and what to do with swag you have. Most clothing collection points are not that interested in conference T-Shirts as they don’t keep the homeless that warm. And most second hand stores don’t want anything with a company logo on it that isn’t a clothing brand. I used to give out lanyards to local schools for the kids to keep their keys on. This also ceased as schools don’t want branded things.

When I left England, I did a goodie table at State of the Browser with old conference and company T-Shirts. This went down well, a lot of attendees took them away and marvelled at the design of 2006 and Flickr shirts.

Old T-Shirt table at state of the browser 2013

This week I went to the office and made a swag table for people to take what they fancy.

swag table at office

This also works, but it is all damage control.

I started doing a few things that may also work for you:

  • I bring my own lanyard to conferences.
  • I take a photo of my badge and keep it there for recycling (if the conference offers that)
  • I don’t take shirts unless they are really cool. I do ask around the office if people want some when I go to a conference though.
  • I don’t take goodie bags without checking first what’s in them. Most of the time I skip them. Again, I am privileged. This is not an attack at people who enjoy their bags for the one conference they attended.

This may not save all the issues of the planet. But the way we as conference attendees act can inspire organisers to offer recycling and sponsors to think harder what to put their logo on.

I feel weird about this. I know people put lots of effort into giving us extra value at the conferences we attend and for some attending that tote bag or backpack is the best thing ever. To me, however, I don’t want to have more things I don’t need and I can’t give to others. So don’t be offended if I skip on the goodie bag or the speaker gift, I don’t mean to offend, I just want to live with less things to carry.