Fragile narrow laggy asynchronous mismatched pipes kill productivity - <AUTHOR> https://thume.ca/2020/05/17/pipes-kill-productivity/ <comment><USER2> So I have been thinking about software projects lately, and I have come to the conclusion that a lot of these tools/solutions exist to "build houses" when most of us are just throwing together lean-to sheds and dog houses.

Software projects today are naturally more complex and have more complex tooling the same way building a house today requires more knowledge and skill than it did 50 years ago.

Then there are some folks/organizations building cathedrals, and the associated tooling (react, angular, maven, etc) and all the rest of us look up in awe and thing "well I guess if I want to be that good I need to use those tools on this dog house."

But your dog house doesn't have the need to host parties, provide security, or even real weather protection other than a roof to keep the rain and sun out. Yet we all try to build our dog houses in ways that might be better if they are one day converted to a proper living quarters but likely will never have a need for running Water or windows.

<comment><USER3> French cooking's _mise en place_ or _first order retrievability_ by Adam Savage or _Lean Engineering_ or whatever.

There's a common thread among them, having what you need, when you need it, where you need it, and understanding how to use it.

This is what is lacking. The original Unix philosophy build by greybeards and university linguistics and language professors had this at it's core. The "do one thing well" combined with how the shell worked being driven by people who really _really_ understood language and came up with one that made sense to them for interacting with computers... was, is still somewhat, _wonderful_.

What's missing today is exactly what you mention. People designing tool sheds with materials often shoddily designed for cathedrals.

Complexity. This is the enemy, the second enemy is bad attempts to reduce complexity which often end up adding more complexity than they take away, just harder to find.

The favourite example of this is - perhaps apocryphal, but entirely believable - is replacing dozens of nodes using fancy big data tools with one node running sed/awk,etc.

One thing is clear, nowhere I've been has had the tools readily available, the documentation clear and forthcoming, and the scale in the right range for projects.

I found myself recently solving a problem with Hashicorp Vault using GCP to verify identity of machines wanting secrets. It was a stretch goal which had been on my plate for six months, every once in a while I would try to go back and figure out how to make it work, and months and months and months after trying, I put it together and it worked perfectly. The documentation to lead to this understanding had to be read out of order on several different pages with some lucky guesses to arrive at the solution, which in the end was just a few steps easily explained. _Afterwards_ the documentation was fine and made perfect sense. _Before_ I grokked the issue the documentation just seemed like a bunch on nonsense which led me to believe what I wanted to do wasn't possible in a constrained security environment.

That is the kind of problem I solve all the time as someone with a decade of DevOps,SysAdmin,whatever experience behind me. Not using knowledge and tools to amplify what I do, but spending 60% of my time confused as hell about something which should be obvious and is only obvious afterwards, 20% trying to convince people of things they're often reluctant to believe, and 20% actually using built up knowledge and tools to do many many things very quickly. It's frustrating.

<comment><USER4> > Not using knowledge and tools to amplify what I do, but spending 60% of my > time confused as hell about something which should be obvious and is only > obvious afterwards, 20% trying to convince people of things they're often > reluctant to believe, and 20% actually using built up knowledge and tools to > do many many things very quickly. It's frustrating.

It also creates some nasty perverse incentives. Because if you spend the hours to find the best way to do something that should be simple, it often turns out to actually be simple. API function #487 does just exactly what you need, if only it hadn't taken seven hours to find it. So then you spend a day writing five lines of code that should have taken half an hour, but in the end you have a good solution.

But there is an alternative to that. You can reinvent the wheel. Instead of spending your time understanding the unnecessarily complicated thing with poor documentation, write some new code to do just your thing.

And who looks more productive to the boss? The one who spent all day to write five lines of code, or the one who added a complex new feature that clearly took a lot of time and effort (but will now take ten times more effort to maintain)?

This is especially nasty because it's not always an obvious answer. Sometimes the existing wheel is made of glass and is shaped like a triangle and reinventing it is totally worth it, and then you spend all day discovering that and still have to spend tomorrow doing what a lazier person did yesterday.

Whereas without the unnecessary complexity the right answer would have been obvious much sooner.

<comment><USER5> This is why good documentation is such a wonderful feature. I like Elixir for lots of reasons but the documentation for the core language and particularly for Phoenix (the primary web framework) is the best technical documentation I have seen in any context, ever.

It makes _such_ a difference to your ability to get things done with unfamiliar libraries etc.

</comment></comment></comment></comment><comment><USER6> Failure is such a fun thing to think about, and it gets handwaved away so often. So many devs, architects, product owners, etc, just focus on happy path, and leave failure unspecced, unhandled, and just hope it never happens. And then boast about 99% uptime, but once you start questioning them you find out they get weekly pages they have to go investigate (and really the system is behaving weirdly a solid 10% of the time, but they don't know what to do about it and it eventually resolves itself, and they don't count "pageable weirdness" in their failure metric).

It's actually one of the things I love about Erlang, and how it's changed my thinking. Think about failures. Or rather; don't. Assume they'll happen, in ways you can't plan for. Instead think about what acceptable degraded behavior looks like, how to best ensure it in the event of failure, and how to automatically recover.

