1,295 karma · joined January 4, 2020
Things like cutting off content that overruns the screen size, without giving any indication that this has happened, and also hiding scrollbars, so as to make it impossible to navigate to that content if you have neither a mousewheel nor a gesture-capable device. -- Not saying that this is what Alexandria is doing; just cracking a joke about modern designs with "minimalist" inclinations in general.
Sure, if you're working on medical devices or software controllers for devices in vehicles or nuclear reactors or whatever, but, as a fraction of the software industry, that's tiny. I don't have hard numbers on this, but you can look at popularity of programming languages as a proxy. Most software "engineers" do JavaScript or Python, two languages you would never ever use for such things.
Most software is a form of entertainment with a small amount of usefulness sprinkled in, or doing things that could, in principle, be done with paperwork.
My personal experience has been that it's a pain to implement this as soon as you have strong typing and try to avoid "unsafe" casts. For example, in modern Java, if you have some kind of a Container<T> over elements of type T, and a matching ContainerIterator<T>, you will want some way in each of the type declarations to refer to the other type declaration, so you need cyclical imports.
If you look at it through the lens of a dynamically-typed language like Python 3.4 or Lua, the problem just disappears. This is the case to a lesser extent even for Java before it had generics, and collections were just collections of Object, and you used "unsafe" casts all the time. I am finding this practice not the slightest bit limiting in Lua, nor do I get the feeling that the readability of my code suffers in any way at all. (Rather the contrary, as I've pointed out before).
...see sibling comment, where the commenter does seem to imply they rather like it.
By "real" complexity, I mean to exclude complexity for complexity's sake, or complexity that's a side effect of a piece of software being concerned with itself and its own structure rather than with solving any problem that exists outside of it. -- We can surely all agree that the latter is bad.
Academic prototypes, for example, tend to solve highly complex problems with small codebases, but the problems are often contrived or they are tiny pieces of systems that would have to be much larger to be of any use.
Software systems you encounter in your run-of-the-mill software engineering business often have huge codebases, but the large size is not due to the fact that there's any problem there of any real complexity. The system just needs to solve trivial problems, and there are just a lot of them.
But you can certainly have systems that need to solve many problems and some of those problems have high intrinsic complexity. In such a scenario, it's important to recognize that there's a part of your system that's "extra special" due to its complexity, and needs to be approached in a way that's different from how you approach most of your engineering. You might need to write a library in a literate programming style, and then use that library from your other code, which isn't written in literate style. Engineering organizations are seldom able to have that kind of flexibility. The opinion you're likely to get is "we don't do literate programming here". The outcome is that such organizations are just not capable of writing such systems, because a system is only as good as the worst job you've done at solving any of the problems it raises.
I'd also like to point out that you're guilty of a bit of a strawman argument there, because all I did was point out a technique I sometimes find useful, and you responded as if I was advocating applying it "irrespective of costs and drawbacks" by pointing out that this often ends up as "crimes against software".
A well-written piece of code that actually solves a complex problem is a demanding mistress and doesn't appreciate the "who has time..." attitude.
Among the software engineering good practices that I engage in, I'm finding this to be one of the highest bang-for-the-buck ones.
For example, literate programming is a thing that many people believe is worth the effort, at least in certain scenarios and at least for certain parts of codebases: But, if you can make your codebase more readable without requiring additional prose to be written, then that's a comparatively high bang-for-the-buck alternative.
In practice, linear structure doesn't need all that much updating at all: You may have noticed that I don't use strictly sequential numbers. Early in the life of the codebase, I will generally skip lots of numbers, so that I can fill in the gaps with code that comes later. Mostly, all it really takes is to be intentional about where in the linear order to insert new code.
Also, note that it's still useful, even if no one ever goes on a mission to read the codebase in its entirety. If the codebase as a whole has a linear structure, that also imposes a linear structure on any subset of it. If you have five sourcecode files that are somehow pertinent to something you're doing, you immediately know the order in which to look at them.
Generalizations like this are just so bad. My biggest beef with design/"product" folk in the tech world is this thing that many of them do, where they justify their existence as a group of people and a business function by bad-mouthing developers.
I even have a lua codebase where I've linearized the sourcecode files into a particular order. The layout looks like this:
01_foo/
03_foo.lua
04_bar.lua
15_whatever.lua
02_bar/
22_whatever.lua
56_something.lua
It has always bothered me in codebases that they don't have a "beginning" and an "end", and therefore it's difficult for a reader to know where to start when they just want to read the codebase.So, my approach is to impose this linear order and only allow code that comes later to depend on code that comes earlier, never the other way around. This way, you can read through the code rather easily. As you look at any piece of code, it will only depend on code you've already looked at, so you don't have to be constantly jumping through the codebase as you're reading.
I've also found that failure to correspond to a linearizable dependency structure is a "code smell", and that, as I try to eradicate that code smell, I frequently end up with code that's better in all kinds of ways.
Or is it about the disturbance caused by other people using their phones? ...or maybe to have a plausible story to tell the people who tried to reach you? ("Sorry you couldn't reach me at the weekend, boss, I was at this island in Finland where ...").
But my original argument still debunks PBS's claim that sorting and free market economics is somehow the problem.
I still feel like I'm not personally at fault in my role as a consumer if I use plastic and take it to the recycling center assuming them to deal in good faith.
...well, I use the term "recycle" very loosely. If it's disposed of responsibly, then fair enough. That presumably includes burning, as long as you do it in a way where you don't just blow the toxines into the atmosphere, and, presumably, wherever you generate heat, you can at least get some electricity out of it.
It just seems to me like the PBS article is strawmaning the pro-plastic argument by making it look like the only way you can have plastic at all, is if you're cool with it ending up in landfill.
The logic seems to be this: Plastic is extremely cheap to manufacture from primary resources, therefore recycled plastic could never compete in the marketplace with newly-made plastic, therefore there's no demand for used plastic as a resource in making recycled plastic, therefore used plastic will end up in landfill. Compare that to textile which has a much larger economic footprint and costs more to produce while being more durable. The previous argument about the primary market crippling the secondary market doesn't hold for textile. After all, second-hand clothing stores are a thing, and probably are a force for good.
But people mistakenly take away the message "textiles are good, plastics are bad". The economy is starting to reflect that consumer sentiment, and you're seeing plastics replaced by textiles in lots of scenarios to reach the "green consumer". Is that a net-positive, environmentally speaking? Probably not. If the break even is at 130 uses of a cotton tote bag, and assuming one shopping trip per week, we'd have to, on average, see nearly 3-year-old tote bags being used for them to make sense. I don't think that's what I'm seeing around me, I'm seeing mostly brand-new tote bags and/or people sporting a different one every day of the week because they have dozens at home.
What I'm also seeing: "Green" consumers are mostly just "rich folk", and their greenness doesn't stop them from engaging in their "rich folk" behaviours. They are buying more stuff, and replacing it more frequently, plus they are paying higher prices to have the stuff they buy be made from more durable materials, because durability gives a material an environmentally-friendly image while low cost gives materials a "damaging for the environment" image.
There is a very simple solution to this dilemma: Dispose of plastic responsibly despite the cost. It's not like nothing could ever get done in the world if free market incentives didn't force them to get done. Covid shutdowns got done. Some things are just a matter of principle. Make this a matter of principle. Pay for what it truly costs to dispose of this stuff out of your own pocket. If that means that plastic is still more economical for you to use for certain applications than alternatives, then by all means keep using plastic.
Also, it actually says "All used plastic can be turned into new things, but picking it up, sorting it out and melting it down is expensive." Later down in the article: "Recycling plastic is 'costly,' it [the report] says, and sorting it, the report concludes, is 'infeasible.'"
So, it does sound to me like there's an important distinction here where recycling plastics (or, at least, disposing of it responsibly even when that's costly) is possible, it's just not happening.
Now, my own perspective: I live in Austria and Germany, where governments have been doing collections of plastic trash separately from residual household waste since the 90s, and are asking households to pay steep prices for disposing of residual waste, but not for disposing of plastic. When I lived in Bavaria, disposal of plastics worked through recycling centers, where people had to separate their plastic waste into half a dozen containers for different kinds of plastics under the watchful eyes of employees educating consumers on what goes where, and doing that kind of separation was the only way you could dispose of plastic at all, without paying the very steep price (effectively a fine), for disposing of it through residual household waste. -- There are a lot of recycling centers in Bavaria, usually no more than 10 minutes' drive from where you live, even if you live in a rural area. And they are packed on a Saturday. Nobody can tell me that people aren't using them.
I'm having a hard time imagining that the government would ask households to go to all that trouble and then just send it to landfill. They'd have to make sure to keep it a secret, because people would rightly be angry if they knew this, and they'd have to pay for it through back channels of sorts. This kind of scandal, while it seems possible, hasn't actually broken yet, to the best of my knowledge, over the course of the several decades that this practice has been ongoing an in any of the governments that have been doing this, which are many.
So, my working assumption until this particular scandal actually breaks, is that alarmism coming from environmentalists in the U.S. is really about poor waste-disposal habits on the part of the American consumer, and not some kind of conspiracy by big oil that governments are in on, to make us believe that plastic is anything other than the devil.
For example, according to a very entertaining little book I have [1] that debunks greenness-myths, you need to use a cotton tote bag 130 times before you reach a break even in terms of economical footprint with using plastic shopping bags. Ironically, people's homes are filling up with cotton bags now, because you keep getting them as advertising gifts by every brand that's trying to brand itself as green, and you're often forced to buy them when you're at the supermarket and forgot to bring yours, and they've run out of paper bags and are not offering plastic for fear of perceptions of un-green-ness.
[1] "Is it really green?" by Melissa Hemsley
Indie acts have often gravitated towards CD-R rather than vinyl, because they can burn them at home in small quantities. But for mobile use, a walkman actually beats a discman, in my opinion, due to its smaller size. And, not being digital, cassettes have a kind of built-in "soft" DRM feature, in that reproduction is possible but goes hand-in-hand with a loss in quality. The mixtape / pirating / bootlegging scene helps spread the message about an act, and, if someone truly likes the music, they might go back to the original artist and buy an "official" prerecorded cassette where they get better sound quality, and a reasonable level of expectation that the money actually reaches the artist to support them.
With Spotify, for example, I have no idea, as a consumer, if I listen to a lot of small acts, how much of the money I pay every month to Spotify actually gets into the pockets of those acts, or whether they're just on there because they got arm-twisted into being on the platform because of platform power.
There's a lot that's good about the medium, and that goodness comes in the form of simplicity in engineering, which is a virtue in its own right.
[1] https://en.wikipedia.org/wiki/Cassette_tape#21st_century
...yeah, I was wondering that too. This seems like a job for a Gentoo system, compiled from the ground up with "-march=native". Would love to know how that would turn out performance-wise, in comparison to Windows.
Knuth's reasoning seems to be that higher-level languages go in and out of fashion all the time, but hardware and its associated assembly is quite sticky, so it's more "timeless". It's also a smaller set of primitives, so less overwhelming for the learner.
MMIX assembly is easier to understand than x86, having been designed specifically with learners in mind, and GCC even has a backend for MIX, so you can write C code and see how GCC would translate it to MIX assembly.
If you gave the service away for free and allowed people to be anonymous, there would be no private data that needed managing. In the 90s, a major proportion of websites on the internet had forums like that, which people set up on a weekend (think phpBB). What the hosting provider charges is small change.
If you do charge, you suddenly have sensitive data to manage, either eating into your profit or creating a liability for you and taking away from people's privacy if you don't do it right. So much so, that it might even generate a loss at 50 bucks per year.
Subjectively, I am under the impression that, in the enterprise desktop space, Linux is a more serious competitor to Windows than mac OS is.
For example in public administration: At one point the city government of Munich had replaced over 12000 desktops from Windows to Linux [1], and you keep seeing ideas to do similar things pop up in political party manifestoes and position papers like [2].
It is also not uncommon for large universities and research facilities to run on Linux.
Meanwhile, an enterprise running hundreds or even thousands of mac OS devices is something I've never heard of.
I think, in the past, enterprises were a bit more locked-in than they were now because they ran Windows software that they custom-developed, or off the rack but very niche and available for Windows only. But with the trend over the last two decades having gone towards writing that kind of software as web-based software, I think that element of lock-in is gradually but steadily decreasing as well.
The problem is that, once this competitive threat against Microsoft reaches critical mass, it's a bit too easy for Microsoft to counter the threat by simply backpaddling on the trash. In the meantime they just want to milk the cash cow as much as they can possibly get away with.
De-trashing an OS is easy. Meanwhile, they are working hard to make sure that Windows is the OS that runs the widest array of software on the widest array of hardware, which is not so easy (anything Windows from ancient to modern, Windows subsystems for Linux and Android). Windows emulation on Linux is also making massive progress, thanks in part to Steam, but I guess that structurally, it will always be easier for Windows to emulate Linux than for Linux to emulate Windows.
[1] https://en.wikipedia.org/wiki/LiMux [2] https://www.transformation.gouv.fr/files/presse/Declaration_...
The way I think about it, Java basically runs on a tax that's being levvied on bigcorps being bigcorps. It's not even really a strict commercial/noncommercial distinction, or an arbitrary line being drawn on any metric like profit, revenue, headcount, etc. It's managers covering their asses. It's compliance considerations that only become relevant when you have lawyers running the show. ...otherwise, I don't understand why anyone would ever pay for commercial Java support contracts.
Let's say you actually are a huge corporation, but you're more enlightened than a typical bigcorp. You might look at those millions that you're giving to Oracle and think to yourself: Hey, this is enough money to enable me to pay a whole department of programmers to look after my interests in the Java ecosystem in a more direct way than Oracle would if I gave that money to them... So, then: Why not do that? Java's open source nature and the OpenJDK process presumably allows you to do that. (Or am I missing something here?)
And at the end of the day, that tax on bigcorps ends up funding Java as an open source effort, with value trickling down to all those other Java users like hobbyists, private individuals, academics, startups (regardless of size and profitability) etc. who can't or won't pay for a piece of infrastructure like that.
This is markedly different from other commercial programming language ecosystems. Take Borland/Embarcadero for example, where they expect you to pay a rather steep price if you're using their tools, regardless of whether you can afford them.
Or take Microsoft, for example, where their whole programming language and tooling ecosystem only exists to support their platform serfdom, and they're giving a very rough deal to their developer-serfs. With Java, you as a developer are actually either the paying customer or an important business partner to Oracle who helps them get to paying customers. Not so with Microsoft. They can take paying customers for granted. They don't get more money if more Windows software gets sold to those same customers. (Don't know how much money they make through commissions on sales of Windows software through the Microsoft store, but I'm willing to bet it's dwarfed in comparison to what they make on Windows licensing). So they engage in trivial innovation, giving a face lift to their platform every few years, coming out with one half-baked GUI toolkit after another, which never reach maturity before being abandoned. That's a horrible developer experience, and horrible economics for their developer-serfs.
Another way that things can go wrong, but don't with Java: Where Java takes from the rich and gives to the poor, many other open source efforts have the problem that they end up taking from the poor and giving to the rich. -- See the debate about elastic search where you have a small open-core startup building something, and then Amazon coming along and charging customers for their repackaged version of the product, without passing any of those proceeds along to the creators of the software.
To make things even better: Take what I've written above and substitute "Open JDK consortium" for Oracle, because saying "Oracle" was actually an oversimplification. It's not a single monopolist at the center of all this, but if you don't like Oracle, you can get your support contract from other commercial (e.g. IBM) or non-commercial (e.g. Eclipse foundation) players.
What's not to like?
Wow, that's very ageist.
> What "evidence" would appease you that's not written in the WEF bylaws?
Precisely that. The article could have given a little context by saying something about the WEF bylaws. If the WEF is just this man's private enterprise with no other purpose than to be an alter-ego for him that makes money for him, then sure, why not. If it's a listed corporation, there are shareholders to consider. If it is a tax-exempt foundation, there is the question of tax fraud to consider. I simply don't know what the WEF is, and it would be useful for a reader of this article to know that, before they get to be outraged, which outrage, presumably, is what the article is driving at.
> Klaus has been at the helm of the WEF for 52 years.
Wouldn't that make him qualified to continue doing what he has been doing for 52 years?
> When he was born [in 1938] 122 of the 195 states in the world right now did not even exist.
God only knows what they're implying here.
> He is completely unaccountable to anyone inside and outside the organisation,” the group said.
Which is supported by what evidence? ...not to be found in the article. Also unclear who he is supposed to be accountable to. Apparently some trustees or something. ...now that would have been interesting for the article to go into detail about.
For those who are a little less adventurous and who happen to be in the social sciences, humanities, journalism, etc., pandoc+msword is also definitely worth looking into. It's a much better tech stack than standalone msword. -- It's really only in the STEM fields that, in my mind, there really is no way around latex.
The initial claim was "statement about openness makes Microsoft an outlier". My counterclaim was "statement is meaningless". Why am I saying that? Because Microsoft is a business, not a person. Persons have souls and hence attributes like "openness" can apply to persons. Businesses are profit-maximizing automatons. They do not have souls. What does it mean for an automaton to be "open" to anything? Nothing, it doesn't make sense at a surface-level. Upon a deeper analysis it gives me pause that it blandly contradicts what their incentives obviously are, namely to win a zero-sum game that they're playing against a union.
The interpretation whereby they're communicating in bad faith is as good or better than the interpretation whereby you can take them at their word when they talk about openness. There is no way to know which of two contradictory interpretations is the truth. Hence the information content is zero (my initial claim).