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

new survey found that 34% of WFH respondents say they would rather quit than return to a full-time office job.

HN Comments

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

    • excellent article by Robert Nyman and Pete LePage

  • 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.

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”.