<comment><USER7> On the subject of failures, you might like this blog post [https://danluu.com/postmortem-lessons/](https://danluu.com/postmortem- lessons/) if you haven't seen it before.

</comment></comment><comment><USER8> I think git is a good model for what would otherwise be "laggy async and mismatched" distributed systems.

It has a fast sync algorithm, and after you sync, everything works locally on a fast file system. You explicitly know when you're hitting the network, rather than hitting it ALL THE TIME.

\-----

I would like to use something like git to store the source code to every piece of software I use, and the binaries. That is, most of a whole Linux distro.

I have been loosely following some "git for binary data" projects for a number of years. I looked at IPFS like 5 years ago but it seems to have gone off the rails. The dat project seems to have morphed into something else?

Are there any new storage projects in that vein? I think the OP is identifying a real problem -- distributed systems are unreliable, and you can get a lot done on a single machine. But we are missing some primitives that would enable that. Every application is littered with buggy and difficut network logic, rather than having a single tool like git (or rsync) which would handle the problem in a focused and fast way.

It would be like if Vim/Emacs and GCC/Clang all were "network-enabled"... that doesn't really make sense. Instead they all use the file system, and the file system can be sync'd as an orthogonal issue.

Sort of related is a fast distro here I'm looking at: [https://michael.stapelberg.ch/posts/2019-08-17-introducing-d...](https://michael.stapelberg.ch/posts/2019-08-17-introducing- distri/)

<comment><USER9> I have been interested in "git for binary data" for a while, mostly for ML/computer vision purposes.

I've tried quite a few systems. Of course, there's git-lfs (which keeps "pointer" files and blobs in a cache), which I do use sometimes - but it has a quite few things I don't like. It doesn't give you a lot of control on where the files are stored and how the storage is managed on the remote side. The way it works means there'll be two copies of your data, which is not great for huge datasets.

Git-annex ([https://git-annex.branchable.com/](https://git- annex.branchable.com/)) is pretty great, and ticks almost every checkbox I want. Unlike git-lfs, it uses symlinks instead of pointer files (by default) and gives you a lot of control in managing multiple remote repositories. On the other hand, using it outside of Linux (e.g., MacOS) has always been a bit painful, specially when trying to collaborate with less technical users. I also get the impression that the main developer doesn't have much time for it (understandably - I don't think he makes any money off it, even if there were some early attempts).

My current solution is DVC ([https://dvc.org/](https://dvc.org/)). It's explicitly made with ML in mind, and implements a bunch of stuff beyond binary versioning. It does lack a few of the features of git-annex, but has the ones I do care about most - namely, a fair amount of flexibility on how the remote storage is implemented. And the one thing I like the most is that it can work either like git-lfs (with pointer files), like git-annex (with soft- or hard- links), or -- my favorite -- using reflinks, when running on filesystems that support it (e.g. APFS, btrfs). It also is being actively developed by a team at a company, though so far there doesn't seem to be any paid features or services around it.

Pachyderm ([https://www.pachyderm.com](https://www.pachyderm.com)) also seems quite interesting, and pretty ideal for some workflows. Unfortunately it's also more opinionated, in that it requires using docker for the filesystem, as far as I can tell.

Edit: a rather different alternative I've resorted to in the past -- which of course lacks a lot of the features of "git for binary data" \-- is simply to do regular backups of data to either borg or restic, which are pretty good deduplicating backup systems. Both allow you to mount past snapshots with FUSE, which is a nice way of accessing earlier versions of your data (read- only, of course). These days, this kind of thing can also be done with ZFS or btrfs as well, though.

<comment><USER10> +1 for DVC. Setting up the backing store can be some extra work if you are doing that yourself, but after that it's a breeze.

What do you use for the backing store?

Git-lfs has been a pain in my seat since my first use of it. Most of the issues stem from the pointer files that have to be filtered/smudged pre/post commit.

Haven't used git-annex myself, but I have heard from coworkers that cross-OS is a pain.

<comment><USER9> Mostly S3. I used to do SSH, but these days I can afford to keep the data in the cloud. I do appreciate the possibility of migrating to other stores if needed in the future, though - might have to soon, for $reasons.

</comment></comment></comment></comment><comment><USER11> See also Peter Deutsch's "Fallacies of Distributed Computing" list ([https://en.wikipedia.org/wiki/Fallacies_of_distributed_compu...](https://en.wikipedia.org/wiki/Fallacies_of_distributed_computing)).

There's some overlap, but also some new stuff. In particular, "pipes" isn't covered by the Fallacies list and is consistently a pain point and/or issue you always face in some way. Also "asynchronous" isn't covered by the Fallacies list.

</comment><comment><USER12> > Sometimes a distributed system is unavoidable, such as if you want extreme > availability or computing power, but other times it's totally avoidable.

But so much of our sales pitch involves these shiny cloud systems.

Who ever sold business by telling the customer: "Your use-case really isn't exciting, and a boring batch-driven process is completely appropriate"?

<comment><USER13> I do it like that, it's always met with excitement like "oh wow, all these other companies were telling us how hard and costly and lengthy it will be, thank you"

<comment><USER12> Do you ever have the experience of doing a prototype, and the customer looks at it and says: "Great work. Put it into production"?

<comment><USER14> every. damn. time. i'm a freelancer, so there's not a dev team behind me. the client likes what i made, and wants to start using it. realizing this, i've started spending much more time on the UI/UX (even though i'm not one of those guys) to at least make the tool useable in a dogfooding way.

<comment><USER15> Maybe it's not 100% relevant to your case, and maybe you've already seen it, but just in case:

[https://www.joelonsoftware.com/2002/02/13/the-iceberg- secret...](https://www.joelonsoftware.com/2002/02/13/the-iceberg-secret- revealed/)

<comment><USER16> Joel Spolsky is my hero. There are so many nails he's been hitting on the head for decades.

Engineering (to me) is a _craft_ ; not just a vocation.

I also think that the software industry's Ponce de Leon obsession might be part of the problem.

Younger folks tend to "dream big," which I think may be a factor behind the ageism.

 _"They haven't had some grizzled old fart tell them that it can't be done!"_ is the argument that I've heard.

Tru dat, but one of the things that older folks have, is _experience getting things done_ , often, highly optimized, polished, and of excellent quality. That tends to require a lot of tenacity and patience.

Shipping is boring.

Ever watch a building go up? A good prefab looks complete after three months, but doesn't open for another nine months. It looks awesome and shiny, but is still behind a rent-a-fence. What gives?

That's because all that interior work; the finish carpentry, the drywall, the painting, etc., take _forever_ , and these are the parts of the building that see everyday use, so they need to be absolutely spot-on. The outside is mostly a pigeon toilet. It doesn't need to be as complete; a solid frame and watertight is sufficient. They just needed it to keep the rain out, while the really skilled craftspeople got their jobs done.

I like to make stuff polished, tested and _complete_. I don't like making pigeon toilets.

</comment></comment></comment></comment></comment></comment><comment><USER17> I love the catagorization. But decent software should be distributed. I dislike single teams that begat 10s of miscroservices, but it should be buy, not build, features from specialized 3rd parties. Thus a decent modern installation should be leaning on a ton of 3rd party services (e.g. Identity providers, databases, caches) because they all do a better job than the hand rolled local one. It's how you outsource expertise.

The vision of the service mesh is to make unreliability and security no longer the job if the application binary. Even without a service mesh, you can put a lot of common functionality into a reverse proxy. Personally I am loving OpenResty for the simplicity of writing adapters and oauth at the proxy layer with good performance.

<comment><AUTHOR> I think it should be possible to buy or use software from third parties. One thing I'm disappointed about and think we need better tools to avoid is the fact that third parties provide their tools as services rather than libraries. There's reasons they do that, deploying a library that all your customers can easily use is hard right now, but there's no reason it has to be that way.

Some things can't easily be libraries like databases, but other things like some caches, miscellaneous operations like image resizing (depending on an architecture that can handle the load on those servers), and a bunch of other things could just be libraries.

<comment><USER17> The world is distributed. Money is distributed. You need services to interact with the world. The large portion of useful business services cannot be encapsulated into a hermetic library.

If you think that distributed service clients as libraries is enough to solve the issue of distributed computing, that is incorrect as most of the same distributed systems crap will still happen.

<comment><USER10> Totally agree. I have found that all of the pain points OP article mentions, are things that still crop up in monoliths, and by hardening against them, the app is more antifragile. Ex:

Fragile: writing fault tolerant (because the endpoint is unreliable) hedges against the case when unforseen conditions throw a spanner into the works.

Async/Laggy: some operations just take longer. Being able to gracefully route control flow around blockages improves performance.

Pipes: I've found it's helpful to have ser/de interfaces throughout the program, as it forces you to use immutable data structures - aka functional programming. This helps reduce state space.

Put together, I find having various "shear lines" in a monolith codebase, where I could split into a service if I wanted, greatly improves robustness.

</comment></comment></comment></comment><comment><USER16> This article has a point.

But, as in all things software, "it depends."

It depends on what the tools are, and what we are writing.

In my own case, I have the luxury of writing fully native Swift code for Apple devices. I don't need to work with anything off the device, except for fairly direct interfaces, like USB, TCP/IP or Bluetooth.

Usually.

I have written "full stack" systems that included self-authored SDKs in Swift, and self-authored servers in PHP/JS.

I avoid dependencies like the plague. Some of them are excellent, and well worth the effort, but I have encountered very few that really make my life as an Apple device programmer that much easier. The rare ones I do use (like SOAPEngine, or ffmpeg, for instance), are local to the development environment, and usually quite well-written and supported.

If I were writing an app that reflected server-provided utility on a local device, then there's a really good chance that I'd use an SDK/dependency with network connectivity, like GraphQL, or MapBox. These are great services, but ones that I don't use (at the moment).

I'm skeptical of a lot of "Big Social Media" SDKs. I believe that we just had an issue with the FB SDK.

That said, if I were writing an app that leveraged FB services, I don't see how I could avoid their SDK.

So I write fully native software with Swift, and avoid dependencies. That seems to make my life easier.

But Xcode is still a really crashy toolbox.

</comment><comment><USER18> Just reading the title I assumed it was a post about business processes and communication between teams. Because this is how working for a big corp sometimes feel.

<comment><USER19> It's a bit of Conway's law: the software structure mirrors the organization structure.

</comment></comment><comment><USER20> Really like the curiosity and thought behind this article. Couple of thoughts:

>probably upwards of 80% of my time is spent on things I wouldn't need to do if it weren't distributed.

Sure. Do it on one giant machine. Then you'll be spending 80% of your time doing things you wouldn't need to do if it weren't monolithic.

At the end of the day, if your customer is on the other end of the internet, then all of those complaints apply. If you solve that by running an app on their device, then oh boy are you going to have fun testing.

I prefer scaling out. The stackoverflow peeps prefer scaling up. There are some great write-ups about how they scale. I found this [1] one after some quick googling, but I am certain there are more. So it's really about choose your poison.

>I think people should be more willing to try and write performance-sensitive code as a (potentially multi-threaded) process on one machine in a fast language if it'll fit rather than try and distribute a slower implementation over multiple machines.

Sure. I once replaced a system that ran on 10 32-core machines with one that ran on one with four cores on one machine and did the work in the same time. Another time I had 96 cores, more threads, and I replaced it with one that had three threads and was faster.

But both of those solutions were evolutionary dead-ends. The tasks were very specific, and not subject to change. The first one was a single C file. The latter was actually java, but with hand-rolled hash tables and optimistic locks. The first one I doubt I could follow it now.

My point is, you can have understandable systems that good people (as opposed to geniuses) can work on, evolve and adapt, and that have well understood failure modes and scaling cliffs. Or you can have bonkers code that everyone is afraid to touch, and which fails in production when it hit a cliff you didn't know about and now your site is dead for eight days.

If you can strike a good balance, then you'll probably have some combination of distributed, and brute force.

[1] [http://highscalability.com/stack-overflow- architecture](http://highscalability.com/stack-overflow-architecture)

<comment><USER21> > Sure. Do it on one giant machine. Then you'll be spending 80% of your time > doing things you wouldn't need to do if it weren't monolithic.

Deeply false equivalence.

</comment></comment><comment><USER22> Do you have a moment to talk about our Lord and Saviour, Erlang/OTP?

<comment><USER23> My thoughts exactly! As the Elixir code at my company continues to grow at a rapid rate, writing OTP services for everything has allowed me to never have to think about entire classes of bugs and edge cases simply by virtue of the patterns inherent in OTP and Elixir/Erlang.

Right tool for the right job.

</comment></comment><comment><USER24> Of course they do. But there's no alternative.

No matter how fast or beefy your server is, these days if your product becomes a success, 99% of the time it will outgrow what's possible on a single server. (Not to mention needs for redundancy, geographic latency, etc.) And by the time you see the trend heading upwards so you can predict what day that will happen, you already won't have the time for the massive rewrite necessary.

So yes, it's tons slower to write distributed servers/systems. But what other choice do you usually have?

Though, as much as possible, you can _try_ to avoid the microservices route, and integrate everything as much as possible into monolithic replicable "full- stack servers" that never talk to _each other_ , but rather rely entirely on things like cloud storage and cloud database. Where you're paying your cloud provider $$$ to not fail, rather than handle it yourself. Sometimes this will work for you, sometimes it won't.

<comment><USER25> I've seen a handful of applications that attempt to "scale" by going down the micro-service route in a completely flawed way. Only to end up with a tangled mess that's impossible to reliably debug. All progress halts.

There's nothing inherently wrong about your statement, just that it's still far to easy to write shitty distributed system, and so much easier to push that complexity off onto the OS or even network layer itself.

Why should _I_ the application developer care about the way my user's data enters my DB? This should be tightly abstracted away, and traced/logged accordingly. Leave it to _me_ the systems developer to get the details right, and share the fruits of my labor with everyone.

I can imagine no system more deserving of shared resources than network technology. Try and imagine a world without TCP/IP, do you not end up with something similar?

</comment></comment><comment><USER26> I've found people have these problems inside of their datacenter, where there is reliable low latency bandwidth, but where things might rebooted due to upgrades or maintenance.

Common example is data being pushed between systems with HTTP. Take the simplest case of propagating a boolean value. You toggle some setting in the UI, and it sends an update to another system with an HTTP request, retrying on a delay if it can't connect. This has two problems. The first is that if the user toggles a setting on and then off, you can have two sets of retries going, producing a random result when the far end can be connected to again. The second, is that the machine doing the retries might get rebooted, and people often fail to persist the fact that a change needs to be pushed to the other system.

I've seen this issue between two processes on the same machine, so technically you don't even need a network.

<comment><USER27> If you're dealing with multiple processes persisting data to different data stores, you're dealing with a distributed database problem, which has many more failure modes than the ones you've described here.

If there's anything I've learned across my career, it's to avoid distributed databases unless absolutely necessary, and if it is necessary, then spend a bunch of time trying to make sure you got it right. And then even after that you probably got it wrong.

</comment></comment><comment><USER28> > Untrusted: If you don't want everything to be taken down by one malfunction > you need to defend against invalid inputs and being overwhelmed. Sometimes > you also need to defend against actual attackers.

Sorry, but unless your centralized alternative is only used internally by troglodytes you have to at least defend against invalid inputs.

</comment><comment><USER29> The title reminded me of the turboencabulator. [https://www.thechiefstoryteller.com/2014/07/16/turbo- encabul...](https://www.thechiefstoryteller.com/2014/07/16/turbo-encabulator- best-worst-jargon/)

</comment><comment><USER30> Networking and distributed software are well understood nowadays, the lower productivity of web companies vs. SpaceX etc. comes from all the unstable (both ever-changing and buggy) software they need to use. Most modern software is affected by this, but the web has it worse because of security issues and because the way browsers are evolving (on purpose, one has to add, because it's a cartel of large players on the web trying to stifle competition). SpaceX doesn't get some innovative new alloy they didn't order every couple of weeks and even the games industry has fewer obstructing external dependencies (hardware vendors and their drivers being one).

At least that's my experience from about 20 years of web development (15 professionally).

</comment><comment><USER31> Yes, I have a little Python library for managing network shares in Windows.

It has things like automatic retries that "back off" slowly, switching to cached IPs in case DNS is down, and checking to see if all of the drive- letters are full and either re-using a letter or creating a "letter-less" share. I had to develop it during a period of great instability within our network. It's ... large and over-engineered, but it just keeps on truckin'.

On the other hand, it has been quite useful going forward, so that's a plus.

I tend to program fairly defensively, in layers, right down to the much maligned Pokemon exception handling. The results don't have the, ah, velocity that is so often praised but they'll be there ticking along years later.

</comment><comment><USER32> Hah, I saw the title "Fragile narrow laggy asynchronous mismatched pipes kill productivity" and thought it was about the pitfalls of trying to coordinate remote teams across disparate time zones.

<comment><USER33> Yeah, my guess was it was a Slack takedown :)

</comment></comment><comment><USER34> > I hope this leads you to think about the ways that your work could be more > productive if you had better tools to deal with distributed systems, and > what those might be.

We have tools. Promula/SPIN model checker is one just off the top of my head.

</comment><comment><USER35> Just some fun with the English language:

> probably upwards of 80% of my time is spent on things I wouldn't need to do > if it weren't distributed.

If you don't ever plan on distributing your software you can save a _lot_ of time :)

</comment><comment><USER36> Funnily, I thought the headline was talking about development process, as that also describes how a lot of places (mis-)handle the flow of what get worked on.

</comment><comment><USER37> > I also think all these costs mean you should try really hard to avoid making > your system distributed if you don't have to.

There's a point here about microservices.

</comment><comment><USER38> It's perfectly applicable to people too; one stickler for the rules or slow working in a critical role, say security officer, or change board chair can kill productivity.

</comment><comment><USER39> I feel so attacked right now.

</comment><comment><USER40> TLDR he means microservices. We now have a generation that doesn't even recall a non-MS world.

Tristan, the generation between us has created the IT world you describe. You'll probably spend the next 20 years of your career dealing with that mess. Sorry about that.

</comment><comment><USER41> doh! I thought this was going to be about remote work.</comment>


Gawker Seeks Reduction in Judgment After Reports Say Billionaire Backed Hogan - <AUTHOR> http://www.wsj.com/articles/gawker-seeks-reduction-in-judgment-after-reports-say-billionaire-backed-plaintiff-hulk-hogan-1464185082 <comment><AUTHOR> _Mr. Thiel's motivation for being involved in the case is unclear, but his animus toward Gawker dates back to at least 2007, when Gawker's Valleywag blog revealed that he was gay. Mr. Thiel, who has since publicly discussed his sexuality, in a 2009 interview described Valleywag as "the Silicon Valley equivalent of al Qaeda." Gawker has since closed the site._

\-----

 _At trial, the Florida jury was told that Gawker Media was worth $83 million and that CEO Nick Denton, who was personally ordered to pay Mr. Bollea $10 million in punitive damages, was worth $121 million. The company generated $48.7 million in revenue last year, according to information revealed at the trial. In 2014, it turned an operating profit of $6.5 million on $44.3 million in revenue, according to a company disclosure._</comment>


The troubled POLY instruction of the VAX [pdf] - <AUTHOR> http://simh.trailing-edge.com/docs/vax_poly.pdf# <comment><USER3> As the article notes, DEC's OSes largely dodged the bullet by having good workarounds and in-kernel implementations for the missing instructions.

Open-source VAX OSes weren't so lucky. BSD's libm used EMOD pretty heavily (for modf() and the like), and this caused problems in unexpected places if you happened to be running on a newer machine that didn't have these instructions (stuff like: awk would crash!). So the OSes had to follow suit as well, at least for the instructions that libraries / compilers would emit (which fortunately excluded most uses of the G and H floating types). The documentation available at the time was okay but.. imprecise.

source: I wrote the EMOD implementation for OpenBSD/vax a long time ago; POLY had already been done by NetBSD. It's still there! [http://cvsweb.openbsd.org/cgi- bin/cvsweb/~checkout~/src/sys/...](http://cvsweb.openbsd.org/cgi- bin/cvsweb/~checkout~/src/sys/arch/vax/vax/unimpl_emul.s?rev=1.9&content- type=text/plain)

</comment><comment><USER4> The article also mention EDIV, which caused the most hilarious bug explanation I ever heard.

I worked on a VMS device driver in 1990. We had to resolve every single crash, because DEC support tracked the outcome of each crash dump file.

Our driver was crashing a VAX 9000 at Abbot Labs, a nightmare because it was a mainframe-class machine. In every crash dump I could show that the registers contained impossible values for the code sequence, always traced back to code involving an EDIV instruction (used to get a remainder).

DEC decided the problem was "alpha particles penetrating the encapsulant". At first I thought they were joking, but they were serious. They replaced the water cooling module around the CPU. That didn't fix the problem, so they pushed it back to us.

After much back and forth, they realized it was a microcode bug in the EDIV instruction, and their microcode patch fixed it.

</comment><comment><USER5> I wonder what VAX would be capable of today if they had the same level of resources as e.g. Intel. From what I've seen there are some super-powerful instructions, but the opcode map[1] is extremely irregular - even x86 has an octal structure to it - so superscalar decoding would be far more difficult. It's also not as compact of an encoding as x86, so the code density would be lower; x86, despite being CISC, tends to have more frequently used instructions be shorter, e.g. ~1/4 of the 1-byte opcode map is register- register/register-memory ALU operations.

[1] [https://www.cs.auckland.ac.nz/references/macvax/op- codes/VAX...](https://www.cs.auckland.ac.nz/references/macvax/op-codes/VAX- Opcodes-num.html)

<comment><USER6> DEC deliberately moved away from VAX to work on Alpha, which performed quite well for its time.

John Mashey made some interesting comments on the (lack of) future prospects for the VAX here: [http://yarchive.net/comp/vax.html](http://yarchive.net/comp/vax.html)

<comment><USER7> But reading [http://web.eece.maine.edu/~vweaver/papers/iccd09/iccd09_dens...](http://web.eece.maine.edu/~vweaver/papers/iccd09/iccd09_density.pdf), Alpha didn't have high code density. Caveat here is that they may have been better at hand-optimizing CPUs they are familiar with or where information is easier to Google. That would favor x86, for instance. Note, however, that they get way smaller code for PDP-11 and VAX than for Alpha.

<comment><USER8> Due to the way instruction fetch and dispatch worked on the first few generations of the Alpha, you had to put in lots of NOPs to get decent performance.

</comment></comment></comment></comment><comment><USER9> Pff. If you're not working with 36 bits, you're not working with a full DEC.

-Doug Humphrey (DIGEX)

</comment><comment><USER10> Two years after I logged a bug in Apple's MPW C compiler, I received a developer CD with release note that explained how to reproduce my bug but then said "don't do that".

Mac C compilers added "pascal" as a reserved word, this enabled one to link to toolbox apis that had the pascal calling convention.

I wrote a c++ test tool for MacTCP in which a member function returned a pointer to a pascal C function, for use as a callback from the network driver.

My first attempt produced faulty machine code. While regressing the bug I found that increasing the lengths of the names of the member function or of its parameters would crash the compiler. Not the resulting binary - <USER2> compiler itself.

On the old mac os that took down the entire machine.

</comment><comment><USER10> Tracy Kidder, "The Soul of the New Machine".

After they shipped the guy who did the timing changed careers, to take up farming.

<comment><USER11> He didn't really change careers. He built a 32-bit processor for Computervision fairly soon after leaving Data General and has done plenty of stuff since [1].

[1] [http://www.polybus.com/hdlmaker/Resume.html](http://www.polybus.com/hdlmaker/Resume.html)

<comment><USER12> :( Now I'm sad. That was such a great story.</comment></comment></comment>


Silicon Valley Discriminates Against Women, Even If They're Better - <AUTHOR> http://www.pbs.org/newshour/businessdesk/2013/03/silicon-valleys-war-against-wo.html

<comment><USER2> Unless a person has a first hand account, this is nothing to discuss about. I have personally meet many successful CEOs or top ranking women in the valley. Geneder or Origin are not an issue unless you make them. All that matters is what ideas you have got and how you implement them.</comment>


How Betty, who is 89, gets her news - <AUTHOR> http://www.melodyjk.com/how-betty-who-is-89-gets-her-news/

<comment><USER2> An RSS-reader keeps the typography consistent and feeds often contain the whole article including pictures. The downside is that is hard to add new feeds to the RSS-reeder because the RSS-links is quite hard to find.

</comment><comment><USER3> I use the usatoday android app when I have my contacts out. I find it to be the easiest to read with limited vision.</comment>


Cutie Pet – you will love this game, check it - <AUTHOR> http://minpik.com/cutiepet <comment><AUTHOR> Hello everybody !

I just show you a little game I made in one weeks.

This is a very simple game, but very cool.

It's possible to play it on mobile.

It would be nice to share it if you like it. x)

Thanks you all !

[http://minpik.com/cutiepet](http://minpik.com/cutiepet) Enjoy it !</comment>


WarriorJS: learn JavaScript and ES6 while playing a game - <AUTHOR> https://github.com/olistic/warriorjs

<comment><USER2> This game is totally awesome.</comment>


Ask HN: Which language to learn (Golang or Scala)? - <AUTHOR>

Additionally what are the most popular frameworks for those respective languages? <comment><USER2> I personally love Scala and I wish I could use it for everything including my day job because it has been such a highly productive language. I use it for all of my projects outside of my day job and it has been very fun to learn and to experience how functional programming works. I started out learning Scala from a Java background. I wrote things Scala that mirrored how it would be in Java and slowly transitioned to using more advanced features in Scala.

Popular web frameworks for Scala that I know of are Play Framework, Spray, and Scalatra. Play Framework is my go-to framework because it very powerful and has a lot of functionality that I need and want.

A good resource for learning functional programming concepts in scala is a book called Functional Programming in Scala. The book has taught me a lot and is great at explaining concepts with small exercises along the way.

One great thing about Scala is vast amount of libraries you can tap into. You can use any library that's available in Java in addition to those that are strictly for Scala. Some great libraries for Scala are Akka (concurrency through actor pattern), Slick (SQL library), and Spark (data processing).

</comment><comment><USER3> I can't say anything about Scala since I haven't played with it, but I like Go a lot. It has a lot of thought put into it to make it a practical language, not a interesting research language. This might seem boring at first, but I find it keeps being rewarding when you use it. The concurrency features baked into the language are also top-notch. They made me like writing concurrent code as opposed to dreading it.

Can I ask what language(s) you already know, if any?

</comment><comment><USER4> Scala is too complex, only good for (big) data processing. Go is too simple, doesn't support generics/exceptions/inheritance.

Go looks more promising as it's good for writing infrastructures,can attract some ppl/projects away from C/C++/python. But when it comes to complex business softwares, I'd say Java is still the way to go.

</comment><comment><USER5> You will learn much more with Scala. Go is quite an uninteresting language.

</comment><comment><USER6> What do you want to make?

<comment><AUTHOR> A scalable RESTful api service w/ easy to implement versioning, routing, etc.

<comment><USER7> Take a look at spray.io (Scala) then. The project has been acquired by Typesafe and a new version will soon be integrated into Akka as Akka-HTTP.</comment></comment></comment>


Nil by mouth - <AUTHOR> http://blogs.suntimes.com/ebert/2010/01/nil_by_mouth.html

<comment><USER2> A stunning piece on a topic most of us would probably rather not think about. Ebert handles his condition with grace, and his conclusion — that what he misses most about eating is not the food itself, but the company — is food for thought indeed.</comment>


This Page Is Why The Internet Sucks - <AUTHOR> http://mikecanex.wordpress.com/2013/04/15/this-page-is-why-the-internet-sucks/ <comment><USER3> On this blog there are 11 "share this" buttons, a huge pointless banner of mostly black space, and half a page worthwhile of text is followed by 5 pages of black space to allow for all the sidebar links. Is he being ironic?

<comment><USER4> Does anyone even use those buttons?

<comment><USER5> What buttons?

(adblock)

<comment><USER6> Using Ghostery here... my initial perception of a site is always based partially on how many entries are blocked on load. I've seen pages with 20+ calls to outside sharing services; at that point, a little extra cynicism kicks in.

<comment><USER5> Agreed. The number of things Ghostery blocks seems inversely proportional to the utility value of the site!

</comment></comment></comment></comment></comment><comment><USER7> "This" is the internet Google created. Not a catalog of all information, but a catalog of all the information which has been wrapped in monetization schemes.

Use Google Search for "convert PDF to HTML." See page after page of links which Google might monetize alongside the paid advertisements it already has.

Google makes it look like this is a difficult task, not a solved problem with a FOSS solution - Pdftohtml that ships in many Linux distros.

Google obfuscates the most relevant information by burying it within links to discussions on Linux forums. Even though there's a fucking SourceForge page and it links to a Windows friendly version. The crap results increases the odds that the average user will click through a revenue generating link either directly on Google's page or on a site running their ads.

<comment><USER8> No, Google did not create attention-grabbing-for-money. Look in a good old yellow pages phone book: All those colourful, attention-grabbing ads diverting your attention from the small-print actual listings? They're paid for.

Google merely made a very successful business out of making businesses willing to pay up slightly easier to find, roughly like the yellow pages did.

Finally, on your "convert PDF to HTML" example: My first hit is PDFOnline.com, that has a nice, green button labeled "upload". When I use that button to upload a PDF document, the site generates a HTML document for me. It was quick, easy and it didn't ask for money. Totally passable for the top result for the query.

pdftohtml was the fourth link - hardly outrageous for a terse, technically worded page. Oh and that Windows version (helpfully referred to as a "win32 GUI", because nobody calls it "windows" anyway) that it linked to? The link is dead.

<comment><USER9> I know what brudgers is talking about - I frequently encounter the same frustration when attempting to use Google to find actual information in a space where too many people are trying to make money. The links you see depend on what Google knows about you. I tried the search in an incognito tab, and the pdftohtml link, which would be the most useful result, was nowhere on the first page. When I add the word "linux" to the search, it appears. Not bad at all in this case, but I've been stymied in the past when no combination of keywords and search operators could locate good, technical information that I knew was out there, but instead returned page after page of spam and junk. I know Matt Cutts still claims that there is a firewall between search and ads, and there is no compromise on search quality for profit reasons, but does anyone still believe this?

<comment><USER8> This whole sub-thread hinges on the assumption that the "pdftohtml" result is objectively the correct one for the the query "convert PDF to HTML", and that it's commercial corruption of Google that keeps that result off the front page. I think that that is a false assumption. If a non-technical user need to convert a PDF to HTML, the pdfonline.com result (the one with the friendly green button) is leaps and bounds better than the pdftohtml SourceForge onw with the broken Windows link. Google doesn't have any kind of obligation to promote FOSS software at any cost, they have an obligation to answer the users question - and in this case it does just that.

Yes, I too have had to sort through pages of various SEO keyword-spam to find what I'm looking for, but the connection from there to this poor example to the number of extraneous elements on a website to accusing Google of having forged a broken web is, well, weak.

<comment><USER7> Your point about the difficulty in establishing one or another result as objectively better is a good one - though somewhat weakened by then arguing that the online service is better.

However, it is not as if pdftohtml is obscure. It is a common component of a great number of GNU/Linux distributions and has been for many years. So setting aside the merits of the top result, the lower results are still problematic.

Unlike the top result, neither Pdftohtml nor the high ranking results are SaaS - they're downloads for offline use. What differentiates them is their value propositions. They are in opposition between Google and the lay person and the results are _caveat emptor_ solely for Google's benefit.

Elsewhere, I have used a better example, "weather". The top results are advertising revenue driven. The best result? In most cases, the National Weather Service point data - advertising free, updated regularly, and generated by Phd meteorologists, not pretty faces for TV.

In this case, Pdftohtml shows the way in which Google drives us toward online rather than offline solutions. It drives us away from using our CPU cycles and towards consuming bandwidth, and absent that toward tools which pay for advertising.

</comment></comment></comment></comment></comment><comment><USER10> As an AmigaOS 3.1 stalwart unable to view HTML5 content, I'd love to see an Internet partially based upon a TeX-like markup. Rather than "<!DOCTYPE html>", such a document would use "<!DOCTYPE typeset>". An alternative browser would parse and present the markup when either the doctype is encountered, or a ".ts" extension is linked to. Typeset content would be displayed using the traditional tricks of typesetting: kerning, proper justification, avoidance of rivers, optimal reading line-length, etc. Here's a sample of what the web could be: <http://i.stack.imgur.com/W9uon.jpg> .

More often than not, today's Web is gaudy and garish, as 99% of HTML, CSS, and JavaScript's functionality is unneeded for everyday reading. For plain reading a Typeset browser and typesetting-friendly markup would an improvement over the status quo, wherein every man reinvents the art of typesetting at his website, and often with tragic results.

<comment><USER11> This is why Instapaper and similar services have a market. We should be thankful that enough of the web is parseable for these tools to work and not stuck in something like a Flash file.

<comment><USER12> Flash file is parseable too, just harder to parse. (And it still is, even if text is converted to curves.)

The real problem is, websites are not much of documents anymore. Their parts are steadily moving up the Chomsky hierarchy, becoming programs.

</comment></comment></comment><comment><USER13> No. The Internet is fine. It's just some websites that suck.

What next?

\- This Monitor Is Why Electricity Sucks. \- This Truck Is Why Roads Suck. \- This Toilet Is Why Water Sucks. \- This Man Is Why Earth Sucks.

<comment><USER14> This comment is why communication sucks.

Edit: (I'm kidding, not being mean)

</comment></comment><comment><USER15> I worked at newsweek and later The Daily Beast as a web developer in charge of analytics, so I can provide some insight into this.

The product managers were under constant pressure to increase traffic, so they'd add every new feature that appeared in front of them. Facebook, comments, social crap, stock ticker (that -nearly- happened), it didn't matter. Each one of these did add a marginal amount of measurable traffic.

Here's where the analytics part kicks in. The numbers did not reflect that our readers hated all that noise, and the product managers wouldn't dare remove something that generates traffic. So no matter how pointless something was, if it generated traffic it stayed for good.

<comment><USER16> Did it generate more traffic, or were those extra hits just users tapping "refresh" because of page timeouts when trying to grab the larger sized site on a crappy 3G connection? (joke)

<comment><USER17> It might be a joke, but is real.

Adwise, the reason why you have more impression doesn't really matter.

</comment></comment></comment><comment><USER18> I've started using "why the internet sucks" as an indicator that the person writing may be more in love with a good rant than anything else.

I don't think you can weigh the number of bytes you receive that are the message against the total weight of the page. Doesn't work like that. Facebook gives me a stream of people I know saying useless things. I consume maybe 4-5K of plaintext on it every day. Have any idea how much crap it pushes down the pipe? How much real-estate all the things I don't care about consume? A lot. Hell, the information isn't even that valuable. But still I consume it.

It's way more complicated than the author makes out. If I wanted to know Abraham Lincoln's birthday and you put it in bold 48-point text in the center of the page, I'm spending 3 seconds reading it and I'm gone. The rest of the experience is just a waste of time and bytes on the part of the supplier. Who cares?

ADD: It's not the crappy ads and social stuff that's the problem. It's sites using more and more techniques to subtly make you stick around. The subtle distractions, like a FB list of which friends also liked reading the particular article, or offering badges for participation, or tracking you across sites, that cause the most long-term trouble for folks. The big, glaring stuff is easy. People are used to that crap by now.

</comment><comment><USER19> While stuck with the dreaded neighbor "hey, you're a computer guy" support visit It was a real eyeopener about the ux of crapware laden toolbar filled ie9 win 7 experience. No wonder some people just hate computers.

What struck me the most was how she gets her email. FIOS set her up with their webmail, so she clicks on the bookmark, it shows a progress bar for 5 seconds while i assume it's pulling your customer info. Once that clears they showed a full page interstitial about some verizon product and i think lacked any skip button.

Once that cleared they showed what amounted to an old school portal - about a third was verizon info/support/ok apps, but then the rest was filled with some crap news feed inserts a few product upsell teasers, and i think a third party ad or two.

Ok click on email, normal login page, open email app. So this thing has a Verizon top banner that's huge, like 25% or 30% of her screen that is framed and never scrolls off. It takes two clicks just to make it show her inbox instead of a blank content area.

The app wasn't terrible, just maybe circa 2002 or so with only a few of the controls disguising themselves as the background. Usable enough as long as you don't mind the actual mail/composer only getting about 25% of the screen real estate. The kicker was the timeout - "for her protection" it kills her idle session after somewhere around 10-20 minutes at which point it pops up a modal dialog about being logged out, then pops it up again after you hit ok. Then it's back to stage 1 (5 second progress bar) and the experience begins anew including the interstitial and submitting you email credentials again.

I know telcos do some of the worst software engineering on earth, but jesus. No wonder some people consider the web as shitty and just want to get whatever task they need to use it for over with.

And no, I didn't really do much to improve it aside from exiling the toolbars and some shittier than average bestbuy run at login crap ware. I feel shitty about not making it at least not terrible, but that's hours to set things up right + a few hours of instruction + then the support calls come :/ And then the neighbor she told the story to calls.

It sucks that things like geeksquad are so shitty and are prone to upselling crap and exploiting technophobes. And I assume the it pro flier sector is at least as bad on average. Because if you're a novice and don't have a relative that's ok you're basically stuck.

And yet I made her swear twice that she won't tell any of her friends that I helped her.

[1] Ok, yeah, I guess I got a bit off topic there. But fios portal webmail is shitty.

<comment><USER20> Are geeksquad that bad? My dad uses them (although he's very far from being a technophobe - despite spending a lot of time missing MS-DOS) and has had nothing but a good experience as far as I know.

<comment><USER19> Well, I only have one real datapoint, but I took a look at a laptop a grandmother type had brought to them for help but probably didn't do a very good job explaining what was wrong. It sounded like her email had stopped going in or out, but I had to prompt her a bit. I can't remember precisely what the services rendered were but it came to something close to 200, they sold her a new AV despite her current subscription, av added a toolbar, installed some kind of system cleaner that deleted temp files and browser caches and such once a day, charged her for a "full tuneup" which was nearly half the cost and seemed like maybe a defrag, and $25 to fix her outlook - seems like she had managed to switch to a new blank profile so no mail, no settings, so they switched her back.

I mean, I guess they did fix her problem and I doubt youd have much trouble with them if you have a basic clue, but the people who need that service the most are the exact same ones that have no way to tell if they really do need this thing they're telling you is critical.

Plus I've seen enough online discussion about what techs employer unknown find on hard drives and how much their boss or 4chan enjoyed it to suspect that line of business may not have the strongest of ethical cultures.

</comment></comment></comment><comment><USER21> The real problem with that page is that as far as I can tell, the entire article is a lie. Some googling on "Barry Clams" only comes up with the daily mash as sources, and the daily mash doesn't list any sources.

edit: No relevant results for

      "barry clams" -thedailymash

      barry clams -thedailymash

      bond clams -thedailymash

      fleming clams -thedailymash

edit2: oops, apparently the daily mash is satire

by the way, jasoncartwright, your reply is "dead"

<comment><USER22> The Daily Mash is the UKs version of The Onion.

</comment></comment><comment><USER23> It's not the "page" that's the problem, it's the CMS. The linked-to article by the OP may only be 400 bytes, but that website (presumably) template is meant to scale for content of 40-400,000 bytes. Would it be nice if there was a way to scale down extraneous files dependent on the actual content size...sure...but then you'd have developers and designers complaining about all the movable parts in the CMS (i.e. you'd basically be designing a site for different article sizes...for each of the different browsers you already design for...so multiply your template work by at least 2).

</comment><comment><USER24> Ratios for this article: 713 characters of content (43 kb if you include the screenshot), total page size: 898 kb.

Edit: adjusted sizes to correct for errors due to caching.

<comment><USER25> I just did this myself: 765 characters including the title. With caching, it's around 680kb.

</comment></comment><comment><USER26> But somehow the author has to monetise the content, because the huge amount of bandwidth required to blurb out 1.6 MB on every access is not cheap. So he has to include some advertisements and then also content-like pictures, because people don't like advertisements being the only pictures on a website.

</comment><comment><USER27> Wait a minute, your page saves to 1.28MB, and you only have 133 words in your article. This gives you 10kb of download per word. The article you're pointing to is only 4kb per word.

Pot calling kettle?

</comment><comment><USER28> I've just moved and while my ISP is still setting up my internet, I'm using my phone's 3G for internet.

Having a quota on the internet bandwidth, I created a minimal browsing profile: no images, no javascript, no flash. You'd be surprised how many websites are broken.

Facebook, twitter, mashable, theverge all consistently consistently consumed hundreds of megabytes per page. When I used my minimal browsing profile, those sites were so much faster.

Browsing reddit without being logged in shows how much junk is in reddit (no point clicking on links that go to imgur afterall). I suddenly found myself to be far more productive.

In fact I think when I get my ADSL up again, I'm going to keep using the minimal profile

</comment><comment><USER29> Apparently the joke is lost on HN readers, The Daily Mash is a _parody_ site, it parodies news sites (specifically tabliod ones in UK, its kind of like The Onion). You would not expect a clear form from them - In fact, whether intentional or not, the overbloat would actually be a parody itself, and of the very thing bitched about in the article.

</comment><comment><USER12> "Given a choice between dancing pigs and security, users will pick dancing pigs every time." — <https://en.wikipedia.org/wiki/Dancing_pigs>

I believe, one can replace "security" with "correctness", "compactness", "simplicity", "low signal-to-noise ratio", "openness", "freedom" or many other terms, and the statement will still remain true.

</comment><comment><USER30> I wish I could pay for my web visits in real money instead of ad views. It'd be nice to get the experience of AdBlock without having to deprive content providers of revenue. It'd also be nice if people could design websites without giving prime visual estate to viewer annoyances. Maybe you could pick what percentage you distribute to your viewed sites, so you can support your favorite content providers.

How much would it cost to offset my ad-less experience? It couldn't be that much, could it? Let's say the average website that I visit has 3 ads per page, with an average CPM of $2 per ad. That means every 1,000 times I visit those sites, I would need to pay $6. According to RescueTime, I spent roughly 16 hours a week on websites. If I spend 1 minute per page (a really rough guess), that's 960 views per week. Since I'm using really fuzzy numbers, the ballpark range is looking like $10-50 per month, probably around $20ish.

That's doable, but it's pretty steep considering the alternative. I'm sure there are probably ways to reduce the cost that I'm overlooking.

<comment><USER31> I've thought this for years. Something like Flattr, except, y'know, that works and people use.

</comment></comment><comment><USER32> This blurb was painful to read.

The entire page, sans Adblock-able advertisements is 900KB-1MB.

Granted, that includes:

The site's scripts - which can ostensibly increase usability

Images - which help tell the story, establish branding and increase usability

Stylesheets - which make a page visually appealing and increase usability.

If you want to complain about the state of the Web, at least take into the account that the Web/Hypertext is about more than just text.

<comment><USER33> > If you want to complain about the state of the Web, at least take into the > account that the Web/Hypertext is about more than just text.

Yeah, I was wondering about this. Is he advocating turning the entire web into a text file? How does that even work with content rich websites like twitter or facebook or JS-necessary sites like your favorite music/video streaming site? Yes, encoding text with other technologies to increase the user's experience is going to make your file size bigger, but who cares?

<comment><USER32> It works poorly. The author makes the mistake in saying that everything that is not text is unnecessary and/or advertisement. There's a lot of cruft on most Web pages, but there's also a lot of valuable non-text info.

</comment></comment></comment><comment><USER34> This has been my point for years, and it has only gotten worse. Right now I'm thinking of writing an addon that simply blocks all third-party content (not just cookies), removes any divs that have a className or ID containing "share", removes comments after the first 100 (5000 comments and no pagination is not exceptional), etc. Perhaps just ignore output after FirstH1TagOnPage.ParentNode.Endtag.PositionInDataStream.

I think my site does alright, sameless plug: <https://lucb1e.com/>. Note that it's hosted on low-end hardware; if you want to view loading times, append ?debug to the URL. Or should I even get rid of the share buttons on articles here? I don't think they're used much anyway.

<comment><USER35> A small (offtopic) comment on your blog entry about IPv6... /64 is not twice the IPv4 address space - it's twice the number of bits. This translates 2^32 times bigger than entire address space.

<comment><USER34> That's what I meant. I'll edit for clarity, thanks :)

</comment></comment></comment><comment><USER36> This is meant to be intentionally ironic, right ?

Or "This Page..." is actually a self reference ?

<comment><USER37> He did say he didn't have any solutions.

I'd recommend getting inspiration from other blogs, <https://svbtle.com/> for instance.

</comment></comment><comment><USER38> Anyone have a count of how big a "complete" page of this article itself - <USER2> 748 characters of it - is? I make 64kb for the html alone, but apples-to- apples means we should compare the rest of the assets too.

<comment><USER21> I did right click -> save page as and it came to ~700kb

That gives him a ratio of ~1/1000 as opposed to the article he's complaining about's ~1/4000

<comment><USER39> Yea, it's 683 KB in all for ~800 bytes of text! Looks like, TFA's author makes the same mistake he's complaining about!

</comment></comment></comment><comment><USER9> He forgot the most important reason why "the internet" sucks, even though the page he's complaining about flaunts a prominent example: stealing content. Check out the unsourced photograph of the two actors. Actually, a second look at all the fluff on the page shows that much of it is itself poking fun at typical bloated websites with cheesy advertising, so this turns out to be a complicated example.

</comment><comment><USER40> My browser is looking like windows did during XP. Back then, I had a anti virus, a couple of anti-adware, one anti hacking and a firewall installed. After XP, most of that got built in while the momentum of adwares and viruses/worms went down, and today I only got a anti-virus, and even that one is not even doing much (no warnings for the last few years).

My browser however got adblock + extension, noscript, ghostery, https- everywhere, cookie handler, and I have also dabbled with privoxy. One can also add tor to the list.

So I guess, the question will be if the browser manufacturers will do the same as microsoft did and start having a bunch of that built in. Debian-live CD has already started with having adblock pre-installed.

<comment><USER9> If you wind up using Privoxy, it can take the place of _all_ the other add-ons you mentioned, except https-everywhere. And it works transparently for all browsers.

</comment></comment><comment><USER41> I have wondered about this. Sites are definitely growing much, much larger as time goes one.

But then the front page of HN is just 24k, while the front page of the BBC is 112kb, without any of the images.

What's the easiest way of measuring the complete "load" of a page?

<comment><USER42> > What's the easiest way of measuring the complete "load" of a page?

Firebugs net panel shows how much data the page pulls down, and how long it took to do it.

</comment></comment><comment><USER43>
      jha: then stop selling ads on this very page
      Reply by mikecane: I don't. WordPressdotcom does so I
        can use it for free. I don't see any of that money.

Oh boy. Where to start...

<comment><USER44> Yup. He responds to the "pot, kettle, black" observations with a whining "it's not my fault! it'd be better if I had my own server!" (someone point him to a cheap server, please).

<comment><USER45> * Wordpress.com plus $30/year to remove ads?

* wordpress on a AWS microinstance (free for the first year, 'bout $100/yr after that)?

* Cheapie shared host like asmallorange.com (better than you'd expect for $35/year)

* Static blog tool (pelican etc) pushed into AWS S3 plus disqus for comments?

</comment></comment></comment><comment><USER46> Ummm I'm not sure a parody site is the best example to be using.

A 400 byte joke is kinda boring without all the pics and ads around it. Still not really funny at all.....

</comment><comment><USER47> Also annoying is that the page jumps around whilst the adverts load, making it hard to even read the text.

<comment><USER48> This is something I see on The Guardian and it infuriates me no end. I end up randomly clicking on articles, even adverts (deliberate maybe?) accidentally as they load and shove what I _wanted_ to click down the page...

<comment><USER49> Yes, The Guardian is particularly annoying in this regard. Such a shame because, compared to other newspaper sites, they do an awful lot of things very well indeed. It's particularly a problem with Appple devices which impose a _horrible_ lag between input and action, and causes no end of problems - what the hell is up with that?!

</comment></comment></comment><comment><USER50> This is why whenever I open an article or blog post, the first thing I do before even trying to read the article is click the "readability" button (or pocket/instapaper/safari reader/whichever one you like). I appreciate what the person above said "take into the account that the Web/Hypertext is about more than just text." That's fine. But unless I'm on my tumblr dashboard, I'm visiting a blog probably to read text.

Branding is important, sure. But you can have great branding and still be readable. You don't need huge style sheets, you don't need a ton of images, you don't need a ton of scripts. Look at Svbtle for example, right? So what's the problem?

"Monetizing content, especially written content, is extremely difficult. I think Svbtle's biggest innovation will be in this area, but I don't know what it is yet."[1]

So what's the solution? First of all I love that _most_ of the personal blogs on HN lead by example. Secondly I think adblock and noscript should be encouraged whenever possible (I know there's no way adblock would be rolled in to browsers). Thirdly get native "reader" button in Chrome, FF and IE. Content creators need to make money but until we figure that out, we can't expect users to stare at disgusting web sites for much longer. Or maybe we can, if the state of TV and FM radio advertising teaches us anything... Maybe that's it, most people just deal with it so who cares. Still makes me sad though.

I googled for a list of "top blogs" and found this list[2], amazing how many of them are visually DISGUSTING.

1: [http://techcrunch.com/2013/01/08/with-funding-for-svbtle- dus...](http://techcrunch.com/2013/01/08/with-funding-for-svbtle-dustin- curtis-wants-to-build-a-business-in-long-form-online-content/)

2: <http://technorati.com/blogs/top100/>

</comment><comment><USER51> To experience the full effect, disable your adblocker.

</comment><comment><USER52> This is how I see it: <http://i.imm.io/12Y11.jpeg>

</comment><comment><USER53> Even the website that is referenced to count the letters, lettercount.com, is guilty of fluff and bloat.

</comment><comment><USER54> To be honest that awful big google sponsored banner ad that shows on your site ain't much better.

</comment><comment><USER55> The internet doesn't suck. People's lives suck around the internet.

</comment><comment><USER56> and this is why cellphone apps rock! they keep it minimalistic

<comment><USER34> Not for long man, not for long...

But yes, right now they're really great for usability. Including disabled people; I travel together with a completely blind person together in the bus every day. He uses a computer with a screen reader at his job and at home. Mobile websites are by far the greatest to use. On a sidenote, HTML5 is hardly better than Flash here.

<comment><USER57> _HTML5 is hardly better than Flash here._

Do most screen readers support Flash?

<comment><USER34> To some extent they try, but it's rather hard. As is Javascript, though JS is slightly better than Flash. I think JS will eventually become much better than Flash, but not very soon.

</comment></comment></comment></comment><comment><USER58> "Gentlemen start your bitchin!1!!1!!"

</comment><comment><USER59> Somebody has to pay for the electricity to move all these bits and bytes around the infrastructure that someone had to pay for.

</comment><comment><USER60> > And no, I don't have a solution.

AdBlock, duh!</comment>