Ask HN: do you regularly use stock screening software? Any favorite advice? - <AUTHOR>

<comment><USER2> What are you looking to screen?

I would recommend not playing with any money you're not 100% okay with loosing entirely.</comment>


Product fitness - <AUTHOR> http://www.muji.net/lab/fitness80/en/

<comment><USER2> They picked kind of weird things. Really, really high hanging fruit. The impact of these optimizations would definitely be small, not completely irrelevant but not enough for any one person to notice (unless they like / dislike the changes). This is an interesting way to take on the problem, instead of tackling a huge goal like waste reduction without any concrete attainable results, you create less possible waste to start with. By shortening a cotton swab, you throw less away. You are constrained in how much you can waste by how much is there.

I want to reduce the amount of plastic thrown away each year. I can try to educate the public about what plastic does, where it goes, how it breaks down (hundreds of years), how it's creating an invisible garbage patch in the pacific, but quite frankly, people don't fucking care. We're too small to see the patterns in the hugely complicated system that is the planet. You know how you solve that? Remove the temptation to throw things away, mitigate the trash that needs to be thrown away, and show people the destruction. Or, you could find a way to use that waste.

<comment><USER3> I read a book recently called "Cradle to Cradle" (<http://amzn.to/Y9iRqm>) and it argues against the existing, linear cradle-to-grave lifecycle of consumer items. That instead of taking the "reduce reuse recycle" approach to sustainability, sustainability needs to be achieved from the most basic foundations of design.

It asks the question, what if instead of avoiding waste, we could "eliminate the concept of waste" altogether? What if instead of "working hard to be less bad," we could create things with completely positive intentions and effects?

Muji is going the right direction with small and achievable design changes to address "high hanging fruit" that actually create substantial impact, though more importantly, they invite the notion that we _can_ live in a sustainable world without reducing our ability to produce and consume to the fullest extent.

</comment></comment><comment><USER4> MUJI does this often, looking at small, often over looked devices and objects, and re-imagines them in a blue-collar yet poetically beautiful way. Their products often strive to be invisible for the same reason.

The third paragraph on that link really sums it up by opening with "MUJI has always been dedicated to the pursuit of adequacy, of designing products that are truly fit for their purpose." Their view of the term adequate is in stark contrast with a modern representation (say, a minimum viable product). Adequate is good.

In a similar vein (from a different perspective), Milton Glaser's 10 Things I have Learned (<http://www.miltonglaser.com/milton/c:essays/#4>) says the same "Just enough is more"

</comment><comment><USER5> The best design starts with the purpose. By thinking "what is the purpose of a cotton swab?" or "what is the purpose of the binding on a notebook?" a lot of unnecessary waste can be reduced. Muji is a great example of a company that really designs with purpose over absolutely everything else, and it's reflected in their style and timelessness of their product design.

This page, too. It's not over-designed, and there's plenty of white space and there's nothing superfluous on there.

<comment><USER6> > what is the purpose of a cotton swab?

If you answer "cleaning my ear", you're risking serious damage.

That's both a specific warning ( _DO NOT PUT COTTON SWABS IN YOUR EAR_ ) and a more general question: How do you plan to deal with misuse of your product? "Not dealing with it" is a form of dealing with it; it's not really possible to duck this question. With cotton swabs, the answer seems to be "education and a lot of damaged eardrums".

<comment><USER7> How do you clean your ears?

<comment><USER8> you don't. they clean themselves. little hairs bring out the stuff far enough for you to be able to wash without the need for tools. and you might want to to clean your ears out every few years by a pro.

</comment></comment></comment></comment><comment><USER9> toilet paper space is easily saved just by not attaching the roll stiffening. obviously you can't hang it then.

johnnie walker originally started making square profile bottles to save space in transport and make them stick firmly to each other so less of them break. some time ago milk (and water) was sold in foil, too bad it all got replaced by plastic crap. I've also read somewhere calculations how much space in transport would be saved if coke bottles were of square profile, but can't find it now.

<comment><USER3> The square Coke bottle concept was designed by Andrew Kim: <http://www.minimallyminimal.com/2010/3/15/ecocoke.html> It allows for 1-2 additional bottles in the space it takes to transport 4 round bottles.

</comment></comment><comment><USER10> I like the idea, but I'm not sure how well it would work in reality. Conspicuously absent are examples of products already reduced in size. Airplane seats immediately come to mind.

</comment><comment><USER11> Love this idea. So obvious yet so fresh. I think it's because we live on autopilot most of the time. We passively accept the things we use as "the way it just is". Or that it's not up to us, or not our responsibility.

Case in point is litter in scenic areas (or anywhere). People just ignore it, even when it's completely in front of them. It's like a negative hallucination. When people do see it, it's not their responsibility and dismiss it. It's so ingrained its almost instant.

The environment, the water is OUR responsibility. Don't leave it for someone else to deal with.</comment>


Ask HN: Fastest way to $2500 month? - <AUTHOR>

I'm desperate. I can't reveal my real identity, as I'm too ashamed. I'm very young and NEED to make a way towards passive/"subpassive" $2500 a month which can be built within a 2-3 months.
I'm very good in design and rails.
I'd really really really appreciate your ideas/thoughts.
Thanks, desperate hn user. <comment><USER2> Step 1) Do 50 hours per month of rails contracting at $50/hour.

Step 2) Use your extra 110 hours per month to build a business that makes money.

Step 3) When said business reaches $2500/mo in profit stop doing #1.

<comment><USER3> More like 75 hours due to the government and their infernal taxes.

<comment><USER4> Adjusting the contracting rate as needed to get $50/hour after taxes is also an option.

</comment></comment></comment><comment><USER5> Unfortunately it's not very easy to have a passive $2500 income a month. Unless you have a lot of money to invest, or worked hard AND got extremely lucky. $2500 is not an insignificant amount of money. Getting it passively for only doing 2-3 months of work is a dream for most people.

If you are young, you may be able to fall back on family to help you out with expenses for a while.

Is there any reason why you cannot actively work for the income?

<comment><AUTHOR> Thanks for your reply. I have no problem working for it. I'd just like something where I could build a product or something and charge for it.

I'm sorry, I should edit the passive out. I'm totally ok with working for it, I'm not really looking for passive, I'm more looking for something where I can work 5-8 hours a day on a product which I run and have $2500+ a month.

I used the wrong words, I'm sorry, I've been through a lot of stress and can't even think properly...probably that's the reason why I posted this to HN for some help.

Regarding family, I unfortunately can't as they already rely on my for financial help.

=/

<comment><USER5> There's no shame in needing money. It may be to your benefit to use your real hn account and make a posting to see if anybody is looking to hire. Maybe someone in the HN community is looking for a Rails developer. It's definitely worth trying. (Though, I recommend posting at a time when most people aren't sleeping already or should be.)

Another option would be to take a job working in retail or food industry. There are usually more openings in those fields and it will provide income until you find something more suited for your skills.

Good luck with everything.

<comment><AUTHOR> I don't want to sound like a douche or anything, but I really like to focus on the product side. Bulding something and charging for it. I can easily get a job as a designer or rails dev somewhere, but I'm having trouble building a product which people will pay for enough to give me $2500 a month.

<comment><USER6> You're asking how to build a business. Getting a product to generate 2,500 USD a month is non-trivial. In fact, going from 0 to 2,500 is probably going to be easier than going from 2,500 to 7,500 or 10,000.

Start simpler. Ask yourself how to build a product that can bring you 20 USD a month. Think of something that you can realistically envision yourself selling a couples of copies of a month right away. Then figure out how to go from there.

By the way, running a business isn't going to reduce your stress. And whether or not you'll be able to make money from a certain product / service is really speculative. You'll eventually get something to work if you keep working at it, but it can take time to figure it out. Maybe you should just consult in the short term.

As someone who's been desperate for cash before, I don't think starting a product business in order to obtain fast money is a good idea, unless you have experience selling to your target demographic and are really confident about your idea. Or unless you don't have any opportunities to actively work for the money, but you say you can easily get a rails dev job.

<comment><USER7> I honestly think going from 0 to 2500 will be harder than 2500 to 10000. Lots of people don't get to that first 2500 because their products aren't in demand, but if you do, you'll realize there is demand for your product and from then on you start scaling.

<comment><USER6> I'm sorry, my head is on wrong today. I totally agree with you. I meant to say, the first 2500 are the hardest by far. If you can make that much, scaling is pretty easy.

s/probably going to be easier/probably going to be harder

</comment></comment></comment></comment></comment></comment></comment><comment><USER8> Hopefully someone will help you out with some rails contracting.

Are you getting the boot from you're parent's place? (i.e., $2500 live on own funds)

</comment><comment><USER9> How are you at marketing? If you can do marketing for a Saas app, let me know. We might be able to work something out.

</comment><comment><USER10> Sell your soul to the devil.</comment>


Optifine dev on performance problems in Minecraft 1.8 - <AUTHOR> http://www.minecraftforum.net/forums/mapping-and-modding/minecraft-mods/1272953-optifine-hd-a4-fps-boost-hd-textures-aa-af-and?comment=43757 <comment><USER2> > \- All internal methods which used parameters (x, y, z) are now converted to > one parameter (BlockPos) which is immutable. So if you need to check another > position around the current one you have to allocate a new BlockPos or > invent some object cache which will probaby be slower. This alone is a huge > memory waste.

In other words, Java desperately needs value types so that this kind of simple abstraction needn't cause any overhead.

<comment><USER3> My takeaway was more like "Developers need to understand the strengths and weaknesses of their chosen platform, and be cautious not to degrade performance during refactoring."

Certainly it would be much easier to just go back to the (x, y, z) convention than to change the Java language.

<comment><USER4> I agree with this. Sounds like the newer devs are not as experienced/knowledgable optimizing java as notch was.

Article also highlights the challenges of using a GC language for high performance games. GC works against you most of the time and you're better off statically allocating as much as possible.

<comment><USER5> I dunno, in this particular case, naivete and experience actually look kind of the same. =) It's in that middle ground where you _know_ idiomatic Java where you might make this mistake. The naive programmer who isn't comfortable with OO and the experienced programmer who knows when to decompose OO might make very similar code here.

