Web Excursions 2021-04-08
The post-pandemic world: 34% of remote workers say they'd rather quit than return to full-time office work
A new survey found that 34% of WFH respondents say they would rather quit than return to a full-time office job.
HN Comments
I’m not sure this is a revolution or just that plenty of people have no real attachment to their employer.
At any given point, half of workers are contemplating leaving. https://www.cnbc.com/2019/08/27/47percent-of-workers-are-con...
The typical office worker spends a half hour searching for new jobs at work every day. https://www.inc.com/melanie-curtin/in-an-8-hour-day-the-aver...
Screw it, I’ll host it myself
dr-smooth:
The problem I have always had when building elaborate home server setups is the "set it and forget it" nature of the systems I've installed bites me in the ass.
when something finally does go belly-up, I can't remember how I set it up in the first place.
These days, I design everything for home with extreme simplicity coupled with detailed documentation on how I set things up.
Docker has helped tremendously.
use standard docker images provided by the software developer with no modifications (maybe some small tweaks in a docker-compose file to map to local resources).
Anyway, my advice is
to keep the number of customizations to a bare minimum,
minimize the number of moving parts in your home solutions,
document everything you do (starting with installing the OS all the way through configuring your applications),
capture as much of the configuration as you can in declarative formats (like docker compose files),
back up all your data, and
just as importantly, back up every single configuration file.
j1elo:
And don't forget that now maybe you make everything work, but in two years time your setup won't be reproducible,
because chances are the original images are not available any more, they got deleted from Docker Hub some months after you used them.
ryukafalz
Yup, the sibling comments mention a few alternatives (FreedomBox and Yunohost)
but Sandstorm is really the only one I've ever used that makes me confident in the state of the system long-term. Let me elaborate on that.
FreedomBox and Yunohost use more traditional software installation mechanisms; they'll install packages, run scripts, etc.
They just add (sometimes very nice) UI around it.
While that's great for some things, after a while things can get a bit messy.
In Sandstorm everything is sandboxed and isolated from the rest of the system. Everything. Backing up or restoring an instance of an app is a few clicks in a web interface.
Help us test payments in Signal
If you’re in the United Kingdom, you’ll see support for Signal Payments – a new feature that enables you to send and receive privacy focused payments as easily as sending or receiving a message.
The first payments protocol we’ve added support for is a privacy focused payments network called MobileCoin, which has its own currency, MOB.
Signal Payments makes it easy to link a MobileCoin wallet to Signal so you can start sending funds to friends and family, receive funds from them, keep track of your balance, and review your transaction history with a simple interface.
As always, our goal is to keep your data in your hands rather than ours;
MobileCoin’s design means Signal does not have access to your balance, full transaction history, or funds.
You can also transfer your funds at any time if you want to switch to another app or service.
Et tu, Signal?
Allegedly the controlling entity prints 250 million units of some artificially scarce trashcoin called MOB (coincidence?) of which the issuing organization controls 85% of the supply.
This token then floats on a shady offshore cryptocurrency exchange hiding in the Cayman Islands or the Bahamas, where users can buy and exchange the token.
The token is wash traded back and forth by insiders and the exchange itself to artificially pump up the price before it’s dumped on users in the UK to buy to allegedly use as “payments”.
All of this while insiders are free to silently use information asymmetry to cash out on the influx of pumped hype-driven buys before the token crashes in value.
Did I mention that the exchange that floats the token is the primary investor in the company itself, does anyone else see a major conflict of interest here?
The sad part of this entire project is that it launched in the UK—
likely because it would be blatantly illegal in the United States—
where here retail transfers are ubiquitous, instant, and cheap.
The digital sterling held at our high street bank or mobile banking app works very well as a currency,
and nobody needs or wants to buy a dedicated trashcoin for every single app on our mobiles.
This is all just bringing us back to some stone age barter system for no reason.
How to Identify Browser Bugs | PSPDFKit
When our web applications don’t behave like we expect, how do we know if we made a mistake when writing our markup, styles, or business logic? Or how do we know if it turns out to be something that isn’t playing out as it should on the underlying rendering engine or JavaScript engine?
Reproducing Across Browsers
The first step is to try and reproduce the behavior across multiple browsers.
Isolating the Problematic Behavior
work on a small test case, isolating the DOM elements, CSS rules, and JavaScript code relevant to the problematic interaction.
The less code needed to trigger the wrong behavior, the better.
start simplifying the interaction by extracting the code piece by piece and see if the bug is reproduced.
If it’s not reproducible yet, try adding additional elements until you trigger it.
unable to trigger the bug even after adding multiple parts of the interaction
take a deep look into your architecture.
might be a sign of multiple parts being tightly coupled
Globals, shared mutable state, and high indirection
Once you have a small enough test case ready, it’s time to go through different browsers again and check if the behavior is still inconsistent across them.
You have an isolated and easy-to-reason-about base code that you can use to find a (hopefully temporary) workaround
You can use the test case to file a bug report in the bug-tracking system of each browser.
Determining Expected Behavior
identify exactly what the expected behavior is.
make a note about how it’s working correctly on other implementations.
Usually, a bug is acted upon much more quickly if it’s a regression. To find out if this is the case, you can rely on tools like BrowserStack to try an older version of the browser.
perhaps the presumably wrong browser is actually the one that works like it’s supposed to
The way to confirm the expected outcome is by taking a look at the underlying specification that defines the feature in question.
Filing the Bug
Official bug trackers
There’s an existing bug report
you can contribute to the discussion, providing your feedback or additional insights into how the bug behaves.
Here are some key things your bug report should contain:
A brief but descriptive title
The test case
Steps to reproduce the issue
The expected behavior
A list of affected browsers with their version(s) and platform(s)
Whether or not it used to work on an older version — if it’s a regression, try to specify the latest working version number
A list of browsers in which it works as expected
Finding a Workaround
An ideal workflow would involve modifying the test case so that the bug is no longer present, and then going back to the real application and applying the same fix there.
make sure to document the need for the hack properly and include a link to the associated browser bug. Comments are the perfect solution for this.
in the future, verify if the fix has shipped and if you no longer need to support the previously affected browser version.
only apply the workarounds on the browsers that aren’t working as expected.
use a dependency like Bowser,
parse the
navigator.userAgent
string with something like what this Stack Overflow answer recommends, orrely on duck typing like this other Stack Overflow answer describes.
Programming is hard
Programming is hard, programming is not for everyone, and for the time being everyone might be able to do it, but most definitely most should not
Programming is accessible
No other science is as accessible as computer science, and most of its proceeds happen out in the open
there are things that can be done in the literal first 30 minutes of your contact with the programming field.
But just because one can access something easily that doesn’t make it easy.
Programming is a peculiar combination of creativity and hard science; and nobody ever said that creativity is „easy”. Some things come easy to some people, some things don’t.
Some programming things are easy
What is easy, however, is different from person to person
Most programming things are hard
Here’s the truth: if one starts doing anything more complex than a simple web page, or a simple demo program, things become difficult, and the more pieces are put together, the more complex and overwhelming the task becomes.
Solving programming puzzles are hard especially when they’re not meant to be puzzles.
if treated properly, most programming things are hard, even things that might seem simple. That is because you have complex pieces that you have to put together and to make them work. And the hardest part is when one has to write the complex pieces from scratch.
there is no programmer that hasn’t spent a full day on a bug that was fixed by something silly, like adding a ; character, or changing a < to a <=.
Imposture and the positivity racket
The positivity, the „it’s easy” racket doesn’t tell you a thing about the moments when things are incredibly hard, when diligent work and steady effort is required.
where there’s plenty of beginners, there’s plenty of people taking advantage of them.
some of them are not even aware that they do it, they are just instinctive hustler that oversell their own skills.
you need to find the label that flatters the audience, and apply it in an unmistakeable way to your audience.
the label „senior” is sought for by people who want to be seniors in their early 20s.
„Don’t let anybody tell you otherwise” is a simple, yet effective way of enlisting the audience in a you-against-the-world mindset.
Gatekeepers is also a good word to use, as the discourse around privilege and people keeping things away from the audience is catchy.
The main point is to be vague in the content of your communication, so that it’s complicated to refute that communication.
„Programming” is a label, and like any glory-labels, this one makes people, especially the incompetent, act very defensively
The illusion of „I can do what you do”
There are full toolkits, libraries, or programming languages (and even commercial offerings of that) that rely strictly on you searching the answer for their problem. The documentation is not meant for users to read, it’s for search engines to index and for people to use a search engine on that.
„programming is all about mastering Google/SO searching” is true and wrong at the same time.
Stack Overflow is a huge crutch that stops you from walking on your own
For a beginner, the syntax of a loop is the main obstacle in achieving the ability to count to ten, for an experienced developer the syntax is the thing that slows them from applying an operation to an collection of filtered data.
„Programming is easy” holds people down
Positivity doesn’t help you when you actually need help. The only thing it can do is offer you courage, but what do you do with unsubstantiated courage?
Positivity is infallible because positivity was never put to test
tell a beginner something like this: „when it comes to programming, some things are easy, and some things are hard. If you’re patient enough, in time, the hard things will be exciting, and the easy things will become harder”.