Essential Image Optimization is an free and online eBook by Addy Osmani:
Images take up massive amounts of internet bandwidth because they often have large file sizes. According to the HTTP Archive, 60% of the data transferred to fetch a web page is images composed of JPEGs, PNGs and GIFs. As of July 2017, images accounted for 1.7MB of the content loaded for the 3.0MB average site.
Per Tammy Everts, adding images to a page or making existing images larger have been proven to increase conversion rates. It’s unlikely that images will go away and so investing in an efficient compression strategy to minimize bloat becomes important.
Essentially Addy pushes forward two key factors:
We should all be automating our image compression
Everyone should be compressing their images efficiently
Yesterday I’ve tweeted about this one, but it’s too great to not mention here too. It’s the video clip for “Bear Claws” by “The Academic”.
For this video the band has used the lag of a Facebook Live video to their advantage. By doing so, they’ve created a loop sampler. Also note the clever use of the lighting which changes color per “section“, creating a nice visual effect too.
The fundamental difference between await and vanilla promises is that await X() suspends execution of the current function, while promise.then(X) continues execution of the current function after adding the X call to the callback chain. In the context of stack traces, this difference is pretty significant.
The gist is that when using .then(), the JS engine needs to capture the stack trace for future use in case things go awry.
Capturing the stack trace takes time (i.e. degrades performance); storing these stack traces requires memory. 🐌👎
We recently released our newest package called macroable. It contains a trait that, when applied to class, can dynamically add methods to that class. This trait is basically a stand alone version of the macroable trait in Laravel.
It works by leveraging the __call() magic function, and checking if any macro has been registered via the static macro method.
Clever way, unearthed by Inti de Ceukelaire, to getting access to private communications channels (such as Slack) by leveraging the create-by-email feature of issue trackers/the helpdesk of a company.
First target of Init was Gitlab’s Slack channel:
Anyone with a valid @gitlab.com e-mail address can join their Slack team. At the same time, GitLab offers a feature to create issues by e-mail by sending them to a unique @gitlab.com e-mail address.
I tried to join their Slack team using this issue creating email address, just to see what would happen. I then refreshed my issue list and saw the verification e-mails added as an issue to my project:
The freshly added issue contained the magic link needed to join their internal Slack team. I clicked the link to see if it’d actually work — and it did. I was greeted by the list of channels I was able to join.
From there one it’s only a minor thing to dig through the chat history and discover links/usernames/passwords/etc.
The fix is to provide your app users with e-mail addresses using a domain different from your main one (*). Additionally verify all e-mail addresses used to sign up.
Bram.us is the technical/geeky weblog of Bram Van Damme (nicknamed Bramus!), a 33 year old geezer raised in Deinze and living in Vinkt (Belgium) with his son Finn and his daughter Tila.
Professionally — after having worked as a web developer for several years at several web agencies — Bramus became a Lecturer Web Technologies within the study programme Professional Bachelor ICT.
Having worked in education for seven years he – in 2015 – moved on to become part of the team at Small Town Heroes (Ghent, Belgium). Bramus also freelances using the 3RDS moniker.
In his spare time Bramus likes to go Scuba Diving. In 2016 he became a certified PADI Master Scuba Diver. Fewer than two percent of divers ever achieve this rating. Currently he’s studying to become a PADI Divemaster.