<comment><USER6> yeah, it's kinda hilarious. Notch has been bashed before cause he didn't write the code to the "Java Community Standards". It gets rewritten more towards the standards? Boom, performance sucks. So much for those "Standards"!

<comment><USER5> Well, no. Those standards exist for a reason. For the overwhelming majority ofJVM projects, they are a wise set of choices.

Having seen his work, and his tendency to reinvent the wheel (his original iteration of the Minecraft website used flat files for storage, which is really weird when you're writing Java and H2 is right there), I don't think he's a terribly good Java programmer. Gets stuff done, but doesn't work Smart, to use a Spolskyism. He happened to be right in this case. And that's cool, but throwing away best practices so contemptuously because they aren't applicable in corner cases is at best foolish.

</comment></comment></comment></comment></comment></comment><comment><USER7> This kind of thing is where I really hate the big GC systems, the JVM and the CLR. Many times, a ton of efficiency could be gained with some simple tricks. For instance, "OO style" code really loves newing up objects, even if they're simple containers. In .NET, this means a heap allocation and garbage, even if the little object is immediately picked apart and never used again.

Example, the String.Split function takes an _array_ of chars to split on. So every time split is called, normally, a new heap alloc happens for no good reason. Functions should be able to provide some simple "pure" annotation and let callers stackalloc. In fact, the CLR already supports this - it's just super cumbersome to get at. The JVM supposedly can do this in JIT, but this post seems to indicate it's not effective.

Secondly, it seems there it often a unit of work where you could allocate from an arena, and then throw it all away together. I know this is more involved, as something could leak out by accident in code. But perhaps the arena could be a hint to the GC "if nothing points into this entire arena dump it in one chunk". Maybe GCs are too fast to benefit from this.

Really, it's s bit if what Rust will accomplish with the borrow checker. I know for a fact (measured) that adding a bit of such management to .NET would be a major boon in certain high allocation scenarios.

Edit: The evangelism around these languages doesn't help. There's a big push to leave it to the JIT, that the runtime knows best. But in truth, they seem to still have fairly suboptimal codegen. Even inlining is poorly handled. For some idiotic reason, they still JIT, and have to make a time/speed tradeoff. Even if it's an program that you're going to execute repeatedly, the installer has to go out if it's way to pre compile. And even then, the pre compiler doesn't do a lot more, and MS warns people it might be worse, because the runtime knows best. I guess no credible competition leads to not putting tons of resources on things.

<comment><USER8> Whoa. I'm assuming I'm not doing enough String.Splits to worry about performance, but what's my alternative? Looping through the string myself?

<comment><USER7> That's just one example. There's plenty of APIs that force garbage to be created for no good reason. For string.split what I've done when it was critical, is to statically allocate an array for each type of split.

For other APIs, I'd create a state object for each request or piece of work that contains assorted buffers and other temp objects, then pass it around as needed. Ugly, but at high processing rates, every allocation counts.

</comment></comment></comment><comment><USER9> From OP: "There are huge amounts of objects which are allocated and discarded milliseconds later."

Any mature generational GC should handle this with literally zero overhead. Assuming it is not doing a nursery gc every millisecond, all those objects should die in the nursery almost immediately. It has been well understood for at least twenty years how to do that in O(live objects), and the JVM has for all its many faults a very good garbage collector. So I am quite skeptical. This is also at odds with empirical evidence which is that going from 1.7 to 1.8 with the same world improves framerate.

Now the JVM gc has about a million tuning parameters and most hardcore Minecrafters have a witches brew of tuning that they run with. It's far from impossible that those tuning parameters are totally inappropriate with 1.8. But the GC should handle this fine.

<comment><USER10> So, the nursery is a certain size. If you are filling it up continually you're going to be spending a lot of time managing it. Not only that, but if your rate of allocation is high enough you might inadvertently promote a number of objects that have not gone out of scope yet to the tenured section which in a less demanding allocation scenario could have been collected from the nursery.

<comment><USER11> nursery gc should be very fast, particularly if most objects die; this issue sounds like it needs more investigation

also, it sounds like the devs should be doing some testing on typical user machines, instead of higher powered dev boxes

<comment><USER12> Nursery gc on my machine (Macbook Air 2013) is 10ms.

<comment><USER9> Nursery gc is proportional to the size of the live object set (here alleged to be 0) plus a constant overhead. It's not a simple thing to benchmark.

<comment><USER12> Live memory 25Mb in my case, sorry, kinda important number to mention :P

</comment></comment></comment></comment></comment></comment><comment><USER12> This post seems to be based on certain erronous assumptions.

First, he seems to believe that "size of allocated memory" == "longer collection time", this is not true, especially when, as he says, most of the allocated memory is short lived. A GC only scans live memory and considers the whatever hasn't been scanned as garbage. If most of your memory isn't live, as seems to be the case here, collection should be relatively consistent, regardless of allocated memory or the memory available to the JVM. Increasing the memory available should actually increase performance, because the JVM can run collections less often.

It seems to me that what the devs should do (instead of waiting for a proper struct implementation, like .NET has, on the JVM, which would avoid these problems) is to make BlockPos mutable and store unused objects in a cache/buffer. This might be (barely) slower than just allocating the memory, but used correctly it will trigger fewer collections as you allocate way less.

<comment><USER13> _instead of waiting for a proper struct implementation, like .NET has, on the JVM, which would avoid these problems_

[http://blogs.msdn.com/b/ericlippert/archive/2010/09/30/the-t...](http://blogs.msdn.com/b/ericlippert/archive/2010/09/30/the- truth-about-value-types.aspx)

And it's worth noting that escape analysis, which the JVM currently has and .NET does not, is the best of both worlds -- the developer doesn't need to decide or make such macro optimizations, but the runtime can choose, based upon the lifetime of the object, whether it should be a stack or heap allocation.

I once thought the whole value type thing was a superior choice of the .NET team, but now it seems that the everything is an object, just make the VM smarter, was the better choice.

<comment><USER12> Problem is that escape analysis can't always do a good enough job, it doesn't catch everything. Lead JVM developers have stated this themselves, which is why Orcale is exploring how to implement value types on the JVM. Naturally, value types doesn't magically solve things either (I'm well aware of the shortcomings as described in that article), but for this particular use case, it seems like the perfect solution.

<comment><USER13> _Lead JVM developers have stated this themselves_

Where? Who?

Yes, of course they explore options and alternatives, and no solution is a panacea, but this debate is well over a decade and a half old: This is not new ground. And while we're in a world where Microsoft is saying "give it up with the whole value / reference type thing" (the value/reference type is an implementation detail), Java went ahead and optimized the existing platform to a pretty good degree, in many (but not all) cases, leaving it to a pretty good GC to pick up the pieces.

Just to be clear, I'm no Java booster. I've spent a good chunk of my career heavily involved with .NET. But for all of the talk about the superiority of the .NET platform and its illustrious value types, it's Java that quite soundly takes the performance crown when they go head to head.

<comment><USER14> _And while we 're in a world where Microsoft is saying "give it up with the whole value / reference type thing" (the value/reference type is an implementation detail)_

No. First, they are semantically different, but second -- it's an implementation detail that provides better performance when used correctly. So, exactly what the parent was describing.

This is not to say that the CLR couldn't also optimize better, but personally I'm just voting for Project N.

<comment><USER13> It's an implementation detail that _may_ provide better performance, but often provides no measurable difference at all (yes there is a profound semantic difference, and such is the foundation for the mechanism in the first place, but that hasn't been the context of this discussion). The parent was contrasting it against a JVM that does both better garbage collection, and actual escape analysis, so the comparison borders on absurd, and it is a statement made with zero context.

<comment><USER14> I can tell you that in Roslyn it is a very important component of our optimization strategy. System.Collections.Immutable.ImmutableArray is an obvious example.

As an extremely high performance managed application that competes directly with native code, it seems to be quite a good proxy for similar applications, including Minecraft.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> Don't worry, Microsoft will fix it when it's rewritten in C#. :) I kid, I kid <I hope>.

Actually, I wish Minecraft had been open-source like Notch was originally talking about. The community could fix most of these issues, in lieu of introducing new features.

<comment><USER7> According to the post, the problem is passing objects as parameters instead of individual values as separate arguments. Each time they do this, that allocates an object. C# has value types, unlike Java. So the BlockPos structure wouldn't need an allocation, just some stack space.

<comment><USER16> Why the heck did they decide to pass around objects instead of parameters? This sounds weird, sort of like an internal a framework that has gone too far.

<comment><USER5> It sounds like something coming from a really weird misunderstanding of Java and its perf characteristics. For most Java projects, immutable, semantically- useful objects make a lot of sense (indeed, Scala does this all over the place). For a game, not so much; you're going to end up object-thrashing all day and unlike on the web you have very hard latency requirements that make this extremely undesirable.

<comment><USER17> I've not really looked much at how java handles memory, but I thought the basic pattern for all Objects was pass-by-reference: the method gets a pointer to the object. Is it a means of guaranteeing immutable access that such a pointer becomes a pointer to a (deep?) copy of the object allocated on the heap?

<comment><USER5> They're pass-by-ref, but if you have to create an object _every time you want to refer to a block, anywhere_ , you're gonna have a bad time.

With mutable objects, like libgdx does for its vector classes and similar, you can do object pooling to reuse them and avoid the GC thrash.

