Often logging libraries allow you changing the logging level at runtime, without restarting or recompiling the application, as well as turning logs or off at runtime for different parts of the application. They let you organize logging levels so that when, for example, you turn the level to INFO in one part of the applications, all of the connected code also gets its own log level turned to INFO and you can define which parts of the application should change their log levels in sync. There's also performance considerations, often log libraries claim to implement tricks so that logging is supposed to be faster than naively writing strings to a file.
My impression is that in China it varies a lot by industry and location. Even in Shanghai, I've come across offices closing at 4PM with a 2 hours lunch break.
Docker images package the entire environment that an application needs to run, but to do that they contain precompiled software for a specific CPU architecture, so they can't help you jump across architectures. Not even a full VM allows that by itself, for running software for a different architecture you need emulation.
One issue is that your comment sounds a bit hyperbolic. For example, China criminalizes thought? It certainly does not criminalize thought as such.
About 'working together with our allies'... Some will argue the 'West' has developed a somewhat abusive relationship with a lot of the world over the last two hundred years. It's not surprising some would look favourably to a competitor, if only to take advantage of that competition to make a better deal for themselves.
Finally, if other parts of the world develop a more advanced IT industry instead of China, how does that preserve Western developers salaries? Are the Chinese uniquely inclined to work long hours for low salaries? Or are you implying that the 'West' would need to prevent nations under 'our sphere of influence' to develop an IT industry so developers in the 'West' can continue to receive their current salaries?
I believe an example of where binding differs from assignment is if you define a function which references a binding in the outer scope, the create a new binding with the same name in the outer scope, the value inside the function does not change:
a = 1
f = fn -> a end
f.() # returns 1
a = 2
f.() # still returns 1
I don’t know the context of Virginia Woolf’s comment, but in the case of fiction, I don’t think that a book about war is necessarily more important than one about facial hair grooming. Even in non-fiction, is a shallow and sensationalistic book about war necessarily ‘important’?
Imagine a CSV parser written in Java. I can imagine quite well that it would rarely need updates, as CSV does not evolve and I find it reasonable to write such code with no external dependencies except the Java standard library, which almost never breaks backward compatibility.
AWS needs to separate one customer’s lambda executions from another’s. When you deploy Docker, isolation is guaranteed either because you do it on an underlying dedicated VM, or you give the Docker image to something like Fargate.
You might be interested in mavo (https://mavo.io/): it also lets you produce interactive pages by adding some keywords to HTML, but the primitives offer higher level functionality (e.g. a few attributes get you a full WYSIWYG editor)
I might be wrong, but I have the definite impression that semantic CSS was invented mainly by people working in publishing, so typical semantic class names map to content types you would create in a CMS. The developer mainly controls the CSS and users generate most of the HTML. Developers who work on app-like experience might be less interested in this style of semantic CSS because users are extremely constrained in how they can influence the layout anyway.
Lately I’ve been intrigued by https://every-layout.dev/ and so-called ‘intrinsic’ CSS approaches. It’s like having utilities for whole layout chunks, instead of single properties. I would describe it as trying to extract whole atomic layouts like ‘sidebar’, with CSS rules that make the objects behave ‘well’ no-matter what the surroundings are. In comparison, semantic CSS can be too tied to single page elements (main__header) while utility-first in a sense is not ambitious enough (because it limits atomicity to single properties).
I feel this article undermines a stand for ‘democratic freedoms, rights and the rule of law’ as it conflates the former with abiding by ‘Western’ rules in international trade and politics and even respecting US military superiority (!).
I doubt that’s true. Even I could make sense of the sentences. Of course it takes some time, but I found it quite clear most of the words are based on either French, Latin, English, German or Italian, and if you know these languages and you think a little bit about them, you can start making out a meaning and I doubt it’s random. There’s even a plot of sorts.
I suspect many native speakers would have difficulty too, because of the age and style of the poem. For me, the difficulty is part of the enjoyment of studying older texts, teasing out the meaning gives me a mental thrill similar to coding.
From what I’ve gathered, both Next.js and Sapper.js are less ambitious than Meteor and Derby. They require to write your own data access code by hand, by making HTTP requests or importing whatever server-side JavaScript libraries you need, while Meteor and Derby tried to provide the same model API on the server and on the client. Maybe the model API (and the fact that you were almost forced into storing everything in MongoDB) was the greatest limitation.
It’s an interesting idea. From the case studies you’ll find on the web, it looks like Progressive Web Apps want to play minimal bootstrap time as as card against native apps, but it’s true that re-use of existing web know-how could be enough arguments in their, although native app developers are getting almost as easy to find as web developers these days.
Some time ago, another HN user commented a lack of good async support in languages and libraries caused some of the issues with early RPC. With more languages introducing futures and promises as return values or asyncronous functions, don’t you think we might finally have the tools to express that unreliability in a simple function call?
I don’t know yet because I haven’t had as much experience with other solutions as with REST. I am curious about Thrift and Protocol Buffers. I have worked once on a project migrating from REST to Protocol Buffers for an internal API and it noticeably improved performance, but code complexity remained more or less the same.
Not all APIs are public though. You could picking a communication protocol among services within a single technical organization. In that case you can decide to train everybody to use Thrift, for example, if the pros are strong enough.
Maybe REST was the best protocol for the great public API explosion of the past decade, where startups wanted to expose a public API to anyone on the internet. The most important requisite was that the most developers could access the API with a minimum of technical knowledge and tools, and the APIs were simple. I am less and less sure that REST is the best solution for communicating between internal services, which know a lot about each other and where you can spend time onboarding developers on a specific techniques and stack.
Of course, but it’s hard to argue that because a trade is advantageous to you, you cannot attempt to create the conditions where it’s even more advantageous. And in negotiations, you should strengthen your BATNA (best alternative to no agreement) and that of the other party’s. So you could see class struggle as a strategy to improve the starting positions in a negotiation, if that makes you happier :-)
Losing a job might in some cases be worse than going to jail. At least in jail, someone might be feeding you something. And you could opt out of WeChat just as you opt out of Facebook.