Clojure Error Messages Are Accidental - <AUTHOR> https://lispcast.com/clojure-error-messages-accidental/ <comment><USER2> It's unfortunately part of the learning curve. Being a beginner with clojure myself, I was put off by some of the more arcane error messages.

But compared to 'undefined is not a function' it's about 10 times better ;) Glad to see this being improved.

Don't get discouraged by this. Even if you never plan to use Clojure in a project, dive in and take a good long gulp from the functional tea of enlightenment. It will make you a better programmer.

My advice for people complaining about docs: [http://clojuredocs.org/](http://clojuredocs.org/) is much much nicer.

The standard docs are very very terse and you'll need to learn the typical abbreviations and idioms.

<comment><USER3> BTW: for libraries, there is kind-of standard docs being developed: [https://cljdoc.xyz/](https://cljdoc.xyz/) \- see e.g. [https://cljdoc.xyz/d/cli-matic/cli- matic/0.1.13/doc/readme](https://cljdoc.xyz/d/cli-matic/cli- matic/0.1.13/doc/readme)

<comment><USER2> To help with Clojure/ClojureScript adoption, I would love to see this, clojure-docs and the official documentation in one place.

People give up easily if they can't find decent getting started and docs. It adds to that initial hurdle.

Any chance the authors of these initiatives can get together?

</comment></comment></comment><comment> james-mcelwain Clojure is just so coupled with the host language. Which isn't a bad thing, since it helps make interop effortless, but does make it difficult to appreciate as a standalone language.

I first tried to learn Clojure before I knew anything about Java and things like error messages made it really difficult to get started.

Coming back after having written Java professionally for a year, things like random Java exceptions showing up or long stack traces suddenly became a lot more tractable, although still not "beautiful".

<comment><USER3> I have been doing Java professionally for like 20 years now; and one of the things I liked a lot were its stack traces and error messages. When I see a Java stack trace I find it simple to get started with it to go understand the issue; with Clojure, my head aches; I try staring at the code to see if anything comes up. Same - or worse - for Spec errors - they are huge and you need a cup of coffee to get started deciphering them.

This said, Clojure is a lovely language, I have used it for 3+ years now and is my favourite. It has its drawbacks, as with everything else.

</comment></comment><comment><USER3> Alex Miller wrote a few days ago on this very topic: [https://clojureverse.org/t/improving-error-messages-in- cloju...](https://clojureverse.org/t/improving-error-messages-in-clojure-as-a- library/1765/27)

</comment><comment><USER4> That implementation for "keyword" is simply horrible. If it's correct that most errors caused by bad input to functions come not from verification but from an arbitrary place in code where a type-specific operation is applied is correct, that's more horrible. This deeply discourages me from touching Clojure ever.

<comment><USER5> I think that impulse is correct. As a clojure-lover, the state of error handling, and particularly Rich Hickey's decision to neglect it for so long and not code defensively, makes me a little sick.

That said, clojure remains my favorite language despite this flaw, and I can't wait to spend more time in it. It's beautifully designed. The design communicates well how to use it well, and it's only when you're abusing the language (or making mistakes) that you run into this kind of stuff. Not an excuse really, I'm just excited that errors are going to get somewhat taken care of by incorporating spec into the core.

<comment><USER4> > it's only when you're abusing the language (or making mistakes) that you run > into this kind of stuff.

Not really. My experience has been that most of the time the docstrings leave a lot of guesswork to be done when deciding what to pass to a function and how to pass it through, which causes errors and time lost because there's no other authority on a functions I/O (Common Lisp has a spec, for example). This behaviour has spread to the community too. So in Clojure one passes "things" around and Clojure will do "stuff" to those "things" until either one or both the "stuff" or the "things" break, in which case you either get nothing or somethings that's big but worth nothing. TBH it's been quite some time since I tried to do sth. w/ Clojure so my impressions could be outdated, but the article suggests otherwise.

<comment><USER6> Yes, its true the docstrings are terse. And its true that Clojure follows a pattern of garbage in, garbage out. And if the rest of Clojure was designed like Java or Python, it would be a huge problem.

But its not. And if you take the time, like 30 days, to learn Clojure to intermediate proficiency levels, these issues disapear.

Its hard for me to convince you of this, because its definitly asking for a leap of faith. But think of it like starting Kick Boxing. At first, your knuckles hurt, your chin hurts, but spend 30 days at it, and you just adapt and those pain points disapear. All of a sudden, you feel great, stronger, faster, more agile. That was my experience with Clojure. And ya, just like Kick Boxing, once in a while, your knuckle might hurt again, or your chin, but unlike in the beginning, its very rare, and goes away really quickly.

EDIT: To add more concrete weight to my argument. Here's some of the things I believe contributes to making those issues disapear. The consistency and simplicity of the syntax. Most docstrings call the same things with the same names, and have a similar writing style. The REPL driven development means you can quickly explore and self learn how a function behaves. The immutable data structures avoid a lot of mistakes and simplify a lot of logic. The higher level loops and branching do a similar thing. The easy composability of data transforms become second nature. The functional first style makes writing tests easy. You always end up with little code, so there's just less that can go wrong. And I think most importantly, the Clojure source is easy to read and very accessible, so its often a better documentation then any docstring could be.

<comment> james-mcelwain As someone who has (mostly) struggled through, I'd (mostly) agree. I find that when I am running into errors it is almost always because (a). I am moving too quickly and have misplaced something simple like my parens (which parinfer would probably solve) or (b). am not leaning enough on the REPL and am spending too much time before re-evaluating code.

I find that the more I live in the REPL, the less frequent these errors are.

</comment></comment></comment></comment></comment><comment><USER7> The overall conclusion is correct, most error messages happen by accident, but a lot the examples look like expected behavior to me. Maybe because Ive been using Clojure for too long, or maybe because its the expected trade-off when using a dynamically typed language. You get more fluidity at the cost of type checks - The way to mitigate this downside is adding checks of your own. Clojure has supported this since way back when using pre/post conditions.

Example:

      core> (defn mydiv [n d] {:pre [(pos? d)]} (/ n d))
      #'mydiv
      core> (mydiv 10 2)
      5
      core> (mydiv 10 0)
      AssertionError Assert failed: (pos? d)  core/mydiv

As opposed to the standard

      core> (/ 10 0)
      ArithmeticException Divide by zero
      clojure.lang.Numbers.divide (Numbers.java:158)

Chasing down Numbers.java will take time, but with a pre-condition you get the exact name of the function and the test which failed.

<comment><USER8> Before going down this path, it's important to understand the substantial performance implications.

<comment><USER5> Checks are turned off by default. Are there performance implications even when they're turned off?

Reference: [https://clojure.org/guides/spec](https://clojure.org/guides/spec)

<comment><USER9> spec is wholly independent of the pre/post conditions.

<comment><USER10> In this respect, they share the characteristic of being easy to wholly disable (i.e. prevent them from being compiled at all). With pre & post conditions if the var `clojure.core/ _assert_ ` is bound to false, then they're elided. The usual pattern is to have them on for testing, and disable when compiling for production.

</comment></comment></comment></comment></comment><comment><USER11> > The worst sin of stack traces is that the most important information is > printed first, then followed by less and less important information, usually > a few screenfuls of it.

No. It's at the top of the web browser window. At the top of the unit test out window in the IDE and so on. Flipping stack traces to help console reading would be a mistake. Should be made optional in that case.

</comment><comment><USER12> > But if the official spec doesn't restrict get, Spec will let people redefine > the spec for get for themselves.

> They can choose whatever subset of the type they want.

Total clojure-spec noob question: is this type scoped somehow, or does using your own type mean chasing down bugs in libraries that assume a looser version?

<comment><USER13> Specs are not scoped. There's a global registry. You may end up chasing other people's bugs.

</comment></comment><comment><USER14> Yeah Clojure's error messages pushed me to Common Lisp (although I am still quite a neophyte in both).

I haven't tried it, but maybe Sayid[0] would be of help to Clojurians?

[0]: [http://bpiel.github.io/sayid/](http://bpiel.github.io/sayid/)

<comment><USER15> sayid is awesome. Spacemacs integrates it by default and it's a nice step up from tools.trace.

</comment></comment><comment><USER16> > It is more useful to think of error messages as non-existent than to think > of them as bad.

If this is true, my respect for Clojure just completely dropped.

Error messages are a crucial part of a language and they are instrumental to the robustness of the programs it helps create.

The fact they have been so severely neglected by the Clojure teams makes me think the authors of the language don't really understand modern large scale programming.

<comment><USER17> That's quite a judgement call to make based on the utility of error messages. I can't remember the last time I was blocked based on a Clojure error message anyway. Errors are less frequent and usually pretty obvious.

I think you're wrong to say core devs don't understand modern programming, but you'd probably be right to say that they didn't prioritize making it approachable and stooping to the lowest common denominator. And it's not just Clojure, but datomic, core.async, spec -- all solving real problems in modern large scale programming with elegance.

Watch Rich's 'Effective Programs' talk [1] and lmk if you still feel that he's out of touch with modern large scale programming. I think he's pretty in tune.

[1] [https://www.youtube.com/watch?v=2V1FtfBDsLU](https://www.youtube.com/watch?v=2V1FtfBDsLU)

<comment><USER16> The simple fact that Clojure is dynamically typed tells me that this language is simply not suited for large scale programming.

The trend in programming languages is pretty clear, we are moving more and more strongly toward languages that are statically typed and with type inference.

And for good reasons, in my opinion.

<comment><USER4> It's not really clear to me what you mean with "scale" here. Are you referring to the scale of a program, i.e. size in LoC and/or complexity of components, or to the scale of a team of developers, i.e. the number of persons working on a given codebase?

<comment><USER16> Both.

Scale in performance, since dynamically typed languages have fundamental hurdles that will always make programs slower than when written in a statically typed language.

And scale in code base and developer strain. The fact that it's mathematically impossible to reliably refactor code automatically if the types are absent encourage spaghetti code bases that developers are afraid to modify because they can never be sure they're not breaking anything.

Such hesitations never happen in statically typed languages.

</comment></comment></comment></comment></comment><comment><USER18> Very good talk by Bozhidar Batzov at PartialConf 2017 that covers this point as well.

Clojure, The Bad Parts

[https://www.youtube.com/watch?v=1YCkOo5Y4Oo](https://www.youtube.com/watch?v=1YCkOo5Y4Oo)

</comment><comment><USER6> I think most of the reason for not having all these runtime checks in core is performance.

Though I guess if there was an easy way to turn them off for production it would maybe be okay.

<comment><USER10> Curiously, the language's features for doing runtime checks as a user-- core.spec and pre & post conditions--are both very easy to completely disable for production. I don't know why they're not used in core: probably a combination of the core team's feeling that _they_ don't need them, and not wanting to make the language slower than necessary by default.

<comment><USER6> Maybe pre/post was added later?

They're now in the process of speccing all of core. Hopefully next release will have it.

I do think slow by default is part of it. I've seen a lot of builds deployed to prod without prod optimizations in my experience. That's why I think spec in not instrumented by default. Too worried people will keep it on at all times, and then Clojure would get a bad rep for being slow.</comment></comment></comment>


A new look for repositories - <AUTHOR> https://github.com/blog/2085-a-new-look-for-repositories <comment><USER2> Ha, they're going back to the way repo tab navigation _used_ to work a long time ago, with the tabs on the top, like [1] and [2].

Arguably it's a nicer look with some UX benefits.

[1] - [https://camo.githubusercontent.com/fec1c4ab93659e759682ad5db...](https://camo.githubusercontent.com/fec1c4ab93659e759682ad5dba5308430f0d07d9/68747470733a2f2f662e636c6f75642e6769746875622e636f6d2f6173736574732f313335342f3635313336302f35626133336266342d643437322d313165322d393439362d6134386339373361313232342e6a7067)

[2] - [http://cdn.appappeal.com/pictures/6089/screenshot.png](http://cdn.appappeal.com/pictures/6089/screenshot.png)

<comment><USER3> and then when they decide to add new Menu Items and run out of space, they will switch back to the Sidebar :D

</comment></comment><comment><USER4> There's one part of the GitHub UI that I still wish they'd change: the way "contributions" are displayed.

Right now, there are accounts that seem to just fork a bunch of repositories and then do nothing with the forks. This makes those people look like massive contributors to open-source because GitHub gives them a nice "Contributions" tab with a list of popular projects under it.

They also get free advertising in reverse because they automatically appear as a "Member" of the parent project's network, despite having done nothing at all in the project!

At the very least, GitHub should require the forking person to have made _some_ pull request that was accepted. If those forks aren't actually contributing, they shouldn't even be mentioned as a sub-network of the original (except perhaps as an option for the project maintainers to see, if they're curious where forks have occurred).

<comment><USER5> I've seen tons of this. People forking popular projects and making minor pull requests to correct spelling or change formatting, probably so they can pad their github profile (which we're told is the new resume) and make it appear as though they're highly-active and are contributors to major projects.

<comment><USER6> If someone were forking my project to even fix a single tiny whitespace issue or typo, I'd be happy! They generally do nothing though. It seems like 90% or more of forks result in absolutely no changes whatsoever.

I kind of wish a fork wouldn't even trigger notifications or be listed on any pages until at least one commit is made to it.

<comment><USER7> Most GitHub forks are because people don't understand how git refs work. I used to work at a company that required us to fork every repo we depended on and lock our dependency to the fork rather than using a package manager and git refs.

<comment><USER8> This prevents you from getting _why'd, so it's pretty reasonable.

<comment><USER9> For those that don't understand the reference:

> On 19 August 2009, why's accounts on Twitter and GitHub and his personally > maintained websites went offline. Shortly before he disappeared, why the > lucky stiff tweeted, "programming is rather thankless. u see your works > become replaced by superior ones in a year. unable to run at all in a few > more."

[https://en.wikipedia.org/wiki/Why_the_lucky_stiff](https://en.wikipedia.org/wiki/Why_the_lucky_stiff)

</comment></comment></comment></comment></comment></comment><comment><USER10> I hope the removal of the sidebar doesn't result in wider README views.

The current design has a fixed width of 790px (including 30px of padding on each side), which leads to a comfortable number of words per line. I find readability much worse when line lengths get longer.

Other than that, I think the simplified navigation is a big improvement.

<comment><USER11> It does feel a bit wide to me, but I haven't tried it yet.

Some extra margin on each side might be nice.

</comment></comment><comment><USER12> I had never noticed before that GitHub "Highly Recommends" cloning via HTTPS instead of via SSH. This is the opposite of what I usually tell people to do. I do not see any reasoning anywhere, but I might have missed it.

Does anyone know why you would recommend HTTPS over SSH? Is it just the complication of setting up SSH keys?

<comment><USER13> > This is the opposite of what I usually tell people to do

How come, out of interest? In terms of peformance, cloning for HTTP is fairly efficient these days although I would concede an authentication argument.

(As an aside, SSH can be blocked on some corporate networks)

<comment><USER12> Because you don't have to keep supplying credentials when using SHH keys. It's less about speed and more about reducing the friction in common operations. It's also the way I'm used to handling things with gitolite, so that might be part of it.

We already usually use SSH w/ keys for server access, so uploading public keys to GitHub isn't much of an additional hurdle.

<comment><USER14> You can setup a credential manager in git and don't have to continue supplying credentials with HTTPS repositories. For instance, I commonly use this one on Windows [1]:

[https://github.com/Microsoft/Git-Credential-Manager-for- Wind...](https://github.com/Microsoft/Git-Credential-Manager-for- Windows/releases)

[1] Although currently marked as pre-release, this is a fork/successor of an earlier one that was fairly rock solid, now with a better installer. The "pre- release" tag here mostly is with respect to the new 2FA support.

<comment><USER15> Thanks, but this seems like a lot more complexity than using github's built-in SSH Key manager (especially since I wager that most people using github are not on windows). That, and I've inevitably always needed SSH keys for one thing or another on every computer I've used, so it's just really streamlined.

<comment><USER14> As with most such things, your mileage will of course vary. There are credential managers out there for things like the the Mac OS X keychain and Gnome keyring.

So yes, if you've already got SSH keys in play and you aren't dealing with (corporate) firewall issues for SSH protocols then that is often going to be convenient, but the point is that credential managers are out there and are equally convenient (work just like the ssh-agents you rely on) for those (stuck) with HTTPS or who don't need SSH keys anywhere other than git(hub) repositories.

Also, I'd almost take that wager. There are a lot of Windows developers these days on Github and/or Github for Enterprises. I don't think Windows developers have made it into a majority yet, but I'm guessing there are a lot more than you think there are.

</comment></comment></comment></comment></comment></comment><comment><USER16> I wish they reverted to the old search bar, where you could chose to search globally or just the repository you're on currently: [https://github.com/blog/1492-repository-search-on-all- reposi...](https://github.com/blog/1492-repository-search-on-all-repositories)

Unless I missed something, the only way to search globally now is to go to github.com and then use the search bar.

<comment><USER17> > Unless I missed something, the only way to search globally now is to go to > github.com and then use the search bar.

You can delete the default "this repository" facet. Just hit backspace when you're in the "local" search: [http://giphy.com/gifs/l41lJC4ZrO3sEFuNO](http://giphy.com/gifs/l41lJC4ZrO3sEFuNO)

<comment><USER18> Wow I totally missed that, I wouldn't say that it's very good UX considering that it doesn't intuitive for many, with the dropdown it's obvious that you can switch.

<comment><USER12> Yeah, the only way I ever found it was because I kept accidentally doing global searches when I though I was searching a repo. Turns out I just held backspace too long while clearing out the search bar. It took me a long time to realize what was going on.

</comment></comment></comment></comment><comment><USER19> I'm holding my thumbs for a GitHub with a responsive layout. The separate mobile site is pretty nice, but it lacks tons of functionality (and it's hard to access on non-mobile).

Even HN is responsive these days!

<comment><USER20> Ha, yesterday I counted the number of words and/or links they fit onto a mobile page. Forty! The page is almost all whitespace. Sweet, margin-padding whitespace.

<comment><USER21> Well, you know minimalist design is all the rage these days.

</comment></comment></comment><comment><USER22> Interesting. This is closer to the older UI, before they rolled out "Repository Next" \- [https://github.com/blog/1529-repository- next](https://github.com/blog/1529-repository-next)

</comment><comment><USER23> Will be interesting to compare the comments here with those of 2 years ago: [https://news.ycombinator.com/item?id=5894438](https://news.ycombinator.com/item?id=5894438)

<comment><USER24> And bookmark this current thread for when they reintroduce sidebar navigation in 2017. :)

</comment></comment><comment><USER25> I don't see how to opt-in, where's the button?

<comment><USER26> I don't see it either, maybe they're bucket testing, odd that they'd announce it if that's the case ...

</comment></comment><comment><USER27> Is there a good way to 'deep' browse GitHub? I love just browsing through repos by language, but I have found that this is limited to a max of 500. Once you get to 500 there is no way to get to 501, etc.

<comment><USER14> You can random walk the social graph as deeply as you want to: click on a contributor to a repository, then explore a repository they've also contributed to, then click on a different contributor in that repository, ad infinitum.

<comment><USER27> This does not allow you to efficiently browse by language.

<comment><USER14> Depends on the language. Some languages the core contributors are active enough across the language that you can get a very wide view of the projects happening in that language. Certainly it will never be as efficient as a flat list, but it can still be useful for finding interesting things.

</comment></comment></comment></comment><comment><USER28> Interesting changes, seems like the trend of pulling items out of icon-based menus and into persistent nav is gaining speed.

I'm not sure how I feel about the full-width pages yet.. easier to read commit messages but stylistically I did like the icon menu on the side. The narrower version also seems ever-so-slightly easier to read, but it's hard to say without trying it first. Looking forward to demoing once the roll-out starts.

</comment><comment><USER29> I was almost expecting them to let us add a header image to our repos, the way Facebook Google+ and Twitter do.

<comment><USER30> I would like that. For comparing many software projects I sometimes use "how complete is the Twitter profile" as a metric, just like a lot of people use "how does the website look".

One software project that I've been involved with for over a decade still uses the same old stale graphics, and it's basically telegraphing the fact that the SABDFL is not big on letting other people contribute to areas he's not comfortable with.

</comment></comment><comment><USER31> Says it's opt in for the next two weeks, but I'm not seeing how to opt in.

<comment><USER32> Don't see it either. Maybe badly worded.

<comment><USER31> @mdo said they're slowly rolling it out, and when it's available then you'll be prompted on the repo you own.

<comment><USER33> That's an interesting choice of rollout if you enable it for all users that see your repository instead of enabling the view for yourself for all repositories that you browse.

<comment><USER34> I would imagine that it is easier on Githubs end to configure a repo to render one way or another rather than to conditionally render it based on the current user.

</comment></comment></comment></comment></comment><comment><USER35> I never understood why they changed it, but I'm glad it's back.

<comment><USER17> They wanted more repository content above the fold. Turns out having discoverable and clear navigation is more important since the vast majority of the content (e.g. readmes) is going to be displayed below the fold either way.

</comment></comment><comment><USER36> If someone wants to keep the tabbed nav sticky to the top of the page, I wrote a Firefox add-on / Chrome extension to do so: [https://github.com/tonglil/github-static- nav](https://github.com/tonglil/github-static-nav)

</comment><comment><USER37> I don't get what is different in third screenshot.

Otherwise, a nice incremental change.

<comment><USER38> I think it's that the sidebar menu is not present anymore (on the right hand side). Usually in this view it is the icons only, so pretty narrow anyway.

</comment></comment><comment><USER39> I never liked the side navigation, we stayed with top one in RhodeCode from beginning and imho it works much better, and i say no for putting icons on everything.</comment>


Supreme Court: States may require pres. electors to support popular-vote winner - blinding-streak https://www.washingtonpost.com/politics/courts_law/supreme-court-electoral-college-faithless-electors/2020/07/06/cf88f706-bf8f-11ea-b178-bb7b05b94af1_story.html <comment><AUTHOR> Well, there ya go.

I don't fundamentally agree with the Court's interpretation, and believe it flies in the face of the fundamental intentions of the Founders for the electoral college, but they've spoken, so that's that.

Sad to see it since it effectively wipes the EC from the equation in all but actually telling people to stay home. That's life though.</comment>


Ask HN: Does your startup use Captchas? I want to talk to you. - <AUTHOR>

I'm working on a captcha alternative. I think it could help with some of the pain-points (hard to use, etc). Let me know if you'd be down to chat! <comment><USER2> It's hard to get right..

One problem is that even if you can make it hard for a script to break, you can hire an guy overseas to fill in captchas for you for fractions of a cent. Most alternatives have other problems - Things like "Slide this bar", or "Click on the Foo" have been tried over and over and over - They're either too hard for people, or too easy to break.

Keep in mind how good computers are at object recognition these days - It's likely that most captchas are going to be easier to defeat by a computer than they are by a middle-aged person with bad-eyesight.

So what a lot of people end up doing is using things like recaptcha, where Google can add additional heuristics, such as "how many captchas has this IP done today", and vary things up - They can also use a large source corupus of pictures which have already failed THEIR AI, so they know they're hard.

My biggest problem with this solution, however, is that it sends every user's IP to Google - Google has enough insight into users already - Things like Google Analytics/adsense/recaptcha just give them additional touchpoints :/

</comment><comment><USER3> Problem: Need to eliminate spam and robots while not hurting user experience

Task: Users filter results but need to send a request to the server on each filter. They will probably filter ~40-50 times to fine-tune their search but ever since I introduced a captcha the use rate of the tool dramatically decreased. Curious what you have in mind.

email@example.com</comment>


Don't make me choose my country: Add geolocation to forms with three lines of JS - <AUTHOR> https://mk.gg/add-geolocation-to-form-elements/ <comment><AUTHOR> I was inspired to write this by a comment on HN. It's super-easy to progressively enhance your address forms.</comment>


Hong Kong Protests Live Updates: Police Violence Puts Government on Defensive - <AUTHOR> https://www.nytimes.com/2019/06/12/world/asia/hong-kong-protests.html <comment><USER2> This was an inevitable conclusion, I grew up in Hong Kong and we left in 1996 during the handover along with many other ex-pats. We saw the writing on the wall as did many others based on how horrible the handover was going. It is a true shame what is happening to Hong Kong now but I don't see China relenting to pressure as that would only embolden other cities to do similar protests. I worry for my friends who are still there as the only way this is going to end is in a continued escalation of violence. As someone who visited Tiananmen Square in the early 90s, it was amazing how quickly the country moved on and refused to discuss it. I worry that is what is going to happen in HK.

<comment><USER3> This is something I've always been confused about- what's the difference between an "expat" and an "economic immigrant"? Is it just the origin country or color of skin?

<comment><USER4> Legal status in the country also probably, economic migrant is a euphemism

<comment><USER5> euphemism for what?

</comment></comment></comment></comment><comment><USER6> The only thing that can serve to enforce the Joint Declaration (and similar bi-lateral agreements between countries) is if the signatories uphold and maintain their expectations of the other.

For the last two decades, China has been testing for any response on the part of the British to encroachments on HK's autonomy. Britain has largely remained mum, failing to call out China on increasing violations of the Joint Declaration and the Basic Law.

Then things really accelerated with the premiership of Xi Jinping, and those tests have come thicker and faster.

While Britain doesn't necessarily have a large amount of leverage these days with its own problems going on, taking a principled stand on things in the public eye is not without its benefits.

<comment><USER7> > _While Britain doesn 't necessarily have a large amount of leverage_

Sure it does. It could probably get a small coalition of American and possible European forces to facilitate an evacuation of the city for anyone who wants to leave, to Hong Kong, the U.K. or the United States. There is a lot of human capital in Hong Kong, capital that relies on competent government, fair courts and a government with a legitimate mandate.

This isn't happening because domestic populations in the West aren't wholly tuned into Hong Kong's situation.

<comment><USER8> > a small coalition of American and possible European forces to facilitate an > evacuation

I've seen documents circulated by the US military where they basically said 'we aren't sure we'd win against 2018 China'.

That sort of activity is a pretty clear attack on China's sovereignty, and I suspect the CCP would agree regardless of other possible interpretations.

The UK could break diplomatic ties and stop trading with China, but they can't do anything involving 'forces'. It is a tragic step for Hong Kong, but end of the day it is Chinese territory and they will get their way on anything they insist on.

<comment><USER7> > _I 've seen documents circulated by the US military where they basically > said 'we aren't sure we'd win against 2018 China'_

This isn't helpful without a source. China's army is formidable. Its Navy, however, is relatively weak.

In any case, this would (intentionally) never become a military conflict. The stakes are too low for both sides. If it came to a fight, the most would be sanctions against CPC leadership under the Magnitsky Act.

<comment><USER8> > This isn't helpful without a source.

US Military, either Army or Navy. I don't remember exactly what was written on the cover. The context may have been an invasion of the mainland.

Anyway, if they want to wait a couple of years and do all this again that will probably be an academic detail. They are almost certainly improving their navy so they can be more pushy in the South China Sea.

> The stakes are too low for both sides.

A foreign power swooping in and offering support to dissidents? When one of China's biggest strategic goals is enforcing unity among 1.4 billion people? China could very easily see the situation differently.

It would be similar to Russia organising a uniformed 'humanitarian convoy' with China and Iran, then trundled over to America to offer material support to separatist Texans or Californians. If there was a belief it might actually make a difference that action would provoke quite a response.

</comment></comment></comment></comment></comment><comment><USER9> It seems that the government is not giving up.

The politics in HK pseudo-democracy seems complex. Is there any way to democratically remove pro-Beijing camp from the power? Unless there is, it seems like the government just has to weather the storm.

<comment><USER10> It's exceedingly unlikely to happen (and Beijing would likely find a way to prevent it from happening) in the legislature ("Legco"). This is due to combination of proportional representation in the geographic constituencies, and the fact that half the seats are taken up by functional constituencies which are mostly pro-Beijing. And the Chief Executive is explicitly chosen from a pool of pro-Beijing candidates, so that wouldn't happen unless the law is changed. (The law that enacted this in 2014 was one of the sparks for the so-called "Umbrella Revolution")

Some relevant wiki articles:

[https://en.wikipedia.org/wiki/2014_NPCSC_Decision_on_Hong_Ko...](https://en.wikipedia.org/wiki/2014_NPCSC_Decision_on_Hong_Kong)

[https://en.wikipedia.org/wiki/Legislative_Council_of_Hong_Ko...](https://en.wikipedia.org/wiki/Legislative_Council_of_Hong_Kong#Membership_composition)

</comment></comment><comment><USER11> I hope these people stay strong when the heavy handed crackdown occurs. This time there are millions of cameras watching.

<comment><USER12> That's of very little comfort in today's world.

For example: People in EU can see footage of drowning people trying to cross the mediteranean sea, and react by punishing the orgnizations who try to help.

Really, the interpretation of events matters much much more, than some footage.

<comment><USER13> I think he is referring to the millions of Chinese government cameras with facial recognition.

</comment></comment></comment><comment><USER14> China is going to use these protests as an excuse to accelerate taking control of Hong Kong.

<comment><USER15> If Democracy were to die in HK, I think it's better for it to die this way rather than a silent squeal like what has happened here in America. The executive runs roughshod ignoring laws and subpoenas, the idiot President openly invites foreign assistance to win elections and not a single protest among over 300 million so called Patriotic Americans.

<comment><USER16> 100% agree. It shocks me a little bit how few protests there are in the US right now.

</comment></comment></comment><comment><USER17> We trade with China so readily without even a thought of the kind of dark totalitarian regime reigns, anything for profit right ?

Feel very sorry for the HK citizens but there is nothing the UK can do, HK being returned to China was seen as part of the end of UK influence which (people wanted?), meaning we have 0 influence now.

However being under the sphere of China's political surveillance system is clearly not what anybody wanted.

I noted with interest how citizens binned all digital methods of payment and comms to avoid be prosecuted for being at the demonstrations retrospectively and presumably extradited to some prison factory in China if the extradition dictat gets through.

Anyway IMHO Trump has inadvertently tried to reset the balance and caused the Chinese alot of problems by starving them of tech know how and trade. But as we know Presidents come and go - Communist China is eternal - they will just wait for the next leader to turn around and sell out everyone.

</comment><comment><USER18> A key difference to understand between protests in America and in Hong Kong is that there is no division in Hong Kong about the issue. In the US, for example, half of the population opposes Trump and half supports him. There are anti-Trump protests and pro-Trump rally. The US is divided on many issues.

In Hong Kong, the whole population is united against the government. The territory is democratic on paper, but no longer in practice and basically run by the CCP.

(Note, recently moved from the US to HK and went to see the protests for myself yesterday, though I didn't actively participate)

<comment><USER19> I'd like to believe that but just yesterday someone posted links to a Chinese news site showing lots of visible support for the pro government side. Lots of signs in the city showing support and a fleet of fishing boats with signs. Even if this is pure propaganda it shows there is visible support (even if artificial).

<comment><USER10> Upwards of 1 million people were at the protest this past Sunday. There's only a population of 7 million people in the entire SAR. That's the proportional equivalent of every man, woman &child in California, Oregon and Washington meeting in a single spot to protest something. Even if not everyone agrees on the exact details of what they're protesting, seeing that much passionate support behind a cause is a good indicator that the outrage is widespread.

</comment></comment></comment><comment> 88840-8855 Police brutality is pure shit and has to be internally investigated and transparently resolved.

However, I dislike the current biased image and video reporting on Hong Kong protests. I understand that this plays perfectly into the current anti-China narrative, but we should be aware that such things are never one-sided and simple.

There is a lot of shit going on from both sides: police and violent protesters. To make a balance to the highly inacceptable police behaviour, please also find footage speaking against violent protesters:

Protestors "arming up": [https://i.redd.it/faobvwh4qx331.jpg](https://i.redd.it/faobvwh4qx331.jpg)

Protestors beating up a police man: [https://www.reddit.com/r/HongKong/comments/bzza2h/peaceful_p...](https://www.reddit.com/r/HongKong/comments/bzza2h/peaceful_protestors_won_battle_against_police/)

The moment when it escalated (the protestors goal was to storm the building, police was behaving in a de-escalative way by withdrawing, while being attacked by objects thrown into the police lines): [https://www.twitch.tv/videos/437882587?t=03h05m00s](https://www.twitch.tv/videos/437882587?t=03h05m00s)

Coverage of protestors behaving aggressively: [https://www.youtube.com/watch?v=ZQfOfIAexzw&feature=youtu.be](https://www.youtube.com/watch?v=ZQfOfIAexzw&feature=youtu.be)

Again, all this does NOT excuse any tit for toe police brutality attack. But I am a believer of fair and balanced reporting and I want to see both sides.

<comment><USER5> Yes, I felt something in tune with that. I sympathize with people protesting the China machine taking over. But storming a parliament rarely ends well, and I respect substantial efforts to prevent that, especially in a somewhat functioning democracy such as Hong Kong still is.

<comment><USER20> ...the parliament is literally ignoring millions of people on the streets.

At some point you make violent protest and revolution inevitable. Peace for the sake of peace is useless and an extremely centrist view.

<comment><USER5> There is a threshold, I know too little about the situation to say whether my personal one would be reached if I lived there.

</comment></comment></comment></comment><comment><USER21> Police 'violence'? Have they never been to America? Or seen any G8 meeting in Canada or Europe? Talk about propaganda...

<comment><USER22> Yes, Americans are #1 in the world for police violence. And congratulations to us!

edit: I earlier said that this was the first time HK used teargas/rubber bullets, which is inaccurate. the important thing is that this is still violence, just because the US beats everyone in terms of sheer scale/frequency/intensity of police violence doesn't mean that this isn't police violence.

<comment><USER10> Tear gas was definitely used in '14, see this image from the Umbrella Movement protests:

[https://en.wikipedia.org/wiki/2014_Hong_Kong_protests#/media...](https://en.wikipedia.org/wiki/2014_Hong_Kong_protests#/media/File:2014_Hong_Kong_Umbrella_Revolution_as_Police_Attacked_Peaceful_Demonstrators_with_Tear_Gas_%E9%A6%99%E6%B8%AF%E6%B8%A3%E6%89%93%E9%9D%A9%E5%91%BD%E4%B9%8B%E5%92%8C%E5%B9%B3%E6%8A%97%E8%AD%B0%E7%9A%84%E9%A6%99%E6%B8%AF%E4%BA%BA%E6%B0%91%E4%BB%A5%E9%9B%A8%E5%82%98%E5%B0%8D%E6%8A%97%E7%99%BC%E7%A4%BE%E5%82%AC%E6%B7%9A%E5%BD%88%E7%9A%84%E6%B8%AF%E8%AD%A6.jpg)

Multiple sources also mention rubber bullets being used in '14 as well:

[https://www.google.com/search?q=umbrella+revolution+rubber+b...](https://www.google.com/search?q=umbrella+revolution+rubber+bullets&rlz=1C1CHBF_enUS745US745&source=lnt&tbs=cdr%3A1%2Ccd_min%3A%2Ccd_max%3A6%2F1%2F2019&tbm=)

<comment><USER22> ah, you're right, I misread the SCMP coverage yesterday, guess when they said "tear gas was used for the first time" that it was the first time ever, and not just within the protests this time.

the NYT article also has:

"The use of rubber bullets represented a turning point in the police response and was the first time the government acknowledged using the nonlethal rounds in Hong Kong in decades. The police response following the protesters' push toward the Legislative Council was noticeably more aggressive as peaceful protests became more pitched throughout the day."

So maybe the use of force hasn't changed vs 2014, but the government's brazenness has.</comment></comment></comment></comment>


Facebook Age Distribution (useful for those of you thinking of making a Facebook App) - <AUTHOR> http://avc.blogs.com/a_vc/2007/07/the-facebook-ag.html <comment><USER2> Most startuppers who read news.yc are not going to mind the youth focus of facebook. Most are young, and are making something they themselves would want.

<comment><USER3> Kind of interesting how narrow-minded that seems.

<comment><USER2> If understanding customers is important, then it makes a lot of sense to cater to customers similar to yourself. Let us older startuppers cater to the older crowd.</comment></comment></comment>


MySpace's death spiral - <AUTHOR> http://scobleizer.com/2011/03/24/myspaces-death-spiral-due-to-bets-on-los-angeles-and-microsoft/ <comment><USER4> I think the insight here for entrepreneurs is that 'web' is not 'enterprise'. Microsoft has spent billions targeting 'enterprise' (to compete with the big software players like SAP, Oracle, Salesforce, Etc) which is structured and deployed very differently than 'web' (where big users are Google, Facebook, Etc.)

When I worked at NetApp we had customers in both sides of the world, what we discovered was that the 'enterprise' guys often had a cadence, it went something like grow, identify challenges, coast, upgrade, repeat. That cycle was built around taking the latest release of 'big player' software, qualifying it, then putting it into production, growing a bit, figuring out where the problems were, talking with their vendor, waiting, getting a new release and then repeating the cycle. But the cadence at 'web' players was sporadic at best and often frenetic, feature request, test, iterate, feature, iterate, test, coast, coast, coast, feature, feature, feature, test, coast, Etc. As ideas struck the 'web' infrastructure folks they would would immediately implement some sort of prototype or test case, then rapid fire come up with features the infrastructure needed to support to maximize this feature. But sometimes they would go long periods, months, where nothing would change (in the infrastructure side, web pages, UX, etc sure but same servers and storage assets).

What I learned from that was that while it was great to have some other company own the burden of the 'base infrastructure' in terms of operational expense (hey you don't need Linux hackers if your not changing stuff at that level, so its a savings in staff etc etc) it imposes a hard limit on the change derivative. What happens if you try to change faster than the infrastructure can change, is that you end up hacking around the limits, and that builds up technical scar tissue that over time slows your mobility still further.

So bottom line, you can't continue to pivot faster than your infrastructure, if you're hacking your way around the infrastructure to change, then your ability to change will die by a thousand hacks. If you find your self thinking you need to hack around your infrastructure, listen to that warning and start planning for a more agile base to work from _now_ rather than when we're struggling to keep an old system working while developing a completely new one.

<comment><USER5> This is a fantastic comment, and advice that should be seen by everyone -- especially scrappy startups on YC that have aspirations to turn into said dreaded enterprise.

There is a balance that one has to achieve between agility and stability - <USER2> that balance, the agility and stability can all be compromised based on early infrastructure choices.

Sadly, early infrastructure choices are 99% of the time predicated on available budget.

Due to this, there is one infrastructure choice, policy really, that can be made that will provide you with the best available path throughout the life of your companies infrastructure: VIRTUALIZE EVERYTHING

I spend a lot of time in the weeds of infrastructure as I design the physical cable-plant and data center environments that people shove all their stuff into - I cannot virtualize physical cables - but I design the plants around the idea of virtualization.

This means that you want to collapse your traffic to as fat a pipe as possible as quickly as possible. Allowing you to run minimal physical cabling.

as you grow as a company, and you get to a point where your services will transfer from hosted infrastructure to owned infrastructure maintain as much virtualization as possible which will allow you to pivot easier higher in the stack.

With virtualized storage now, the only thing you cant virtualize is your actual transit.

It's funny how net diags now just look like a bunch of tiny clouds linked together then simply to larger clouds.

</comment></comment><comment><USER6> Is the biggest takeaway from why Myspace cratered really that they migrated their technology to a .NET stack?

That seems ridiculous to me.

The being in L.A. thing might be less ridiculous, but I also find it hard to believe that there aren't boatloads of developers in L.A. who couldn't add value to a social networking site.

The reasons that come to mind for why Facebook initially started to attract users away from Myspace are that its profile pages didn't look like the Trapper-Keeper of a 14 year old, and the fact that it had exclusivity from being associated with Universities.

edit(I forgot this one as well): Also the shift from having to seek out your friend's pages to having their updates show up on your main page seemed like a big differentiator.

You can chalk the enhancements made to Facebook after that point to their underlying technology, but I really don't think ASP.NET was responsible for why Myspace sucked.

<comment><USER7> Agreed -- even the technology problems he mentioned seem to have a lot more to do with MySpace's own architecture than the underlying platform.

That said, I think he could have better put it by saying he thought MySpace needed _rock star_ developers, and that they had a harder time getting _rock star_ .NET devs. I'm still not sure that's actually true, but at least it's a little more reasonable.

Anyway, I'm pretty sure Facebook was already eating MySpace's lunch before they even made the asp.net switch. Maybe not in pure numbers, but definitely in momentum.

 _Edit:_ Not that I think MySpace needed _rock star_ developers, just my take of what Scoble was trying to say.

</comment></comment><comment><USER8> I usually like what scoble writes, but this is such nonsense. Myspace would like to believe that they were let down by Microsoft or LA, but the fact remains that they were playing with marbles compared to Zuckerberg's chess.

They could have matched Facebook feature to feature and that too the very next moment. I can guarantee that it would not have changed a thing. Google came out with numerous social plays with better strategy, scale and speed without much success.

Finally if Myspace could not change fast enough it cannot be attributed to the platform. In hindi we have a saying, "naach na jaane aangan tedha"(calling the floor crooked, when you don't know how to dance).

Silicon Valley might be awesome for its talent, but I would bet that there are enough awesome developers in any metropolis to make any web company successful. You need to be a place which needs to be able to attract such people. Being in SV would not have changed a thing, as no good person would have wanted to join Myspace.

</comment><comment><USER9> I'd say a startup based in LA and on MSFT makes life tougher, but not impossible. Developers in LA are scattered and there's probably less of them than SF. And there is less info and components out there to do complex stuff in the MSFT stack. (I work at a MSFT-based startup in LA, so I speak from experience).

At any rate, you can still make it work. Google has an office with developers in Santa Monica (west LA). And StackExchange is a great example of making the MSFT stack work.

By the way, any MySpacers here that got laid off or looking to jump ship?

I'm a developer at Leads360 in El Segundo, CA. And we're hiring developers right now! I've interviewed several MySpacers already and extended offers to a few. We hope to get more :)

Send me your resume, if interested. Good luck.

Bill Paetzke: firstname.lastname@example.com

</comment><comment><USER10> To suggest that MySpace couldn't have changed their product due to a technology stack they moved to (I'm speculating a bit here) rather late in the losing-out-to-Facebook is pretty silly.

Even if close to true, it would be their specific architecture, not the stack.

</comment><comment><USER11> You can try to blame Myspace's "death spiral" is due to their tech stack, moving to L.A., but the root cause is their inability to innovate. It was virtually the same site in 2010 as it was in 2002. Think of how many new features Facebook has launched and relaunched in that time. There was a time when many people enjoyed their custom designed profile pages. But then they grew up and MySpace didn't.

</comment><comment><USER12> I attended a ColdFusion conference back in 2004-5 time frame where one of their top guys was brought in to talk about their success with BlueDragon.NET to allow them to run CFML on .NET as they transition to Microsoft's stack. They talked about how they were posting dozens of revisions a day and things would break regularly. He joked about how when the site went down a little flash game would come up and people started asking for the site to go down again so they could play the game.

Sounded like a mess and other developers in audience felt the same way. Then I signed up and saw how bad it really was as half my searches resulted in errors and the design sucked, among various other issues. Facebook was just awesome in comparison. I think MySpace's death spiral can be almost completely attributed to their lack of professionalism, for lack of a better word, from the start and the only way to remedy would have been to start from scratch.

</comment><comment><USER13> Wow - weird that highscalability put up and edited version of my comment on Scoble's blog.

I have a bunch of friends from MySpace and one common theme I do hear is that they feel that a better architecture (not connected to the stack) would have let them ship stuff quicker.

The interesting thing here from Nick Kwiatkowski's comment on that page is MySpace did a lot of things you'd often see on advice posts here - <USER3> "Rearchitecting/rewriting from the ground up is almost always a fool's errand". It seems like there is a limit to technical debt you can endure. If you rewrite too quickly, you'll be made fun of as the company which killed their product by trying for a massive rewrite/re-engineering effort. Take too long and somebody like FB gets to ship features very quickly and leap ahead of you.

</comment><comment><USER14> _"It wasn't lost on me that yesterday when I was at Y Combinator several of the folks involved there bragged that Ashton Kutcher visited the headquarters a few weeks ago."_

What on earth does this mean? I thought the ashton kutcher meme was simply down to his meteoric popularity on twitter, but this implies that there is something startup-specific about it.

<comment><USER15> He's an active angel investor in California. Also, he was hilarious in Dude, Where's My Car.</comment></comment>


Dropbox Forums: New Sharing Model - <AUTHOR> http://forums.dropbox.com/topic.php?id=21441&replies=3

<comment><USER2> I don't know why, but I all of a sudden feel like all my private dropbox data is now vulnerable to some form of hack, bug, exploit, malicious script, etc, that turns it all into a public web page.

Sharing with just people I know is one thing, but creating a web page of some of my data is another.

I don't know, it just doesn't feel right.

Dropbox, remember, you're dealing with private files on our personal computers, and one step too far and you're looking at mass exodus. Learn from Facebook. Use caution with new features.

<comment><USER3> Yes, I have to add to this sentiment. In my mind, I imagine Dropbox to be just as secure and private as my own hard drive. It's a bit of a fiction, I know, but until now nothing caused me to really question it. I use it for important files -- the sensitive ones that I really don't want to lose.

Maybe it's all perception, but this makes my private files feel dangerously close to the wide open web.

Dropbox, don't make me feel dumb for using your service for stuff that matters. If your service is meant for funny cat pictures and not my tax returns, please tell me now.

<comment><USER4> Hey guys,

I helped build this feature and just wanted to say we're as concerned about privacy and security as you are. A couple specifics that might help:

* No feature is for everyone -- this is opt-in in the strictest sense. (And, since you pick the files/directories, as fine-grained as you want.)

* You can disable a link anytime: from the the sharing tab (<https://www.dropbox.com/share>), click "Linked Items" to see all your links and disable anything.

* 3 means of sharing (shared folders, a public dir, and sharing links) gives you more control over privacy, not less.

* Similar to etherpad links, the shortened db.tt links are public but unfeasible to guess. We've heard a few concerns about the 6-digit hashes -- well, as more links are shared, don't assume the hash will stay at 6 digits :) can't get into details but we do a few more things to make link fishing near-impossible.

<comment><USER2> The problem is how close my data is to being a web page now.

I feel like all that private data is one click away from being public. Anyone passing by my computer can right click and change a folder to a web page, when they get back to their PC, download everything.

At least before there was somewhat of a barrier, though narrow, it was there.

Do the "linked" files at least get a new bold icon with a globe on it or something so I know it's public. Do I get an email when a folder is made public? Something? What if a malicious script is run on my computer that just makes everything public in my Dropbox folder?

<comment><USER5> Anyone passing by your computer _already_ can get to your files.

</comment></comment></comment></comment></comment><comment><USER6> A natural progression. I'm glad they finally went there. I am a happy customer of their 50 gig offering. I know there are a lot of YC companies out there (most of which I am not interested in the least, but hey, different market), but they hit a big market with DropBox.

I'm signing my parents up to coordinate pics, music and videos soon.

</comment><comment><USER7> Bonus points to the first person to write a FUSE filesystem to mount shared Dropbox folders so you can easily download the entire contents of a folder.

Or they could just add a "download folder" link, but that sounds boring. It also looks like they want people to use "Copy to my Dropbox" for that, which would lead to more signups.

<comment><USER8> There is a link at the top that says "copy to my dropbox"

</comment></comment><comment><USER9> Is this a security risk? Could someone, theoretically, enter in a random string of characters and land on your files?

<comment><USER10> No, you still choose which files and folders to make linkable.

Anything you give a url to you should consider to be public anyway.

<comment><USER11> Still a good analysis of using the security by obscurity model for URL's

<comment><USER12> What else would you suggest? This is equivalent to randomly generating a username and password.

</comment></comment></comment></comment><comment><USER13> That is beyond cool. I bet you can put a git repo in dropbox and clone it using the shareable link. I'd test if I didn't have a program to deliver in 4h.

<comment><USER14> I don't believe you can do that. I have tried, but it failed. The interface is primarily for viewing a folder via a web interface I suppose.

</comment></comment><comment><USER15> I bet with the public launch, they will put bandwidth restrictions in place. Otherwise this will be misused in no time.

<comment><USER16> Yeah. It's all fun and games until someone shares an image and it goes to the front page of Reddit.

<comment><USER17> Wouldn't this already be an issue with the Public folder?

<comment><USER18> Yes: <https://www.dropbox.com/help/45>

"There are currently no hard limits on public bandwidth usage. We do, however, have an automated system for detecting and flagging unusual amounts of bandwidth usage. We will send an email notification whenever an account is flagged. Once flagged, public links will be temporarily disabled and users who use the links will see an error page instead of your file."

So, there's no bandwidth limit, but there's a bandwidth limit. :)

<comment><USER19> Yes, it happened to me already. They temporarily disabled the public link after 10GB of traffic or so.

</comment></comment></comment></comment></comment><comment><USER20> Important point:

 _Any file or folder in your Dropbox is now linkable!_

But not quite yet, presumably very soon. Apparently appears in the 0.8 beta clients only, didn't see anything specific about the website (though I don't see it on my account).

<comment><USER21> Another important point (mentioned in a later comment): unlike public folders, only things you choose to make linkable can be viewed. The public folder continues to work the same way.

</comment></comment><comment><USER22> This sounds a lot like drop.io or mediafire etc.. file sharing services with a web interface. Since people were already using the public links to share individual files it makes a lot of sense to expand it to the folder level.

</comment><comment><USER19> I tried the feature and I like it. The only confusion was about "Copy to my DropBox" button. It does only one-time snapshot of the shared area. I would expect to have live access to shared area through my local folder.

</comment><comment><USER23> This is pretty awesome. Might replace senduit.com and similar services for me.

</comment><comment><USER24> This feature has been available in the iPad client for some time now.

</comment><comment><USER25> Tonido 1-click share does the same thing. Get a shareable link to a file or folder:

<http://www.youtube.com/watch?v=NtFRqNcGIP4>

</comment><comment> brown9-2 Dropbox has a music player now?</comment>


Analyzing HN readers' personal blogs - <AUTHOR> https://www.dannysalzman.com/2020/04/08/analyzing-hn-readers-personal-blogs <comment><USER2> Of those who responded to the 'what is your blog and why should I read it' thread. HN is large. Likely larger than many of its visitors realize because the participants are a relatively small fraction of the readership.

So HN _readers_ are not necessarily contributors. And not all contributors would plug their blogs in a thread asking them to do so.

If you want to get an idea of the HN readership rather than of the HN contributors you may want to start off by scraping all the profile pages instead, it will give you a much larger set of sample data to work with.

<comment><AUTHOR> That's a fair point! I would have to read HN's terms of use though. Not sure if that's allowed or not. I felt good scrapping the comments section since everyone there "opted in " to share their website to the broader community.

<comment><USER2> You can take it as read that people who write blog posts do that to share them with the broader community.

Could one of you downvoters please explain why you think people would post blog posts if they do not want to share them? I fail to see how that would be possible.

<comment><USER3> And you never foresee the ripples. I wanted to buy books online and trade stocks when I was a student. MasterCard/Visa in Algiers, Algeria was a rarity, and banks didn't communicate.

I called every bank in the country that was listed by the central bank, I knocked on their doors until I found one that offered students a card.

I even had to write a document because they didn't have a form for that case. I finally got my card after a week of trips to the bank, city hall, administration, providing documents that were unlisted, etc.

I computed that this wasted time multiplied by the number of people who would eventually go through the process and the fact almost nobody in the country had the card warranted detailing the steps. It would save time, and contribute to reduce the "underbanking". I wrote a blog post explaining how to do it with steps, as in provide the following documents, take these amount in these currencies. I attached the document/form I wrote so people could fill it and take it directly to the bank and save a trip. That asymmetry in information bothered me.

That post 2013 post is read hundreds of times per day. It had more than a thousand comments, although it only lists 700+. People asking me questions, then getting their own cards, then themselves answering other people's questions, then updating me on what has changed.

People I would meet in real life would tell me I looked familiar, and then they'd put it together and tell me they followed the post to get their card. Sometimes people referred me to my own post in case I wanted to get a card.

I received emails from people freelanced online who wanted to bring money back here. One person even sent me credentials to their online account with thousands of dollars in and asked me if I can find a way to transfer it here (I told that person not to do that again and she said she felt she could trust me).

Many times I'd receive a phone call from a friend who'd say they wanted to get a card, looked online, found a great post, then saw my name and laughed out loud because they knew me.

And of course, I met interesting people.

<comment><USER2> Yes, indeed. I have a few like that and I always wonder why those were the ones that got legs. This one for instance generates a couple of emails per week still years after:

[https://jacquesmattheij.com/if-you-have-nothing-to- hide/](https://jacquesmattheij.com/if-you-have-nothing-to-hide/)

This one too, even inspired a play!:

[https://jacquesmattheij.com/trackers/](https://jacquesmattheij.com/trackers/)

<comment><USER3> I read the two pieces sequentially: from tragic to tragicomic.

</comment></comment></comment></comment></comment></comment><comment><USER4> Link to the raw file is broken - Try this [http://dannysalzman.com/files/hn- blogs.csv](http://dannysalzman.com/files/hn-blogs.csv)

</comment><comment><USER5> Interesting to see the high numbers for GA. A bit of 'do as I say, not as I do' going on?

<comment><USER6> Probably because there isn't a good free analytics service that is easy to use (no need for self-hosting) and is able to collect the info that one wants. GA is free, and easy.

<comment><USER7> Piwik is free and does everything GA does. You can self host the analytics dashboard so no 3rd party privacy issues.

<comment><USER8> Self hosting is about as far from easy as you can get though.

</comment></comment></comment></comment><comment><USER9> What does the "Programming Languages" section mean? Blogs that discuss the languages? Use the languages in snippets within posts?

<comment><USER10> I'm assuming the programming languages that CMSs people are using are written in, hence the dominance of PHP and Node.js.

</comment></comment><comment><USER11> I like the analysis. However, I am curious why entries are not sorted by counts. As a rule of thumb, sorting alphabetically makes no sense!

Also, 382 sounds like a very small number, given the size of HN. I did try to find many blogs I read, but couldn't find one. So, crucially - was it a random sample? Or sample from top-liked, or from a particular month?

some findings (e.g. the prevalence of Wordpress) may depend on this procedure.

<comment><USER2> At the top he writes how he got the data, from the 'what is your blog and why should I read it' post.

<comment><USER11> I missed that thing, without clicking the link. (I understood it was an inspiration rather than "Analysis of self-posted blog post to thread X".)

</comment></comment></comment><comment><USER12> If you're interested in more about what these blogs contain, I review the links in all these threads at [https://kickscondor.com/hrefhunt/](https://kickscondor.com/hrefhunt/).

For example, here's one from last year's thread at this time: [https://www.kickscondor.com/hrefhunt/6/](https://www.kickscondor.com/hrefhunt/6/)

<comment><USER13> [off topic] FYI, i found this comment by subscribing to the RSS feed of your HN comments on Fraidycat (by linking to [https://edavis.github.io/hnrss/](https://edavis.github.io/hnrss/) for your username)

Very cool!

<comment><USER12> Oh hey - just saw this. Thank you for this link - I've been looking for just such a thing!

</comment></comment></comment><comment><USER14> I think I can spot my blog in the Analytics section, I guess I'm the only one using Gauges as analytics.

<comment><USER15> Ha -- I'm one of the 4 hosted with Caddy web server!

All of my other attributes were in the majority (Hugo, Google Analytics, etc...)

</comment></comment><comment><USER16> > Static Site Generators

how can that be detected ? I'm curious.

<comment><USER17> "generator" meta tag? [https://html.spec.whatwg.org/multipage/semantics.html#meta-g...](https://html.spec.whatwg.org/multipage/semantics.html#meta- generator)

<comment><USER18> Jekyll only adds that if you use their "SEO" plugin: [https://github.com/jekyll/jekyll-seo- tag/blob/0943563d0aac60...](https://github.com/jekyll/jekyll-seo- tag/blob/0943563d0aac6013187c742f38b90fc576075fda/lib/template.html#L6). (I don't use that plugin, so I add it manually to mine.)

<comment><USER19> If I'm not mistaken, Jekyll also adds it in the RSS feed metadata, if you use that plugin, but that's already a bit far fetched.

</comment></comment></comment></comment><comment><USER20> That's a helpful list of Google Analytics alternatives to check out, thanks!

There are 13 websites using Parse.ly, which starts at $500 per month! For a personal blog??

<comment><USER2> The vast bulk of those are medium sites, possibly a volume deal with medium?

[http://robotoverlordmanual.com/](http://robotoverlordmanual.com/) [https://medium.com/@andzwa](https://medium.com/@andzwa) [https://medium.com/build-ideas](https://medium.com/build-ideas) [https://medium.com/chrismarshallny](https://medium.com/chrismarshallny) [https://medium.com/ing-blog/tech/home](https://medium.com/ing-blog/tech/home) [https://medium.com/@matthagy](https://medium.com/@matthagy) [https://medium.com/modern-nlp](https://medium.com/modern-nlp) [https://medium.com/open-factory](https://medium.com/open-factory) [https://medium.com/@romanorac](https://medium.com/@romanorac) [https://medium.com/@soatok](https://medium.com/@soatok) [https://medium.com/@zakjan](https://medium.com/@zakjan) [https://sidstechcafe.com/](https://sidstechcafe.com/) [https://vladaionescu.com/](https://vladaionescu.com/)

</comment></comment><comment><USER21> Neat. Here's my blog if you do another run. [https://www.forrestthewoods.com/blog/](https://www.forrestthewoods.com/blog/)

It's artisanally hand crafted HTML with a little VanillaJS on a few pages. No static generator used. Also hosted on Netlify. Although I use BunnyCDN for large media. I post very infrequently.

</comment><comment><USER22> I'm surprised and a bit disappointed that only 4 of them use Matomo. I assumed this to be the quasi standard alternative to Google...

<comment><USER23> It's not an alternative if it's not free.

<comment><USER24> The self-hosted version is free.

</comment></comment></comment><comment><USER25> I suspect that the larger-than-one-might-expect representation here for Erlang and Cowboy (an Erlang web server) is caused by sites hosted on Heroku, which would return Cowboy/Vegur in the Server header, rather than because many HN users are actually maintaining Erlang application servers to serve their blogs.

<comment><USER26> Interesting, I didn't know Heroku used that stuff. It could be from Elixir/ Phoenix websites right?

</comment></comment><comment><USER27> I would like to see a word frequency count gathered from all the articles written on all these blogs and see if there's any interesting patterns.

Bonus if you can segment the data by date as well so we can see trends over time.

A person that builds such a system would have access to some pretty useful data.

</comment><comment><USER28> > ended up copy and pasting all of the text from the entire post and then > using regex on the command line to spit out a list of URLS.

I had a chuckle. This is how so much data analysis happens in practice. Nothing like the command line for quickly cleaning some data.

Great work!

</comment><comment><USER29> I missed the original HN post, added my comment to the thread. Great work on the analysis.

</comment><comment><USER30> Thank you for putting this together!

Surprising insights: many actually use Google AdSense, nginx over apache

I'd definitely be curious in: PageSpeedInsight (score, load time and size), post frequency/length past 12months, external link density

<comment><USER30> I answered some of my own questions:

      "time": {
        "minTime": 0.7,
        "maxTime": 53.5,
        "meanTime": 5.5,
        "medianTime": 3.1
      }

     "size": {
      "minSize": 1,
      "maxSize": 33484,
      "meanSize": 1536,
      "medianSize": 1565
     }

</comment></comment><comment><USER31> It would also be interesting to analyse the domain name registrars and DNS hosting providers used.

Based on my experience with the HN crowd, I'd predict that Gandi + Cloudflare would be a common one, with NameCheap closely behind.

</comment><comment><USER32> Looks like the link to the CSV file is broken, which is a shame.

<comment><USER33> Its here [https://www.dannysalzman.com/files/hn- blogs.csv](https://www.dannysalzman.com/files/hn-blogs.csv)

</comment></comment><comment><USER34> One interesting thing that this didn't catch was my CMS, Craft—which I think is a signifier that Craft didn't leave a lot of fingerprints.

</comment><comment><USER35> It would be interesting, in a future part of this series, to cross-reference the performance data with the technology used.

</comment><comment><USER36> Not sure if I added my blog late to that thread but it's not in the dataset.

Granted there were a lot of URLs in that post!

</comment><comment><USER37> It's interesting, and telling, that Windows/IIS doesn't appear at all.

Or did I miss something?

<comment><USER38> We run all our website on ASP.NET Core, but we have a forum and blog which basically automatically mandate MySQL. We played around with PHP on IIS [0] for many years before giving up. We also tried the opposite and hosted our app on Mono before giving up on _that_ due to bugs that would randomly cause compilation errors [1].

Long story short, two completely separate backends each running on most reliable platform for the stack. And nginx is in front of it all. Ping the root domain and you'll think you are on a big-standard Linux/nginx confit, even though it definitely is not.

So don't assume no IIS!

[0]: [https://neosmart.net/blog/s=php+iis](https://neosmart.net/blog/s=php+iis)

[1]: [https://neosmart.net/blog/tag/mono/](https://neosmart.net/blog/tag/mono/)

</comment></comment><comment><USER39> I would have thought that more blogs were on dev.to than these technology analytics suggest.

Their stack is Rails+Preact.

</comment><comment><USER40> Nice work.</comment>


How to Manage Your Fear of Public Speaking According to a Conference Host - <AUTHOR> https://betterhumans.coach.me/how-to-manage-your-fear-of-public-speaking-92964d531147 <comment><AUTHOR> Posted this here because most of the advice comes from training speakers at tech conferences like Web 2.0 and Lean Startup.</comment>


Ask HN: Is anyone struggling with their browsers? - <AUTHOR> I am using a 5 year old laptop mostly with 8 Gigs of RAM, 2.5 GHz midrange i5 of that time.
I run Win7/Ubuntu duel boot, and lately I am always going out of memory within a few tabs (around 6) in latest Firefox, Chrome, Chromium and other WebKit/Gecko clones..
When I am not browsing, I routinely do beefy C++ compilations in VS, and huge blender builds, all of which happen seamlessly.
The browsing experiance is kinda shitty nowadays, with constant hangups and reboots across the OSs
In the process view, I see a lot of processes being spawned with the same title, each consuming around 700,000K of working memory? Thats a lot per process
Is anyone having similar problems? <comment><USER2> It's not the browsers. It's the single-page apps.

I can have 50 HN or readthedocs tabs open in Firefox with negligible memory impact. But two to three tabs of apps (say, Gmail and Trello) or a handful of over-engineered news and blog articles, and it's swap city plus beach balls from CPU usage. And that's WITH ad blocking on.

On Mac, Safari is the least awful offender, but the bar is pretty low.

</comment><comment><USER3> Yes, I've been having the same issue since about the time I upgraded our 8 year old home laptop (8 GB RAM) from Ubuntu 16 to Ubuntu 18. I had to switch to LUbuntu to keep the system usable, but Web browsing still grinds to a halt if I leave a gmail tab open too long.

</comment><comment><USER4> same same, I recently bought a second-hand laptop for $150, an i5, came with 4 gigs and I bumped it up to 8 gigs and installed ubuntu, I use firefox.

I noticed facebook, gmail and a few other sites really killed performance, the interface would freeze with high swap and cpu.

I keep them closed now, I use session manager to start and stop sessions.

I tried a tab suspender, it used to work fine but I'm not sure what happened to it, eventually it disappeared from firefox addons website and someone started a new project, but I got weird issues with other extensions like ublock origin crashing with the tab suspender running, whereas they are fine when the tab suspender is disabled.

So, for now, I only start facebook and gmail when I'm using them and close them when I'm not.

Edit: before firefox containers were a thing I had a profile for different tasks, one for facebook, one for google, etc, to try and limit tracking. I have no idea how effective that is, I'm thinking not very. But anyway, that's also a handy way to start and stop sessions. You have the setting to restore the previous session, and when you exit and start it up again, only the tab with focus gets loaded into memory, the other tabs load when you click them. So you can have 20 tabs opened and restarting the profile only loads one tab, then others load on demand.

</comment><comment><USER5> Have you given Safari and to a lesser extent Edge a go? I have the same experience with Chromium based browsers, less so with Firefox. I find Safari heavily optimised, its just bad with reloading/repainting the page when using the back button.

I think the problem is the guys making Chrome have 256G of RAM on their dev machines and hardly ever have the constraints of a normal use situation. Optimising RAM usage doesn't seem to be a priority.

</comment><comment><USER6> No such problem on an i5 7th gen with 8 GB ram. I use both Windows 10 and Ubuntu on it. Sometimes I have 20-25 tabs on my firefox. Maybe you should check your browser addons.

</comment><comment><USER7> No. At work I run both chrome and Firefox on Ubuntu simultaneously with multiple tabs open. At home with Firefox on Debian. Never had problems.

Although both computers have 16gb ram.

</comment><comment><USER8> I don't have any problem on both laptop (MacBook Pro, 16GB) and desktop (Mac Mini, 8GB). I usually open 20-30 tabs. Did you try disable some plugins?</comment>


User-agent string changes - <AUTHOR> http://msdn.microsoft.com/en-us/library/ie/hh869301(v=vs.85).aspx <comment><USER2> UA strings need to die a horrible horrible death. "Everyone" should just agree on a standard string and completely stop updating them with anything else (and eventually remove the standard string, in theory).

Feature detection is a major step forward HOWEVER sometimes a feature is "supported" but has different incompatible behaviour between browser A and browser B. I feel like that is less common today than it was even four years ago thanks in part to a better working relationship between browser vendors but also due to more comprehensive test suites and people spending time testing new functionality.

If they absolutely insist on keeping UA strings then let's wrap them in a Javascript structure. Parsing them is insanely convoluted at this point (which is why many just use .Contains() which has its own issues). Just have e.g. UA.Agent (.Name, .Version, .OS) and UA.CompatibleWith[] (.Name, .Version, .OS).

<comment><USER3> So, the one main use case that can't be handled by feature detection or a JavaScript API is returning a mobile or desktop site without extra round- trips.

If a server can detect that you have a mobile user-agent, it can directly deliver you an optimized mobile site, that avoids sending lots of extra data that is only relevant for the desktop version, and avoids extra slow round- trips to fetch data later once JavaScript based detection has had a chance to run.

UA strings are awful, but I haven't seen any other good solution for this problem.

<comment><USER4> Why are desktop and mobile sites so different? Why do they _need_ to be different? Can't we just make responsive designs?

Having separate desktop and mobile sites is an anti-pattern.

<comment><USER5> I disagree, there are instances where having a completely different website for a smaller form factor is beneficial to the user.

<comment><USER6> It is! And I wish more sites would make it accessible like it used to be by just going to m.domain.tld rather than user-agent sniffing, because I often prefer the simpler mobile version I get when I spoof my user agent from the desktop.

<comment><USER7> Which is great.. until I do a google search for my closest movie theater on my phone to pull up the listings... the link to that theater's page is right at the top... "great" ... now I click the link and the site redirects me to m.theater.com/ (no path after the slash) ... now I'm stuck slogging through several pages to get to what I wanted.

This happens a lot.. there's a page on the desktop site that doesn't correspond. Responsive design still shoves a lot of extra resources at a client that the smaller devices especially don't need. Responsive rendering then loading an adaptive client in the browser is a better option... browser sniffing is the only way to do this.

</comment></comment></comment></comment></comment></comment><comment><USER8>
      Mozilla/5.0 (Windows NT 6.4; WOW64)
      AppleWebKit/537.36 (KHTML, like Gecko)
      Chrome/36.0.1985.143 Safari/537.36 Edge/12.0

This is getting ridiculous. Every browser is now pretending to be all browsers at the same time, and a simple version change apparently warrants an entire article.

Not sending the UA string would avoid this madness. But on the other hand a UA string is great for analytics. Is it possible to come up with some method that discloses information about the user agent which can be used for analytical purposes but cannot be used to change the bahaviour of a web page?

<comment><USER9> Isn't this a trademark infringement? They're using AppleWebKit, Chrome, Safari to identify their product when those terms are protected from use via trademark law.

I know this isn't a new thing _per se_ but this seems to be an especially egregious misrepresentation.

<comment><USER3> No, because this is not in any way going to cause consumer confusion, but instead is simply used for compatibility purposes.

<comment><USER9> Confusion is the measure used when trademarks aren't registered and is much harder to prove. When considering registered trademarks it's not necessary for confusion to be actually present at all - 100% of customers can know that your product isn't an iPad but if you advertise it as an iPad then you're infringing: it doesn't say "AppleWebKit compatible" in that string and the string is not required to make the browser function at all.

If, for example, people offer alternative services to people with an Apple UA string (BBC iPlayer did this) then you're impersonating such tech use via the trademark - it might be now for example that people need to turn off specific iPad enhancements as they break IE11 - that's commercial interference using a trademark. The trademark isn't needed in any technical way for IE to operate as it should, so it's not a compatibility issue.

Website content owners can choose to cut out certain browsers if they wish, impersonating another browser is fine .. but if you do that as a company utilising someone else's trademark to do so .. it just has feeling for me of not sitting quite right with what I know of TM law.

<comment><USER10> I would think the courts would recognize a difference between advertising to the end user for the purpose of purchase/consumption, and advertising to 3rd parties as part of a compatibility protocol.

The UA string is not visible to the consumer, and wouldn't affect the number of people who download and install the browser.

Its only purpose is to ensure compatibility with the server after the browser has already been installed.

Also I wouldn't say the browser is actually _impersonating_ another browser. If it was trying to impersonate, the UA string would need to match the other browser exactly and it doesn't attempt to do that. The string is still uniquely identifiable as an IE11 UA.

</comment></comment></comment></comment></comment><comment><USER11> I think the more interesting bit is that the new UA value contains all the alternative browser strings as well.

      Mozilla/5.0 (Windows NT 10.0; WOW64)
      AppleWebKit/537.36 (KHTML, like Gecko)
      Chrome/36.0.1985.143 Safari/537.36 Edge/12.0

<comment><USER12> I also read like a history of web browsers: first there was _Mozilla_ , then _Apple_ made _WebKit_ (actually _KHTML_ ), then Google created _Chrome_ and ... there will always be a bleading _Edge_ for you to cut yourself :-)

<comment><USER13> Actually, _first_ there was NCSA Mosaic which came out almost a full two years before Netscape Navigator. The first 6 versions of IE were also based on Mosaic.

<comment><USER14> But what UA did Mosaic use?

<comment><USER13> Looks like they used something along the lines of "NCSA Mosaic V# (OS/Machine info)".

I'm wondering if the last one listed on this page is correct though:

        NCSA Mosaic/1.0 (compatible; NCSA Mosaic; AmigaOS 5.9; FuckYou ver.0.9.3)

From [http://www.webuseragents.com/browser/ncsa-mosaic/ncsa- mosaic...](http://www.webuseragents.com/browser/ncsa-mosaic/ncsa-mosaic-1-0)

<comment><USER4> I think "FuckYou ver.0.9.3" is some obscure (possibly joke) browser claiming NCSA Mosaic/1.0 compatibility, note the "compatible;", like IE pretends to be Mozilla. That specific string is _only_ found on webuseragents.com:

[https://encrypted.google.com/search?hl=en&q=FuckYou%200.9.3#...](https://encrypted.google.com/search?hl=en&q=FuckYou%200.9.3#hl=en&q=%22FuckYou+ver.0.9.3%22)

</comment></comment></comment></comment></comment></comment><comment><USER15> We'd all be better off if they just stopped sending the UA string altogether

<comment><USER16> These strings make the parser guy in me just twitch. Do they expect many, many web developers to reliably extract accurate meaning from them?

<comment><USER17> I think it's the other way around. This happens when a field that no-one ever defined a syntax for suddenly gets important and everyone tries to extract meaning from it using arbitrary contains() and substring() acrobatics...

<comment><USER16> So it's organic and ill-defined . . . and people are parsing it. Lovely :-)

</comment></comment></comment></comment><comment><USER18> I'll post here the same thing I posted on another HN post about user agent strings [0], because it's still relevant. I'll also add that the MS article link artfully dodges the whole "we suck at UA sniffing" issue their own products have.

Asp.Net 2.0 (and up to 3.5, which is still framework 2.0) sites use UA sniffing to determine which markup to emit for many built-in controls, like Asp:Menu. When Yosemite / iOS 8 / Safari 8 was released, anyone with a SharePoint 2007/2010 site had their navigation get all screwy. I know first hand how infuriating someone's badly designed UA sniffing can be; it happened to me, and I wrote up a fix for it [1].

Why did it happen in the first place? Where did the UA sniffing fall apart?

A poorly designed RegExp looking for "60" in Safari's UA without a word boundary or EOL check. The new Safari UA includes "600" in the relevant section, and suddenly SharePoint sites were sending markup intended for (now) ancient browsers - browsers that weren't even on the compatibility list for SharePoint in the first place.

UA sniffing does need to go away for determining what structure your markup sends to the user agent.

Edit: linked to earlier comment mentioned at beginning of this one

[0]: [https://news.ycombinator.com/item?id=8647749](https://news.ycombinator.com/item?id=8647749)

[1]: [http://blog.sharepointexperience.com/2014/10/did-safari- or-i...](http://blog.sharepointexperience.com/2014/10/did-safari-or- ios-8-break-your-sharepoint-2010-site/)

</comment><comment><USER19> I alway like to link to this blog post when UA's come up:

History of the browser user-agent string - [http://webaim.org/blog/user-agent- string-history/](http://webaim.org/blog/user-agent-string-history/)

</comment><comment><USER20> I assume this also means the internal version will be 10.0? Although they're deprecating that API anyway, and telling you to use a bunch of helper functions instead, so maybe it's not too important.

</comment><comment> slipstream- This isn't just about the UA string.

The NT kernel version in the latest builds of Windows 10 has changed from 6.4 to 10.0 (as first revealed by Chinese leaks), and this article basically confirms it.

Make of that what you will.

<comment><AUTHOR> Before mods renamed title to "User-agent string changes" it was "...Windows NT value in the UA string will change from 6.4 to 10.0..."

</comment></comment><comment><USER21> Part of the reason for the change is that they removed X-UA-Compatible. I would have suggested TridentEdgeOnly/x.x.

</comment><comment><USER22> Microsoft. Your hubris is legendary!

Feature detection DOES NOT SOLVE THE PROBLEM!

The problem is poor, inconsistent, unreliable and incomplete adoption of features. Moderizr is no help here.

Unless Internet Explorer magically can be treated at the same level as modern browsers, we will have to find a way to target it. Without a clear way to do that, we have to use hacks. I hate hacks and workarounds. I hate Internet Explorer.

</comment><comment><USER23> Will it be "Microsoft Internet Explorer/11.0"?

</comment><comment><USER24> Do they support NaCl and WebRTC and WebGL and WineVine DRM like Chrome, now that they stuff "Chrome" in their User-Agent? If not, what happens if a site (poorly) detects these features from the user agent?

<comment><USER4> Why on earth would you detect those things server-side, given you can do the fallback client-side?

Also, no, they don't have those things, aside from WebGL and some form of DRM (not sure if it's the same as Chrome's). The reason they put Chrome in is for sites assuming only Chrome supports web standards (ugh).

<comment><USER24> It could easily happen client-side, with something like /Chrome/.test(navigator.userAgent).

I mean, there's probably sites using code like this already, why else would IE implement such a user-agent? But then they can't really know _which_ Chrome feature the code is looking for.

I guess they are moving from being unfairly excluded from modern standards, to possibly overshooting their target and getting served experimental features they don't support.</comment></comment></comment>


Life after when you loose all your data stored in hard-drive - <AUTHOR> https://medium.com/p/7d4cc7e2ca2f

<comment><USER2> You didn't lose your data!

I've been dealing with backups a fair bit recently, using Obnam over SSH. It starts to induce paranoia at a certain point, with concerns over your safest backup drive failing, so you save to a third and so on... it's hard drives all the way down.

They usually say Dropbox etc. isn't a backup solution, but I suppose it would have saved you here if it didn't sync from elsewhere.

Finally, use a friend to proofread next time - I'm a linguist so like a challenge, but not everybody does :)</comment>


Why we should design things to be difficult to use - <AUTHOR> http://www.theguardian.com/commentisfree/2015/mar/04/why-we-should-design-things-to-be-difficult-mastery

<comment><USER2> _So his team devised a five-button keyboard where you pressed chords simultaneously to write words, delete, copy and paste. In the end, the mouse triumphed, as computer manufacturers believed that only hardcore programmers had the patience to learn the key combinations._

Several chorded keyboards came to market in the UK, receiving plenty of press (eg coverage on an influential weekly TV technology magazine program, in the days when there were only a handful of broadcast channels). They all failed dismally despite attracting a small core of devoted fans.

You can get highly customizable mice with multiple programmable buttons etc. Only gamers buy them. I _do_ edit video and audio for work and while I like my key combos as much as the next person and sometimes set up hardware mappings on external devices for big jobs, I don't think any of them need to be universal.

<comment><USER3> The author might not have intended it but what he's describing is emacs, not chording keyboards.</comment></comment>