<comment><USER17> I thought the general idea with a voxel/block world was that "world state" could/should be a 3d array/"matrix" of blocks (possibly with empty blocks collapsed to null references)? So of you're using objects, that's what you'd put in the array. I can see how an array of 8 bit ints (basically an enum of block type) would be a lot more compact and/or that some kind of packed representation would be (on the face of it) vastly more compact - but if that's what they're doing, wouldn't it make much more sense to stuff the abstraction into static methods (functions) rather than marshall (full) objects left and right?

<comment><USER5> Yeah, now how do you define a location in that voxel space?

In Java, you can pass XYZ and parameters or you can create an object (in this case, BlockPos). Every object is heap-allocated, and the heavy use of transitory objects (like, say, every frame) creates a lot of garbage that'll need to be cleaned up.

<comment><USER17> Right. I was just thinking that the most straightforward, naive, approach in java was to have an array of Objects (so you'd pass around those references), and if you were going to pack everything into a more "primitive" structure (like an array of int8s) it wouldn't make much sense to marshal those into objects, but rather go for a more traditional data structure approach and stuff the complexity into some static methods... or failing that at least use some local, long-lived "proxy"-objects with raw attributes:

        MyVoxel here = new MyVoxel(x,y,z,normal...);
        MyVoxel there = new MyVoxel(); // "null" voxel

        for // some x,y,z
          here.xyz(x, y, z);
          for // some offset_x,y,z
            there.xyz(x+1,...)
            here.distance(there) // or whatever

Which I suppose is essentially caching objects.

The idea of having lots of "new" in (inner) loops... just sounds really weird. Even outside of sub-ms-game-land. I'm guessing even assigning (as opposed to just using) primitive values to an object probably can have some nasty effects wrt. needless copying -- but it should probably be a lot more predictable than a GC hit -- possible to optimize, and might not trash CPU cache as bad as one might fear.

I suppose it's quite easy to end up in a mess when trying to do a straightforward rewrite from a static/non-java-oo style to a more java-oo- style -- without some careful thought as to what's actually going on...

[edit: looking at teamonkey's reply further down... I think I've seen some code in this style, creating lots of short-lived objects. Is it considered idiomatic java, or an anti-pattern? (or both? ;)]

<comment><USER5> When I write Java games, I use libgdx and its (trivial) object pooling, so yeah, I find this really really dumb. I can't give you a satisfactory answer, because I don't know. :-)

In non-game contexts, I honestly only start caring about GC behavior when things go bad. If I'm writing Scala (as I generally do on the JVM), I'm creating a lot of objects as intermediate steps here and there. But for the most part, my computer is fast enough and the JVM's escape analysis smart enough that it isn't a huge deal.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER18> Slightly off-topic but not really: to achieve a stable 60 fps in Javascript, you pretty much have to avoid creating temporary objects as much as you can. For example, I found this talk both very scary and interesting, and would even say anyone who codes Javascript (or maybe even any language that has a GC) should watch it or a similar one:

