HN user

mbwgh

385 karma
Posts3
Comments87
View on HN

I'm only a hobby programmer and the experience wasn't encouraging.

I have come across elitist communities like on SO, also regarding C++. I was downvoted and told to intentionally be spreading misinformation by using the word 'struct', because as you should know, in C++ there are only classes... I haven't encountered that kind of vitriol when I asked beginner questions about how loops work, on 4chan out of all places.

But there were also times where I spent hours with people chatting on IRC while learning, where people were forgiving and encouraging.

In both places however, it seemed to be unfathomable for people that someone was trying to learn to program, not because they had to because of school or uni.

You are absolutely correct and I was an idiot without a proper understanding of premature abstraction or unnecessary complexity.

If I were to start a new side-project using Haskell today (I probably won't), I would just stick to do-notation and even concrete types (instead of mtl-style or what have you) where possible.

>> is an old name for >

I once had a hard to track down bug in some code making use of conduit[0], which is introduced using examples like `main = runConduit $ (yield 1 >> yield 2) .| mapM_C print`.

Dutifully replacing every occurrence of (>>) with (>), because it was more modern, suddenly changed the semantics somewhere, due to the fact that (>>) is defined with fixity `infixl 1 >>` and (>) as `infixl 4 >` - i.e. both are left-associated operators, but (*>) binds tighter than (>>) and some of the myriad of other operators you may encounter.

-- [0] - https://github.com/snoyberg/conduit

I like the sentiment, but the article ignores that this approach may incur the price of adding complexity to the implementation. Depending on your architectural constraints, adding an undo operation may not only be hard, it may necessitate changes which in turn make future changes harder as well. Or it may not, of course - as usual it depends.

But even assuming that you are able to follow this advice, I assume (and have personally witnessed) another side-effect. Just as people get accustomed to, and ignore, warnings, they will just as well become accustomed to being able to undo mistakes, and as a consequence become less careful about what they're doing.

One may argue that reserving warnings for only the non-undoable operations will improve their signal-to-noise-ratio and compensate for an overall gain, but whether that is true and worth the additional complexity is not black-and-white.

Enlightenmentware 2 years ago

In Ousterhout's "A philosophy of software design", this aspect is described similarly via "deep classes", as opposed to "shallow classes".

It's likely dependent on the 'user archetype'. If you need to e.g. lookup things related to beginner-friendly programming languages, the search results for Google are strongly tainted with SEO crap.

Being able to either outright block/pin sites, or only lower/raise them in your search results, made a difference for me after a few days of searching.

I do hope the future of search will include being able to use natural language, but also still the more precise '"This" +"That"'.

In any case, more competition is a good thing, the lack of it is what got us into this mess in the first place.

My (uninformed and probably misguided) idea was that there was a host DNS service (responsible e.g. for resolving local domain names) which would cause Windows itself to trigger some rule when 'web.whatsapp.com' is encountered.

But yeah, the PWA thing seems more plausible, even though I was not aware of any install prompt or similar.

I would need to read up on PWA, and there seems to be a LOT unfortunately.

Even Firefox will in general not protect you I believe.

I showed my mom how she can use 'web.whatsapp.com' to use Whatsapp more easily (in order to share screenshots or links with others).

After logging in, a notification about Whatsapp having been installed from the app store popped up after a few seconds. And indeed, the Desktop app had been installed, without any user interaction whatsoever.

I am not even sure how this was initiated, but I believe DoH being disabled by default probably has to do with it.

Edit: Like a lot of comments have suggested, I most likely remember this wrong. I tried to reproduce this (after "forgetting about" whatsapp.com in Firefox and uninstalling the app) and was unable to. I did encounter three separate "install the app" buttons, all of which however yielded an additional installation prompt from the app store.

Apologies.

FWIW, according to https://developer.mozilla.org/en-US/docs/Web/Progressive_web... Firefox does not support PWAs without an extension, so that wasn't it either.

Yes, the exit code. See e.g. `:help cq` in vim. :q! and ZQ will yield exit code 0, which sometimes is not what you want if you want to ensure some task is properly aborted.

Contrary to what this heading suggests, nothing has been "decided" here. This article is not only inaccurate, it is falsely misleading.

The Committee on Civil Liberties, Justice and Home Affairs (LIBE) adopted a "draft Parliament position" [0] and that's that.

This still needs to go through so-called "tri(a?)logue negotiations", held between the EU parliament, commission and council. [1]

Still a tad early for calling this a win!

[0] https://www.europarl.europa.eu/news/en/press-room/20231110IP...

[1] https://netzpolitik.org/2023/ueberwachung-eu-innenausschuss-... (German)

The idea is that if you need dependencies, you only need them present during compilation on the machine you develop on. You then compile a statically linked binary and copy this to the machine where it's needed.

There may be other advantages like static types, editor integration and so on, but that's beside the point.

But this kind of statement is the unfortunate industry standard. A more honest thing to say would be to say "there is no way to prove that your personal information has been or may yet be misused against you, and as such you should take the following steps to minimize risks [...]".

But compare how that looks compared against the bigger players which can afford to treat their weekly apocalyptic security incidents like it's just a bad weather phenomenon we just have to accept, apply a patch for and move on.

The following quote from former Jean-Claude Juncker, president of the European Commission sums up the way the EU seems to work quite nicely:

"We decide on something, leave it lying around and wait and see what happens. If no one kicks up a fuss, because most people don't understand what has been decided, we continue step by step until there is no turning back."[0]

[0] https://en.wikiquote.org/wiki/Jean-Claude_Juncker

In addition to 'A philosophy of Software Design', I would also recommend the less well known 'Object-Oriented Design Heuristics'.

It came out at the same time as the GoF book, but I think it is still relevant today and similar in spirit to Ousterhout's book.