[http://www.youtube.com/watch?v=Op52liUjvSk](http://www.youtube.com/watch?v=Op52liUjvSk) ("The Joys of Static Memory Javascript", by Colt McAnlis)

This is also handy: [http://stackoverflow.com/a/18411275](http://stackoverflow.com/a/18411275)

That sure was news to me, and I see it never addressed outside of games. Which is understandably in a way, but I really think there should be awareness, so that it can be an actual choice to let the GC do it, and not just the only way we know how.

</comment><comment><USER19> So much bad advice, in general run Flight Recorder or Censum.

> With a default memory limit of 1GB (1000 MB) and working memory of about 200 > MB Java has to make a full garbage collection every 4 seconds otherwise it > would run out of memory.

Only if all of the 200 MB make it to old gen.

> Why not use incremental garbage collection?

Nobody should be using -XX:+CMSIncrementalMode it exists for platforms with only one hardware thread.

> the real memory usage is almost double the memory visible in Java

Huh? Yes, Java uses more memory than heap and a copy-collector means half the memory of the heap is unused but I have trouble understanding this.

I was in a JavaOne presentation 2013 when the presenter mentioned that Minecraft runs System.gc() in a thread all 500ms and decided I'll never touch this.

</comment><comment><AUTHOR> This is why I'm not so quick to dismiss manual memory management. The way it's done in C++ is has always made more sense to me in terms of preventing leaks while introducing minimal overhead. It's true that Java can outperform standard allocators due to issues like fragmentation, however for a lot of use cases, especially in games, it's better to write your own (simpler and more efficient) allocators anyway (i.e. stack allocator or object pool).

<comment><USER20> Frankly I never even understood why would you want to write any performance- critical code and leave memory management to someone else. It's like it's _bound_ to be slower.

Yet Java becomes more and more popular everywhere, sadly. Used for anything and far from best for anything.

<comment><USER12> Java becomes more and more popular because the cases where you would benefit greatly from manual memory management, are getting fewer. It's also more easier to avoid mistakes in Java than C/C++, in my personal opinion. Rust could change this though.

</comment></comment></comment><comment><USER21> I'm extremely skeptical of this explanation, because new objects don't put pressure on the GC if they don't survive because of the scavenger on the first generation.

edit: they only put pressure if you go edit an older object and put a backwards pointers from an older generation towards a younger.

</comment><comment><USER22> It's an interesting post. In my experience 1.8 loads extremely quickly (chunk loading), and my framerate is much higher than 1.7. I haven't noticed memory usage being any different but I haven't watched closely.

Possibly it's better for mid/high-end systems, but harder on low-end?

</comment><comment><USER23> So they are writing code similar to this:

      object array
      for( large )
      {
        object n = new object //heap allocation
        if( n == array[i]) //do something with n
            //do stuff
        //n is not needed anymore
      }

<comment><USER24> Not quite. The post describes the usage of a "BlockPos" vector that describes the x,y,z (and presumably rotation/yaw/pitch) for a world position. I think previously they were using primitive integers and floats, and have migrated to using an immutable object instead. Because of the amount of coordinate lookups each engine tick, this generates a vast number of objects.

<comment><USER25> It also makes this claim, which seems suspect[1]:

> _So if you need to check another position around the current one you have to > allocate a new BlockPos or invent some object cache which will probaby be > slower. This alone is a huge memory waste._

[1] or expose .equals(x,y,z) (assuming BlockPos is just an object wrapper around [x,y,z]). Granted, it kinda defeats the purpose of a completely- encapsulated object, but ya gotta do what ya gotta do when it comes to performance.

<comment><USER26> > So if you need to check another position around the current one

Key word "around". If a coordinate object is immutable, then doing operations on a neighboring one requires another allocation for the new coordinate object.

Unless you're suggesting having a coordinate version of every function that operates on a BlockPos, in which case there's no point at all in BlockPos existing.

<comment><USER25> That's basically what I'm suggesting. Use it only on hot paths you've profiled, maintain purity elsewhere. Java pretty much _requires_ you to make concessions if you're trying to get maximum performance. Similarly: it has a garbage collector, but there are plenty of places where an object pool will out-perform it. Deliberately breaking / re-implementing part of the language for performance reasons.

</comment></comment></comment></comment></comment><comment><USER27> I have minimal experience with compilers, but couldn't alot of these objects be dealt with using some sort of 'compile time memory management'. Essentially have the compiler notice a point in the code after which point a given object provably has no references to it, and insert an instruction in the bytecode to immidietly dealocate that object. If the compiler can prove that an object will be dealocated this way, it can also mark it such that the GC knows to ignore it.

Is this type of system already implemented in java (or similar languages), if not, what are the drawbacks of this approach.

<comment><USER28> This is called reference counting, and it's nigh-impossible to do quickly in a nondeterministic system.

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

See this for why it's slow compared to other schemes: [http://www.cecs.uci.edu/~papers/ipdps06/pdfs/1568974892-IPDP...](http://www.cecs.uci.edu/~papers/ipdps06/pdfs/1568974892-IPDPS- paper-1.pdf)

<comment><USER29> Reference counting is a runtime operation, an alternative to mark-and-sweep as a GC algorithm that allows for deterministic deallocation at the cost of memory overhead. While the net time overhead will probably always be greater than mark-and-sweep's (although there are optimizations which can make them quite similar), mark-and-sweep has the disadvantage of causing infrequent, long pauses rather than a predictable uniform slowness. Reference counting is used in Python (which also has mark-and-sweep to detect reference cycles), C++ in the form of shared_ptr<T>, Rust as Rc<T>, and objective c/swift (and certianly many more).

Compile time memory management refers to things like escape and ownership analysis. Escape analysis finds locals that never escape the scope they're allocated in, directly or indirectly, and allocates them on the stack rather than the heap. It's used in openJDK and probably other major JVMs, and required by the Go standard. Ownership analysis verifies that there only ever exists one live reference to an object in memory, so that a deallocation can be statically inserted whenever it leaves scope, so it doesn't become garbage. I have only seen it used in languages where there are explicit ownership annotations, such as Rust and C++.

To be sure, these are not the only forms of compile time memory management, but they're probably the most versatile.

</comment></comment></comment><comment><USER10> The fact that BlockPos is immutable is unfortunate, otherwise one could just pop an instance in a ThreadLocal and mutate it whenever it needed it. Better yet just make it an interface.

I wonder if it's common to run Minecraft in a profiler or something like that regularly over at Mojang. I used to do that a lot with this one app I used to work on and would routinely be surprised at what was actually going on under the hood.

</comment><comment><USER30> A summary of a Minecraft developer's responses on Reddit:

[http://www.minecraftforum.net/forums/mapping-and- modding/min...](http://www.minecraftforum.net/forums/mapping-and- modding/minecraft-mods/1272953-optifine-hd-a4-fps-boost-hd-textures-aa-af- and?comment=43777)

<comment><USER31> > Well then people are going to be even more p __ __d when we finally cut > support for people running hardware that doesn 't support anything better > than GL 1.x. At some point you have to make the hard decision to stop > supporting hardware that is anemic by the standards of 3-4 years ago, let > alone today, and quite frankly I don't feel that Minecraft should have to > bear a burden of technical debt and a lack of forward progress in the code > base just because a handful of people are unable or unwilling to upgrade > their machines.

That's a sucky attitude towards early adopters. Especially since most Minecraft players are young and don't get to control which machines they use.

Especially when you combine it with Intel bugs in graphics drivers that cause Minecraft to crash on opening - this can happen on reasonably powerful laptops.

</comment></comment><comment><USER32> > This is the best part - over 90% of the memory allocation is not needed at > all. Most of the memory is probably allocated to make the life of the > developers easier.

Makes sense to me.

"Silicon is cheap while carbon is expensive."

i.e. Machine time is cheaper than developer time (to a point).

<comment><USER33> It could make sense if you are developing a server-side application where you own all the machines that it will run on and can take a cost-benefit analysis of dev time vs. server cost.

It makes absolutely no sense when you are selling a program to users that will use it on a wide variety of hardware, from high-end to decade old. That's a great example of a selfish externality, asking _millions_ of players all around the world pay for expensive new machines (even top of the line ones are going to have problems managing 200 megabytes of garbage per second without dropping frames) just to make your job easier.

<comment><USER32> > That's a great example of a selfish externality

It's only selfish if they had the resources from the beginning which they didn't. Players also constantly want a slew of new features. Maybe the developers just couldn't juggle both performance improvements and new features simultaneously. Maybe not enough people cared about the lag vs new features? It's not like Minecraft is a competitive FPS where lag matters a lot more.

> asking millions of players all around the world pay for expensive new > machines

First the Minecraft still doesn't have heavy hardware requirements.

Second the cost of computing has been trending downward for decades.

[http://www.freeby50.com/2009/04/cost-of-computers-over- time....](http://www.freeby50.com/2009/04/cost-of-computers-over-time.html)

> even top of the line ones are going to have problems managing 200 megabytes > of garbage per second without dropping frames) just to make your job easier.

Programming Java isn't easy especially when you have an existing code base. It's even messier when you give precedence to performance.

If this is so easy, why not just make a better clone to fix the problem? Minecraft isn't the only sandbox game anymore. If people are that unhappy there are plenty of alternatives today.

<comment><USER33> >It's only selfish if they had the resources from the beginning which they didn't.

As the post mentions, early versions of Minecraft allocated significantly less garbage. You know, the versions programmed by one guy, before they had millions and millions of dollars and a whole team working on it.

Yes, Minecraft has changed quite a bit since 1.3, when Notch abdicated the development throne, but really not _that much_ considering it's been over 2 years and that Minecraft is a generation's Mario. Most of the "slew of new features" came from mods (still no official modding API, either!)

>Maybe not enough people cared about the lag vs new features? It's not like Minecraft is a competitive FPS where lag matters a lot more.

You don't understand. The "lag" you described is a constant delay between input and response. An example would be vsync, which in most PC implementations trades an extra frame or two of latency for smooth, tearless video. The problem I was describing is jitter, which is variable delay. One frame may take 10ms, the next may take 100ms+, due to the garbage collector. This is extremely noticeable and annoying when playing Minecraft, because the game locks up temporarily every few seconds and makes even simple actions like walking in a straight line extremely choppy and disorienting. Aside from being unpleasant and breaking "immersion," it's even gotten me killed when a GC cycle kicks in just before a jump and the game misses the jump input. It absolutely affects the experience.

>First the Minecraft still doesn't have heavy hardware requirements.

It kinda does, if you want smooth performance. You can play it on a toaster, sure, if you ratchet the draw distance down and are ok with sub-30 FPS and lots of GC-induced jitter.

My point was simply that if you make your game perform worse than it could, you're pushing the cost onto the players, and while this is a normal part of the march of computing, at some point it stops being acceptable and you're hurting the experience for the average player. IMHO, considering how ridiculously profitable Minecraft is and how little the fundamental gameplay has changed over the years, it stopped being acceptable a long time ago.

>Second the cost of computing has been trending downward for decades.

That's nice, but little kids from all backgrounds love Minecraft. You can't just ask an elementary school kid in the projects playing Minecraft at his community center on a donated computer past its prime to upgrade.

>Programming Java isn't easy especially when you have an existing code base. It's even messier when you give precedence to performance.

Again, the code performed reasonably well before. The new devs "cleaned it up" without measuring the performance impact of their style changes, and now everyone is paying for it.

>If this is so easy, why not just make a better clone to fix the problem?

Ah, the old "you can't complain because I don't see you doing any better" schtick. Take it easy, I don't think it's so controversial to be perplexed that one of the most successful video game franchises of all time is managed so poorly; for example, you'd think hiring the Optifine guy would be a no brainer.

<comment><USER32> How do you know how difficult it is to fix the technical debt of the code base? Have you seen the source?

> It absolutely affects the experience.

1\. See above.

2\. MS will probably fix it eventually once they fully transition

> Again, the code performed reasonably well before. The new devs "cleaned it > up" without measuring the performance impact of their style changes, and now > everyone is paying for it.

See my first line.

> Ah, the old "you can't complain because I don't see you doing any better" > schtick.

It's a lot easier to criticize than it is to build something.

</comment></comment></comment></comment></comment><comment><USER34> This seems like a situation that Scala's value classes were designed for. You could have something like a BlockPos that's represented by a long. Accessing x, y, or z would use bit arithmetic to extract the values from the long.

</comment><comment><USER35> In other words, every kid who knows how to code thinks they can make Minecraft faster and better than the actual Minecraft developers. Pretty old story.

1.8 performs a lot better than the old version.

<comment><USER33> The person who wrote this post is the developer of OptiFine, a Minecraft mod that significantly improves and stabilizes performance by optimizing the game at many levels. In order to make it, they absolutely needed to understand the game engine at a level comparable to the Mojang developers.</comment></comment>


Leonard Kleinrock on what went wrong with the internet - <AUTHOR> https://www.latimes.com/opinion/story/2019-10-29/internet-50th-anniversary-ucla-kleinrock <comment><USER3> I find this post quite disappointing. I don't mean to come off harsh but it is quite naive and utopian and I cannot take the call to arms seriously. Saying the internet went wrong is like saying the invention of cars went wrong cause we still have car accidents. For every powerful force in the world, it will be a source of good and bad things. The internet has changed the world, increased communication, allowed people in New York to learn and communicate with people in Egypt. Share stories, cultures, solve problems. A person in Nigeria can teach themselves Hindu, just from pure curiosity and no budget. No publisher needs to approve a book to be published or where it will be sold. We can make phone calls for free at any point in the day. We have Wikipedia, which for free provides more information than any human can process in their lifetime. For everyone who has access to the internet, the bulk of the world knowledge has been democratized and made accessible and something went wrong? Do terrorists use the internet? sure! Has consumerism hijacked parts of the internet? Sure! but these things are only symptoms of how powerful this tool is. Should we try to control and fix these problems of course! But for someone who created something so powerful, I am a bit disappointed at the negative tone of this post on the 50th anniversary of the first message.

<comment><USER4> The Internet is not as bad as cars. That's harsh!

Cars kill more than 1 million people a year, and are actively cooking our planet. On balance, cars -- at least our ability to use them -- has been a huge negative.

The Internet is a lot more balanced, but both show how a lack of foresight and system design can lead to a lot of negative consequences. We could drastically cut down on the number of road deaths if we took it more seriously and made some big system design changes, but we haven't. We can also make the Internet a better place, but there will always be issue with all massive systems.

<comment><USER5> > _On balance, cars -- at least our ability to use them -- has been a huge > negative._

Honestly there's no way this is true. How many people would die if they couldn't use an ambulance? How many people are surviving on goods shipped to them via trucks?

Of course things can be improved, but there's no way the automobile was a net negative on humanity.

<comment><USER6> What if the larger story of the industrialization enabled by that trucking warms the planet to the point that humanity goes extinct? Something to at least consider; unintended consequences are still consequences.

<comment><USER5> Humanity is not at risk of going extinct from global warming.

</comment></comment></comment></comment></comment><comment><USER7> Personally, I think the internet has changed millions if not billions of lives for the better. Yes, it has introduced quite a few bad things like spam, malware, surveillance etc. but with most good things, comes a few bad things. Overall though, Internet has been tremendous in lifting so many people out of poverty AND creating jobs that otherwise people could not dream of before the internet. I can work for anyone over the internet and make money for myself and my family. I can communicate with family members and friends across continents. With all the hate social media gets for example, imagine a life without them again. I say this as someone who hardly uses it but knows that it is there if I want to communicate with someone I care about. Do you really want to send physical letters again ? Yes they have their charm and nostalgia but I am not willing to trade the convenience of internet for something worse or outdated.

So Thank you for creating the internet all you tremendous people. I personally wouldn't trade it. Can we fix a few things ? Sure we can. But it has not gone wrong. It has changed lives, mine included for the better.

<comment><USER8> I don't understand your theory of how the internet has "lifted so many people out of poverty".

I'm not saying I disagree with it necessarily, I don't even understand what you're suggesting enough to disagree or agree with it. It's definitely not _obvious_ to me that the internet has somehow lifted so many people out of poverty, I just don't understand what you mean.

<comment><USER9> Well, a homeless person with a smartphone has a hell of a lot better chance of getting a job than they did pre-smartphone, right?

Maybe this can count as more of a smartphone thing an internet thing.. but it's still largely an internet thing that would allow someone in a rough spot to still be able to connect with people online and look/apply for jobs.

<comment><USER10> > _Well, a homeless person with a smartphone has a hell of a lot better chance > of getting a job than they did pre-smartphone, right?_

Do they? How?

Are you suggesting that online jobs website make it easier to find a job? A homeless person with a smartphone isn't the only one with access to the jobs website. Nor does the existence of such a website intrinsically create the jobs behind the ads on it.

A sibling commenter talks about the existence of the internet facilitating job creation through other means, but I don't think homeless people having smartphones has much bearing on this.

It's worth noting that income inequality has steadily increased in the last ~40 years at leastm (in the US), so talk of the internet lifting people out of poverty has to be considered in that context.

<comment><USER11> A homeless person desiring to gain some employable skills has an easier time doing such with the Internet and an access device, such as a phone - even if the phone has no cell service but can use free WiFi- than prior to the existence of the Internet and those devices.

There is a silent class of homeless people whom I am not clear you are including when you state "homeless", and that is people living on cars and/or "couch-surfing". On the occasion I've seen it mentioned in articles, it seems that it is nearly impossible to come up with reliable numbers on the actual population of homeless people living under such conditions due to their transitory nature.

It is likely true that the genuinely destitute homeless people, which is comprised in large part of people who suffer severe psychological and mental disorders, are only minimally aided by cell phones. I suspect the way they actually benefit is they carry on their persons a means for those trying aid them to find them as well as a life line they can tug, should they so choose.

"Inequality" is a divisive term with no genuine academic definition. Another correlation is that as "inequality" has risen, so has the greatest reduction in people living in subsistence farming and abject poverty in history of mankind, a conclusion that would suggest that "inequality" positively correlates with greater human flourishing, but the real purpose of my mentioning this is to demonstrate that "inequality" is a largely meaningless metric, by itself, used for manipulating people not familiar with broader understanding of what has occurred for so many billions of people on the planet.

</comment></comment></comment></comment></comment><comment><USER12> The internet never "went wrong". Nor did it go right.

If we want to talk about the internet going wrong, we can talk about running out of IPV4 addresses, the garbage that DNS/BGP can be. The insecureness of SMTP etc. Yet from a technical standpoint, it has gotten amazing. There was a time https/ssl was not a thing, when everyone shuffled data via FTP, when telnet ruled, when NFS was world rw and rlogin/rhost was the way of things. So the net as a tool has gotten better to address it's weakness in relation to privacy(crypto), spam (captcha/ML), fakes news (ML)

Spam, Fake News, Trolls, Privacy Abuse etc is all about people. We can ask, how did the world/people get so wrong? But then, when we sit back and think about it, this is the world that brought us a few world wars and tons of other wars. All that crap going on over the net is annoying but nothing.

I'll take all the spam, fake news, trolls, ad stalking and attempt to capture my data than live through a war.

<comment><USER13> Right, this is exactly what I try to explain in a long comment[1] (different thread, comparable topic).

I essentially argue that we should not confuse the medium (internet, a "network of networks"; like air or water or space) with the usage and information passing by said medium (the "high level" stuff like "speech" or "websites"; like oral speech or stores and parks in the physical world).

I'm surprised that a researcher who contributed to building the medium, the infrastructure itself, would fail to recognize we're talking at very different levels, totally different scopes when we conflate 'internet' with any private company or citizen operating over the medium. It's romantic and doesn't help solving any kind of issue, whether low-level or high-level.

I will echo user `riazrizvi` in this thread:

> _Simply the internet has always reflected the segment of society that used > it. Now that everyone uses it it reflects society at large. So I don't think > this is an internet problem, but rather an opportunity to see the worlds > social problems being translated into a more transparent codified form. I > reject the author's two solutions as being low effort addendums. Let us > acknowledge we are not seeing new problems, but rather we are seeing old > problems with a new lens._

[1]: [https://news.ycombinator.com/item?id=21383074](https://news.ycombinator.com/item?id=21383074)

</comment></comment><comment><USER14> It didn't go wrong. It went very well.

It didn't turn into the idealized vision that the author apparently had for it, but that's not unusual.

<comment><USER15> something definitely went wrong, imo.

when that pizzahut website link was posted a few days ago, i felt nostalgic about old web pages. most of them were about favorite topics, shows, hobbies and links! friends (the show) had thousands of fan made websites. websites linked to other websites with similar interest.

now it's all about "us" and "me". we don't even link to other websites anymore. blog rolls and guestbooks have gone extinct.

<comment><USER16> Yes, this is a common topic between my girlfriend and me. Internet as we know it (we grew up in the 2000s with MSN, forums, etc) doesnt exist anymore.

First (at least for us, for other people there would be another "first") were the basic webpages done in Frontpage or Dreamweaver (if you had enough RAM), uploaded to free webservers like Tripod, Lycos, Geocities, copying and pasting scripts found out there to remove popups and iframes, reading Photoshop tutorials to do some effects or gifs animations. Everything were more crafted, it took more time to do these kind of things (now everything is an app or a drag and drop).

Then came the second version of the internet. Everything was a bit "more pro" \- even amateur fansites payed for their hosting, they had forums, online chats, etc. The open source community allowed this. From Wordpress with its themes to phpBB2 forums, vBulletin, etc. Oh, I miss those days.

Then slowly all of that was lost. Nowadays we only have social accounts for things. Fansites? Only accounts on Twitter, INstagram, YouTuber. Ask an INfluencer if they have their own website. What for? Everything is centralized.

My dad, who started using a smartphone just 2 or 3 years ago, doesn't fully understand what the internet is. For him, it's just a set of apps (Whatsapp, Facebook, and the website of his fav newspaper). Outside that he doesn't understand there is (or there was) a full world of websites with a lot of contents.

It makes me sad because "the original internet" will be never be like what we experienced. I don't know who to blame for, tho. If I were in the shoes of Facebook or Twitter's founders I would have done the same. But they definitely have eaten all the webpages around them.

<comment><USER17> People still run blogs. People still run their own forums. Nothing is "lost", there is just a whole lot of new things that apparently don't interest you as much.

Personally, I can't really say that I miss any of the sites designed like they were in the 90s, with their ever-rotating GIFs, Flash-based intro pages, "Designed for Netscape" badges.

And does an influencer need to have his/her own website? Not more than an ad needs its own website.

The "original Internet" is still there, and I dare say more people are using it than back in the 90s. It's just that a lot more people are also using the newer stuff that you don't like.

And that's fine.

<comment><USER18> I think maybe they're bemoaning the dichotomy between increased access and apparent decreased use of the internet for creation of content by ordinary users -- or at least content that's not being exploited for advertising/marketing?

I'd warrant a tiny fraction of users have their own blogs now compared to a decade ago?

<comment><USER17> But that was apparent from the get-go. Most people just want to consume. In the early years, "going online" already took some effort or knowledge - <USER2> as it became gradually easier did the large swathes of consumers join.

If you lived through Eternal September, you kind of knew this was coming.

But again, just because plenty of people consume, and plenty of companies cater mostly to the consumers, doesn't mean there isn't another world out there for those who look.

</comment></comment></comment></comment></comment></comment><comment><USER19> How did it go so wrong - the same way it did go wrong with many other tools - people used them to better themselves at the cost of others.

> We could try to push the internet back toward its ethical roots. However, it > would be a complex challenge requiring a joint effort by interested parties > — which means pretty much everyone.

That "everyone" also includes bad actors.

<comment><USER20> > ethical roots

weren't they all working for the .mil?

<comment><USER21> No.

There were plenty of us there who were accidental visitors, curious kids who found ourselves in this interesting world. Kleinrock mentions this briefly in the original article, but there was a high degree of trust and optimism on the early internet, and if one was technically inclined and a little outgoing and generally a good egg, it wasn't hard to get an account somewhere.

When I first logged into MIT-ITS around 1982, coming in over dialup as a teenager calling a modem bank near the Pentagon, the login-failed message said something like, "Sorry, that username does not exist. Would you like an account?" It was RMS himself who gifted me (and a lot of others) a free account for the asking.

It's a hard thing to explain to people who weren't there -- I think this is why so many people in this thread see Kleinrock as naive or worse. My girlfriend never believes me when I try to explain the early internet; it seems an impossibility to her, as if I was talking about some pre-historic hunter/gatherer culture.

</comment></comment></comment><comment><USER22> "You should be able to clearly articulate your preferred privacy policy and reject websites that don't meet your standards."

It occurs to me that this could be a rough description of ad blocking extensions, although rather like the Aldous Huxley quote about means determining ends, ad blockers are the result of an adversarial relationship rather than a consensual one.

<comment><USER23> Not exactly in my opinion. My understanding of the passage is that he wants to block the entire website outright. So not, "Look at reddit, but block ads." Rather it would be, "Block reddit."

Curiously, blocking the entire website outright due to incompatible privacy policies is a solution I never really even considered? It certainly changes the dynamic game theoretically speaking. I wonder what the internet would be like in a parallel timeline where that happened?

<comment><USER24> This is effectively what we should be doing: Either accept what the site is offering (content monetized by ads and data collection) or don't. But what happened instead is entitlement: People decided they had the _right_ to view that content without paying it's cost, and went for ad blockers instead.

As much as I loathe ads, I am still surprised ad blockers work: That vastly more websites haven't simply made it impossible to view them without either seeing the ads or paying money/subscribing.

<comment><USER25> What cost? Web sites don't charge anyone for the HTTP response. They distribute their pages free of charge.

<comment><USER24> Creating content has an inherent cost.

<comment><USER25> I mean the cost to me as a user. Why don't content creators charge me for the page view?

</comment></comment></comment></comment></comment></comment><comment><USER26> In summary, the internet initially reflected the values of its socially conscientious creators, but as the community diversified it was used for business (making money, marketing, spam), it suffered cyber attacks, nations are balkanizing regions of it with censorship firewalls, and businesses are exploiting our privacy. Users need to spend more time reviewing privacy agreements. Scientists need to work harder on encryption.

Simply the internet has always reflected the segment of society that used it. Now that everyone uses it it reflects society at large. So I don't think this is an internet problem, but rather an opportunity to see the worlds social problems being translated into a more transparent codified form. I reject the author's two solutions as being low effort addendums. Let us acknowledge we are not seeing new problems, but rather we are seeing old problems with a new lens.

<comment><USER27> Conway's Law on the global scale?

[https://en.wikipedia.org/wiki/Conway%27s_law](https://en.wikipedia.org/wiki/Conway%27s_law)

> "organizations which design systems ... are constrained to produce designs > which are copies of the communication structures of these organizations."

The Internet as image?

\- - - -

I like it, but then there's the problem of too much, too little, and _differential_ transparency, eh?

</comment></comment><comment><USER28> Four popups and overlays in 15 seconds. What a trash website.

<comment><USER29> Ironic, given the subject of the article.

<comment><USER30> It further helps demonstrate the point even if unintentional.

</comment></comment></comment><comment><USER31> He doesn't mention the Worm of 1988[1]. The only reason it spread was because sendmail(1) would allow any remote sender to _spawn a shell on your system_. This was by design, and left in place because these researchers were naive and utopian. Then Robert Morris Jr came along and abused it. To me, _that_ was the inflection point of the nascent Internet: the naivete of these researchers met the harsh reality of real human behavior and lost.

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

</comment><comment><USER32> I met my wife on the internet, on a chat site I created back in 1995, we have a beautiful son, I've made countless friends through the internet, had a fantastic 25+ year career.

I guess I'm saying that the internet has been awesome for this family.

That said, I do agree that it has been co-opted in ways that are not good by a few nefarious players.

Still, it's not all bad.

</comment><comment><USER33> I heard Vint Cerf say similar things at a talk at Georgia Tech many years ago. Basically it was "we made this decision because of this reason, but had we known this thing now we would have done it yet another way." Those points were largely technical in the beginning of his talk, but then he started talking about it in terms of the philosophical implications which were largely not realized at the time. It was clear that he (and assuming his team) were in it as much if not more for the technical challenge than anything else. Its utility was just as clear, but long term implications were (seemingly) not considered. It was both funny and a little disheartening.

</comment><comment><USER34> Use of telecom networks for criminal activities predates the Internet, and the use of computer networking for fraud and abuse was recognized long before the Internet was opened for commercial use. The movie War Games was released in '83 around the already popular meme of computer hacking. The Computer Fraud and Abuse Act was passed in '86\. The Morris Worm occurred in '88.

Usenet started in '80 and soon had all sorts of sketchy activity going on. Corporate email systems in the mid-80s were being used for flame wars over internal disputes. It was clear by then that computer networking allowed all the good and bad human interactions that were possible.

</comment><comment><USER35> The very nature of networks and the internet has resulted in the concentration of "information flow" in a few 1000 (10,000?) nodes globally. These key nodes which act as transit points in the network have become monitoring points for many agents. In essence, the internet, in an effort to liberalize and disseminate information easily, has sufficiently centralized information flow into a few nodes. Encryption can help in this scenario, and hopefully gets stronger.

Prior to this, the means of monitoring were varied and took effort, often human. This meant it had to be selectively applied since there was a burden/cost to all out monitoring; as a result you had to know the task/persons you were to observer (and get a warrant). Now, capture can be all encompassing and automated; "searching for issues" is done later. Monitor everything, ask questions later.

Now this in itself is troubling but another side effect is that these transit nodes can be disabled by agents to suppress the dissemination of information from troubled areas. In this scenario, cryptography cannot help as the wire to the outside has been cut.

As traditional dissemination methods disappear or go online, and our information consumption is primarily online, these nodes can become very effective 'information suppression' points.

<comment><USER36> Power hierarchies are part of human nature. We always create them, the super- nodes.

This is not limited to computer networks. We do it with relationships as well, how many does not know of Madonna and Justin Bieber, compared to random Joe? Our very ideas and thoughts are subject to it as well.

There already exist meshing technology that counter our human nature and does not produce power hierarchies. Decentralized hashtables for example.

Maybe if we hand over the control to the machines, we could solve this problem. Pretty much noone wants that though... It's limited to some fringes of our society. The darknets (i2p more than Tor) it, and BitTorrent swarms. It works here, because the programmers never gave the users a choice.

</comment></comment><comment><USER27> Just for perspective: [https://en.wikipedia.org/wiki/Project_Xanadu](https://en.wikipedia.org/wiki/Project_Xanadu)

> Project Xanadu was the first hypertext project, founded in 1960 by Ted > Nelson. Administrators of Project Xanadu have declared it an improvement > over the World Wide Web, with the mission statement: "Today's popular > software simulates paper. The World Wide Web (another imitation of paper) > trivialises our original hypertext model with one-way ever-breaking links > and no management of version or contents."

(Unfortunately, the Wikipedia article proceeds to reference a Wired magazine "hit piece" in the next paragraph. Ignore that, read this:)

Here's an interview with Nelson: [https://www.ics.uci.edu/~ejw/csr/nelson_pg.html](https://www.ics.uci.edu/~ejw/csr/nelson_pg.html)

</comment><comment><USER37> What do you guys think about a kickstarter to raise enough money to buy Facebook/Instagram/Twitter/etc and shut it down for everyone's benefit?

<comment><USER38> I think I would probably be making a Facebook/Instagram/Twitter/etc competitor that night. They exist because people want them to exist, even though they have some bad parts. It's much more effective to work to make them better than to just throw them out.

<comment><USER39> I would open up their APIs instead. Allow everyone to write their own interoperable frontend or backend. That levels the playing field, allows everyone to compete on the strength of their interface instead of the size of their captive audience.

As you say, the service fills a need (perceived or otherwise). It's the size of the network, not necessarily the service itself, that causes the problem. Make the service a protocol, and move it back into the (web 1.0) fold.

</comment></comment></comment><comment><USER40> Internet only allowed us to witness another iteration of implemention of the nasty methods already employed by nations, corporations and other entities to assert their power over the general population; information hiding, secrecy, isolationism, monopolies, weaponization of information, denial of anonymity etc.

The original intent of internet was to establish a honest and open platform for information sharing, and for me (personally at least) the development so far has only convinced me that most establishments out there are utterly incompatible with those values.

</comment><comment><USER41> If you consider the internet as a reflection of mankind, then maybe seen it as wrong and broken is only a measure of your belief system against what is society in its crudest form?

Also I disagree on the "create a new crypto system" to solve our issues trope. When talking about stolen databases I would argue it is a problem of not using state of the art to protect privacy as there is realistically no incentive to do so.

</comment><comment><USER42> > websites should provide a privacy policy customized to you, something they > should be able to do since they already customize the ads you see. Websites > should also be required to take responsibility for any violations and abuses > of privacy that result from their services

These sorts of policies will completely annihilate small sites. Only large corporations and institutions with their own legal teams will have websites.

<comment><USER18> Why?

Isn't it easier to not use someone's PII?

</comment></comment><comment><USER43> > Scientists need to create more advanced methods of encryption to protect > individual privacy by preventing perpetrators from using stolen databases.

It would be wonderful if this came about, but this isn't exactly a plan either. Current technologies almost all require you to work against decrypted data. For example, if I encrypt my laptop, and I use column level encryption on my database, and use ssl to connect to that database, and use certificates and two factor authentication and so on, in the end my application can read decrypted data. All the encryption prevents access to the data through many mechanisms, but rooting any of the machines involved still gives an attacker a path to much or all of the data (eventually all the data).

What is necessary isn't more advanced methods of encryption, what we need is less painful methods of encryption. Encryption should be supported at the hardware level (ssd's can move data faster than even the most modern cpu's can comfortably decrypt it, memory is rarely encrypted), and applied everywhere all the time.

</comment><comment><USER44> We're marking the 50th anniversary at King's College London with an evening of critical reflections by the Department of Digital Humanities, next Wednesday 6 November. Open to all!

[https://www.eventbrite.co.uk/e/happy-packet-switching- ticket...](https://www.eventbrite.co.uk/e/happy-packet-switching- tickets-77325266955)

<comment><USER45> Completed my MSc at KCL in August and my topic had to do with coming up with a solution for the issues being discussed here. I think I'll be attending this!

</comment></comment><comment><USER46> If anything, the presence of the "dark side" is proof that their creation is a massive success. Without it, we would not have truly free and anonymous exchange of information, which is what qualifies the internet as the greatest invention of mankind. I can carry a device around that had the ability to access the sum total of human knowledge

</comment><comment><USER47> One of many great takeaways from this article, a great new word to add to my vocabulary:

Balkanization, or Balkanisation, is a derogatory geopolitical term for the process of fragmentation or division of a region or state into smaller regions or states that are often hostile or uncooperative with one another.

</comment><comment><USER48> I think it can be boiled down to an even simpler statement. The internet got big enough to _matter_. As with all things that matter, people will try to monetize them, disrupt them, destroy them, and abuse them.

Even with all that, it still matters, we just have to really watch where we step.

</comment><comment><USER49> > With the profit motive taking over the internet, the very nature of > innovation changed. Averting risk dominated the direction of technical > progress. We no longer pursued "moonshots." Instead advancement came via > baby steps — "design me a 5% faster Bluetooth connection" as opposed to > "build me an internet." An online community that had once been convivial > transformed into one of competition, antagonism and extremism.

This cycle is perhaps fundamental to all __human__ inventions and core to the theory of disruption.

This played out out the same way with Bitcoin. Ethereum had to step in to disrupt that cycle and as ETH grows to that size, some thing else needs to come in and disrupt. Same holds true for IBM > Google > Facebook > ...

</comment><comment><USER50> Ok, fine, ill go there, eventho you will hate me for it... hah....

Everyone should be able to publish and it should enjoy readership depending on its quality alone.

Platforms like HN and all the others offer guaranteed readership.

For example: If you are to write something about the current subject it would be a terrible write up if it talked about the Hindi vs Hindu typo. Horses vs cars would only be slightly less terrible.

My hand picked collection of "articles you should read" about the topic should not include such works. It just cant.

The difference is like that between getting on stage and sharing some insights or blabbering some raw thoughts over drinks with friends. We all have both qualities, which one should we use to write for the world?

</comment><comment><USER51> I'm currently listening to "When the wizards stay up late" by Katie Hafner en Matthew Lyon.

It's about the origins of the internet, starting with the birth of arpanet and going from there.

I like it, it's interesting to know how it came to be.

</comment><comment><USER52> I like the idea of improving the technology side, but another thing we should try to bring back is Netiquette - basically civility all users of this global network used to be expected to agree to.

I think YC is a good example of this working in practice, so why not expose more of the world to the idea again?

Endless September [0], when AOL connected to the Internet, should be waining soon since their subscriber base is finally disappearing right?

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

</comment><comment><USER53> The internet went wrong when Big Corp stepped in and Bribed the Government with the DMCA,

Killing off the community powered & hosted internet (Napster, BitTorrent).

Then further, mobile (which is great) made the Server/Client relationship polarizing & prone to spying on your location.

To fix this, we need lite P2P protocols that can run embedded or directly on any webpage inside the browser.

Then maybe, we can finally dig ourselves out of this grave.

That's what we're building, and we already have 8M monthly active users running this network! Come join the fun!

</comment><comment><USER54> > Blockchain, the technology that underpins bitcoin and other digital > currencies, also offers the promise of irrefutable, indisputable data > ledgers.

I see a recurring pattern here. While we have huge potential here, there's a significant danger that the same kind of centralized control emerges out of decentralized structure just as with the Internet. I hope enough people working on and using blockchain technology in the early stages learn of past lessons.

<comment><USER55> I think it will be different based on the economics of the two systems.

On the early internet it was extremely cheap to host a webpage either on your own computer or something like geocities and thus an explosion of content was created in a decentralized manner. Then the internet grew in popularity and it began to cost a lot of money to maintain all of the servers and bandwidth needed which cut off all of the smaller groups and consolidated power to a few corporations who could fund such an enterprise.

With blockchains we are also currently in the amateur stage where anyone can build something and put it out there but the difference is that dapps cost nothing to run and anyone can publish one. The cost to the developer of Uniswap is the same for 10 people and 10 million. The cost is just the development of the initial dapp. A small group of open source developers could create the new Facebook without needing millions of dollars to pay for hardware and buildings.

This low barrier to entry and maintenance removes the centralization point that corporations rely on. This is to say nothing of DAOs like Moloch and other novel funding methods that allow non-corporate projects to compete on the same level as anyone else. It's quite possible that the blockchain space will have a much longer and possibly lifelong period of true decentralized content and network creation the likes of which we had on the early non- corporate internet.

<comment><USER56> > On the early internet it was extremely cheap to host a webpage either on > your own

It still is. You can get your website hosted for $5/mo.

<comment><USER55> Not if your site is popular.

<comment><USER56> True, but $5 gets you quite a lot of traffic. If your site becomes popular, you can usually upgrade to a $20/mo plan that will be enough for most sites. If your site is a runaway hit, of course, then the economics are entirely different.

</comment></comment></comment></comment></comment><comment><USER57> > _" Citizen-users need to hold websites more accountable. When was the last > time a website asked what privacy policy you would like applied to you? My > guess is never."_

Wrong guess. This happens multiple times per day, thanks to the GDPR legislation in the EU. Annoying, but also correct. I take great effort to disable everything I don't like (ad tracking in particular), and like the article says I should:

> _" You should be able to clearly articulate your preferred privacy policy > and reject websites that don't meet your standards."_

There are increasingly websites I refuse to use because they don't work in a way I consider acceptable.

Some major websites are surprisingly broken. Twitter on Firefox on Android, for example, is notoriously bad.

<comment><USER58> Regarding GDPR, this is true for the EU, but the article was published in the LA Times, though…

It would be nice, if those properties, which can be applied globally, were already integrated in the browser as a preferences setting (and enforced by law). Meaning, privacy concerns must become part of the protocol. (What about some kind of 451 response by the browser?)

<comment><USER57> I would certainly prefer to have my browser handle my GDPR preferences and not have to worry about all these popups.

</comment></comment></comment><comment><USER59> _> ethical, open, trusted, free, shared_

Yes, but these concepts were not nearly as overloaded as now. I wasn't around for the 60s or 70s, but I know the days where the only browser was Mosaic (early-to-mid 90s). Even at that time, nobody used the term "ethical" or "open" the way that we use it now. It would be a mistake (and hindsight bias) to look back and draw strong parallels.

</comment><comment><USER60> Is it just me or does this page not scroll in Firefox?

<comment><USER61> Can confirm, does not scroll with Firefox 70 (it has add-ons like uBlock Origin and Ghostery).

Reader mode works fine.

<comment><USER62> same, thanks for the tip about reader mode, i always forget about that.

<comment><USER61> In case that Firefox does not offer the icon to open reader mode for a page, you can visit it in reader mode by manually prepending _about:reader?url=_ to the URL.

</comment></comment></comment></comment><comment><USER63> The internet came at us too hard and too fast. We have not had time to determine what are the pitfalls we've already falling into and how to get out of them, to name a few; addiction, anxiety, FOMO, jobs market, specialist skills, internet personalities, fake news, data gathering, manipulation, privacy, security, peoples rights, ownership.

</comment><comment><USER64> > You've reached your monthly free article limit.

Ironic.

</comment><comment><USER65> "Hey, a long time ago, when the only people that used it were just like me, things were really pleasant."

There is a lot of conflict in the world. As the pool of people on the network grows and changes they will bring conflict with them into this arena. It's a kind of naivete that sees the homogenous origin of the network as a better time.

</comment><comment><USER66> "This means websites should provide a privacy policy customized to you, something they should be able to do since they already customize the ads you see."

No, thanks, I just want it to work.

"Websites should also be required to take responsibility for any violations and abuses of privacy that result from their services."

Yes, please.

</comment><comment><USER67> "We should pressure government officials and entities to more zealously monitor and adjudicate such internet abuses as cyberattacks, data breaches and piracy."

Considering governments are the main perpetrators of internet abuses, this does not seem like a good idea.

</comment><comment><USER68> This is another good example for a broader issue we're noticing lately: we've been creating enabling technology and liberal laws, supporting migration, tolerating religions as well as various modern ideologies and (late) in the process we suddenly realized that our central assumption, that all people are sufficiently smart, educated, willing to participate in our society as positive forces, was completely wrong. So we're now beginning to shut down liberal policies, least harmful ones first - but it's a) wrong and b) too late anyway. We need closed, selective communities rather than inclusive, totalitarian ones - online and "offline".

</comment><comment><USER69> Rather than commenting on my experience with the internet, shouldn't the discussion be about one of the inventors of it stating that it's gone "so wrong"?

</comment><comment><USER70> Strongly agree with the idea that nowadays internet is become very bad. But i strongly disagree with the idea that governments should do something.

Politicians usually doesn't have enough technical background to do anything useful here. They do very little in the "real" world to make it a better place to live, why they should succeed in the "virtual" one?

Internet user should take care of internet with new trust mechanisms, Operative systems should help users taking care of their data. People should return nice and polite.

Netiquette (the hard one of the early '90) should be applied and respected.

</comment><comment><USER71> Internet is the plumbing that powers everything from www, telecommunications etc. I think he is throwing the baby with the bath water.

</comment><comment><USER72> I'm pretty sure the Internet is The Great Filter.

</comment><comment><USER73> [http://archive.is/qpLlf](http://archive.is/qpLlf)

</comment><comment><USER74> I wonder if it is the internet that has changed or the world around it. No doubt this is hard to entangle, because in the last decades one begat the other.

Sure, today large corporations rule the net and build silos and politicians try to silence free discourse, often at the formers behest, but this is also happening outside of the net and especially we, the technical elite who create software for the net seem to have shifted from "Here is my page about stuff I like" to "Here is my portfolio which I hope to monetize somehow soon".

So has capitalism just eaten the net, or is it eating the world? But at the same time, isn't it up to us, to change the net to what we want it to be? Sure, our parents will stay on Facebook, but that doesn't mean we can not have quirky websites, distributed systems and interlinked webs of discussions and pages on specific topics.

And while one might argue, that the net is now bigger than us and this will change nothing, we have traditionally been the driver for innovation and trends in this space. Facebook and Google are what they are, because we evangelized them for years to all our non techy friends. So could this not happen again over time when we tell people how easy it is to setup your own webpage or why it's a good idea to join a federated service?

I think we need to be the change we want to see.

</comment><comment><USER75> "All our inventions are but improved means to an unimproved end." (Thoreau)

</comment><comment><USER76> Someone should tell the author of this article about Alfred Nobel.

</comment><comment><USER77> All the problems mentioned in that article can be distilled down to two words:

* _anonymous_

* _broadcast_

If either of those words is eliminated from the technology all of the spoken problems immediately die, and thus new never imagined problems will take their place.

<comment><USER78> Why would you think that?

<comment><USER77> I think that because I read the article. Secondly, I have worked as a software developer, security analyst, and network operations chief.

</comment></comment></comment><comment><USER79> We have built the Internet open, neutral and free for all. Governments all over the world are now censoring and abusing it. Out solution? Let's give even more power to governments!

What a politically motivated piece of writing.

</comment><comment><USER80> "Nostalgia ain't the way it used to be"

</comment><comment><USER81> Ironically can't read the article because of the paywall.

</comment><comment><USER82> I still remember the moment I hit the Yahoo! home page and saw a banner ad for the first time, and said to myself, "here they come." I didn't project out to surveillance capitalism though, was still a bit too young for such thoughts.

</comment><comment><USER83> Yasha Levine's Surveillance Valley is a good read on this topic.

</comment><comment> denton-scratch The number of people here who dislike the post surprised me. Maybe it's a generational thing - people who've grown-up with a commercial internet probably think of it as a huge benefit; people who started using it before that are more sensitive to the way it has been warped.

I encountered the internet in about 1985, while I was working for Olivetti, who had a batch feed from the UK AT&T headquarters, across the Thames. I connected from home in my spare time via a UK geek forum called CIX. I connected using a 1,400 baud acoustic coupler (they still have some in museums). It was necessarily text-only, and was populated mainly by programmers (back then we didn't call ourselves "systems engineers"), pilots, D&D enthusiasts, and a mishmash of non-normies, e.g. furries, whom appreciated anonymity.

I could have used it to send email to relatives, but my relatives didn't have a connection. There were no browsers - there was gopher. It was largely person-to-person; I got involved in Usenet, which used servers, but importantly they were highly distributed, and mostly run from bedrooms. When browsers finally arrived there was no <img> tag. The <img> tag, combined with the ending of the ban on commercial use of the network, changed everything. Spam arrived, and never went away. Now most traffic is to or from a server (back in the day we called them "mainframes", and they were huge, and incredibly expensive to buy and run). Nobody put a mainframe on the internet, because you'd never recoup the outlay.

I can certainly see how the internet conferred great benefits; here I sit, after all, posting a message to a website called Hacker News. It has brought democratisation, in the sense that you no longer have to belong to a clique of tech nerds to use it.

But widespread network abuse has brought a wave of balkanisation that is still growing; that threatens the very principles on which the internet was built (anyone can communicate with anyone, no "special" hosts, etc.)

I don't really see the benefits of being able to order stuff from a website and have it delivered to your door; sure, it's quicker than sending a messenger-boy to the merchant, but that quickness is just an encouragement to impulsive purchases, which is really just a benefit to the merchant. (Of course, only today I took delivery of an online order). For most needs, it not unreasonable to take your time or plan ahead.

With respect to the "cars" analogy (which I choose to twist into "trucks"), the weight of traffic has now become just too great. Set aside arguments about global warming; I have a common lung condition (COPD). I notice the stink of a diesel vehicle that drove down the street I'm standing on a full 2 minutes after it passed (i.e. it's an almost continuous problem for me). I am considering moving home (which I don't want to do), but where would I move? Even small villages around here are no more than 500yds from some 6-lane bypass. The top of a mountain in some place like Switzerland?

Full decarbonisation of road traffic is at least 20 years away. And even then, they have to be charged somehow - um, power stations also run on carbon. Fusion is still at least 2 decades away.

OK, so with much fewer cars and trucks, we'd have to find another way to move stuff around; gee-gees seems a solution. Of course horses belch methane and cover the roads in shit; but at least you can compost the shit, to get "good stuff". And we'd need lots more of them than we needed in 1900; there are a lot more people.

I part-own a car, with my wife; I hardly ever drive, I'm a cyclist. I don't travel much. Being much more local - shop locally, live near your work, that kind of thing - might help a bit. But really I don't have solutions to either the internet's problems or the traffic problems. Having less people is really my best shot.

</comment><comment><USER84> Nice headline, not sure about its conclusions. What went wrong (among many things) IMHO:

* IP->UDP+TCP->HTTP->HTTPS should have been IP->UDP->TCP->HTTP->Skype/Tor/IPFS/Universal-performant-P2P-encryption->HTTPS

* NAT, UPNP and other informal/non-scalable enterprise solutions had no place on the web because they made low-latency P2P communication nearly impossible to implement, so relegated most users to being second-class netizens

* Software patents ruined JPEG, GIF, streaming, file compression and so many other ubiquitous technologies by contaminating protocols with restrictive licensing or DRM, which severely limited use cases and tended towards consumption rather than production, which also relegated most users to being second-class netizens and set us up for:

* Declarative and data-driven innovations like HTTP and HTML regressing back to hand-rolled imperative solutions running natively on mobile devices, which opened the door to:

* Private companies being the gate keepers of which applications and online tools are allowed in app stores

* Free and open online communities funded by advertising being marginalized by greed from ad agencies (including Google) to the point where customer acquisition costs usually exceeded their lifetime value, which prevented most web businesses from being scalable. Which led us to:

* Walled gardens which use surveillance (rather than ads) to extract value from users and sell it, which led us to:

* Extreme wealth inequality where a select few individuals and organizations picked winners and losers by deciding which startup ideas got funding (arguably the majority of startup IPOs today revolve around zero sum games, disrupting key infrastructure companies that employ millions of people, and providing services or service industries which solve pain points instead of providing real innovations in sustenance/basic needs/standard of living)

* Entrenchment of internet service provider duopolies in almost all cities while simultaneously banning municipal wifi via bribery/lobbying

* Filtering of the service/gig economy through unelected referees like Yelp and ad/payment processors like Google/PayPal being able to starve income streams arbitrarily

* Monopolization of almost all publishing/broadcasting, starting with the AOL-Time Warner merger, creeping slowly through canned radio/the loss of DJs/nearly all radio subsidiaries being owned by a single broadcaster like Cumulous, while simultaneously eliminating most independent newspaper journalism by consolidating papers under umbrellas like News Corp/Fox, and culminating with expensive a la carte streaming services grabbing any remaining eyeballs so that travesties like Sesame Street moving from PBS to HBO Max are unsurprising anymore

* Monopolization of almost all online commerce under single entities like Amazon so that if products aren't blessed by a prime designation, sales fall by orders of magnitude, which led us to:

* Wall street taking priority over main street, rainmakers picking our elected officials and populism being coopted by Stockholm syndrome so the masses clamor for it

I added that last one to illustrate why the loss of the free and open internet can be detrimental to society.

</comment><comment><USER85> Capitalism, got it.

</comment><comment><USER86> I'm reminded of the Douglas Adams' quote from Hitchikers Guide to the Galaxy

        Meanwhile, the poor Babel fish, by effectively removing
        all barriers to communication between different races and
        cultures, has caused more and bloodier wars than anything else
        in the history of creation.

<comment><USER87> The huge ironic joke that made Adams a good writer was that the legend of the Tower of Babel was about nations coming together with a common language (which got up to haughty stuff)

<comment><USER88> So, he was poking fun at the notion of a common language causing chaos (as in the Tower of Babel), right?

</comment></comment></comment><comment><USER89> arpanet was not really the precursor to the internet, rather the precursor to email. Big distinction. Because the www is graphic rather than text based.

</comment><comment><USER90> Nobody invented the internet. It was only a matter of time before computers sent messages over far distances, like phones had already done. The internet isn't broken. There are millions of Internets just like the one the author laments losing, only they are for other people. The mainstream web is what has people down, because it's a reflection of the mainstream, which has long been foul. The problem there is using mainstream internet instead of using 50 year old technology to create your own networks.

</comment><comment><USER91> I don't agree the internet had "ethical roots." Drugs were sold on the internet since the 80s. And the whole thing was funded in the name of warfare. Also the idealized notion that the internet allows for more extremism, as if the thoughts people express online would not be possible in the brains of these people had they stayed offline, make no sense.

I think the article is correct to assume the internet will become more balkanized and countries once they gain the ability to will control their internet very tightly

<comment><USER34> A difference is that the "unacceptable" opinions people once expressed to their friends in the neighborhood bar can now be broadcast over the internet to a wider audience.

The Intenet is only one piece though. The other piece is how digital technology makes the production of media cheap and ubiquitous. This breaks the monopoly of media organizations on production, just as the internet and hosted web services break the monopoly on distribution.

</comment></comment><comment><USER92> It feels like author is depressed. It's a bit sad to read. He manages to pull so much negativity out of the things that are generally have a net-positive impact, things that drive the progress, that are progress.

Disappointing article. I don't need this negativity in my life.

<comment><USER93> Almost every big positive change in society is a result of people feeling negative about the status quo.

This reminds me of Steven Pinker who goes around saying, please stop whining; some/many/most/all things are better than they used to be! while somehow neglecting the fact that to the degree things are better, they usually are _because_ people didn't stop whining.

<comment><USER94> I think Pinker's point is that many of the people whining are trying to "fix" things by changing the very things that got us here in the first place -- much of which was luck, or success after many failures, not just people whining.</comment></comment></comment>


Integrating Peecho's Cloud Print Button into your mobile app - <AUTHOR> http://www.peecho.com/blog/integrating-peechos-cloud-print-button-into-your-mobile-app.html

<comment><AUTHOR> This Startup helps you sell the content in your app as personalized printed products like photo books and magazines. It's great if your app revolves around awesome images or user-generated content.</comment>


Inside Shenzen: China's Silicon Valley - <AUTHOR> http://www.theguardian.com/cities/2014/jun/13/inside-shenzen-china-silicon-valley-tech-nirvana-pearl-river <comment><USER2> Has anyone lived here. Can you give perspective on this article?</comment>


A yuri visual novel game using Esperanto language released in japan - <AUTHOR> http://sukerasparo.com/ <comment><AUTHOR> Rin is "visitant" girl in other world (from this world).

The other world is can't using this world language (Japanese/English). She learining "Juliamo" (other world language, like a Esperanto). Ruka (native girl in other world) to help for leaning.

Through the game, you can truly learn Juliamo.</comment>