Tuple Spaces – Good Ideas Don't Always Win (2011) - <AUTHOR> https://software-carpentry.org/blog/2011/03/tuple-spaces-or-good-ideas-dont-always-win.html <comment><USER3> The CTO at my first job out of college was the chief architect for JavaSpaces. I think we'd used it in an early version of the product but had migrated away from it by the time I joined full-time.

Aside from the fairness issues that other commenters mention, tuple-spaces work at an awkward level of abstraction. You can easily implement many other distributed concurrency models with them - semaphores, message queues, producer/consumer channels, broadcasts, even MVCC and transactions - <USER2> oftentimes, _in the application_ it's more natural to just use the more specific abstractions. For example, you could implement a message queue by putting tuples of [type tag, sequence number, ...data] in and taking out the next message of a given type - but usually you'd want guarantees that there are no name collisions among type tags, and that sequence numbers are never skipped, and a mechanism to resend missing messages if for whatever reason they aren't produced correctly. At that point you'd rather just use golang- style channels or a real message queue library rather than roll that on top of the tuple-space.

There are relatively few problem domains I can think of that map _directly_ to a tuple-space, without building some other concurrency abstraction on top of it. Dependency graphs and workflows, perhaps, but there are other libraries to handle that specific problem which also handle things like tracing, debugging, and error correction.

<comment><USER4> Early to mid 2000's a product I worked on had a messaging abstraction that you could use JMS, MQSeries, MSMQ, etc. We tried, really tried, to use JavaSpaces but it had no FIFO guarantee. You could theoretically add and get tuples and one could stay in the space for days. A non-starter for that.

</comment></comment><comment><USER5> It introduces a nice level of indirection between different actors, so that they don't need to know about each other's existence in order to communicate and solve problems together. The actors can be added and removed dynamically, and so the problems to solve and the problem-solvers can evolve over time. It's a pretty powerful and flexible idea! To use GoF terminology, it's like having a Mediator for a bunch of asynchronous and fully decoupled pub-sub Observers and Observables. It's a way to implement Barbara Hayes-Roth's Blackboard model.

JavaSpaces, TSpaces emphasized the over-the-internet aspects of it, which didn't matter to us for our project. We ended up finding and using something much simpler called LighTS. With all the nice support for concurrency in Java these days though, it wouldn't be much work to put one together from scratch.

</comment><comment><USER6> I used tuplespaces to implement a poor man's distributed computing for Matlab back in 2009 or so.

It would simply put Matlab code and parameters in a tuple, a worker would pick it up, compute, and put the results back. Used it to distribute the heavy function evaluation in a genetic optimization.

It was very easy and trouble free..

Edit: mixed up the implementations, I used TSpaces by IBM [http://www.almaden.ibm.com/cs/TSpaces/Version3/ClientProgrGu...](http://www.almaden.ibm.com/cs/TSpaces/Version3/ClientProgrGuide.html)

<comment><USER7> Sounds like the current Function-as-a-service trend?

<comment><USER8> "Go Service Yourself" is the latest fad in Concurrent Micro-Managed Golang Function-As-A-Service Oriented Architecture Implementing Robust Distributed Parallel Y-Combinator Cloud Servers with Amazon Lambda, so other Amazon Lambda Functions can recursively call Themselves without knowing Their own names.

</comment></comment></comment><comment><USER8> In the discussion of "X and NeWS History", I mentioned "PIX", which integrated PostScript with tuple spaces on Transputers, in thread about how X-Windows is actually just a terribly designed and implemented distributed database with occasional visual side effects and pervasive race conditions:

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

Jon Steinhart: "Had he done some real design work and looked at what others were doing he might have realized that at its core, X was a distributed database system in which operations on some of the databases have visual side- effects. I forget the exact number, but X includes around 20 different databases: atoms, properties, contexts, selections, keymaps, etc. each with their own set of API calls. As a result, the X API is wide and shallow like the Mac, and full of interesting race conditions to boot. The whole thing could have been done with less than a dozen API calls."

To that end, one of the weirder and cooler re-implementations of NeWS was Cogent's PIX for transputers. It was basically a NeWS-like multiprocessing PostScript interpreter for Transputers, with Linda "tuple spaces" as an interprocess communication primitive:

[http://ieeexplore.ieee.org/document/301904/](http://ieeexplore.ieee.org/document/301904/)

The Cogent Research XTM is a desktop parallel computer based on the INMOS T800 transputer. Designed to expand from two to several hundred processors, the XTM provides a transparent distributed computing environment both within a single workstation and among a collection of workstations. Using Linda tuple spaces as the basis for interprocess communication and synchronization, a Unix- compatible, server-based OS was constructed. A graphic user interface is provided by an interactive PostScript window server called PIX. All processors see the same set of system services, and within protection limits, programs capable of using many processors can spread out over a network of workstations and resource servers, acquiring the services of unused processors.

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

[http://wiki.c2.com/?TupleSpace](http://wiki.c2.com/?TupleSpace)

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

<comment><USER9> Another good article to read about this is "Linda Meets Unix", which was published in IEEE Computer magazine. [https://ieeexplore.ieee.org/document/44903/](https://ieeexplore.ieee.org/document/44903/) (full disclosure: I wrote it).

</comment></comment><comment><USER10> This sounds interesting, but feels like magic. How do the tuples get to where they're going? In my experience, computing bits that feel like magic have hidden costs, that are usually rather high.

Contrast this approach with Erlang, there's still a lot of tuples, but you have to (somehow) know where to send them at a (sometimes high) human cost to developers, but usually low runtime cost.

<comment><USER11> It's better to think of tuple spaces as a concurrency / communications model than an implementation. So it's more like "the actor model" rather than Erlang's or Java/Akka's specific implementation of it. It's more about "if we had this type of system with these constraints and these features, abstracting away these details, what would we gain or lose?". You're right that in the end a good or bad implementation can make or break things (take a look at this paper: [https://arxiv.org/abs/1612.02979](https://arxiv.org/abs/1612.02979)), but that's not the point, at least with the original paper.

The interesting thoughts from the paper as far as I can see were: 1) Tuple spaces are programming language or architecture or program independent, and vastly different programs can communicate with each other 2) You don't communicate directly to other agents by address, you write to a topic and read from a topic, which is a form of decoupling producers and consumers 3) The "block when nothing to read in this topic" idea, which makes programming coordination SO easy. I guess it's a bit like unix pipes.

If tuple spaces don't seem that interesting and novel, it's probably because of the benefit of hindsight and that a lot of these ideas are so subsumed into the tools of today. I can't definitively make the claim that Linda is the cause of this, but I suspect it had some effect. I think the original author also had a lot of wacky ideas around "cyberspace" and all that, but that's another deal and I don't think it's why people find the Linda paper interesting now. The closest useful descendants of Linda to be seem to be modern Pub / Sub systems or coordination databases like RabbitMQ, Kafka, Zookeeper.

<comment><USER10> I can't run my service on a model, I have to run it on an implementation. When people try to abstract away the hard parts of the problems, it usually leads to bad results. For examples, SQL let's you express all sorts of interesting queries, very few of which are a wise idea to run thousands of time per second; ORMs make this even worse -- how data is stored and how data is queried really need to be determined in concert in order to make data storage and retrieval work, assuming you have sufficient data and query volumes to care -- if you've got only a few thousand pieces of data, it barely matters. That's not to say SQL isn't useful, or interesting, it's just not enough.

In this case, the mechanism seems too general -- if I want to read all the outstadning tuples with 2 as the second elememt, that's possible, but seems rather hard. If it's really about consuming tuples within a named channel, I want to know more about the expected or desired properties of distribution -- how is it determined which agent gets to consume a tuples when multiple request a matching tuple simultaneously, which tuple is consumed when many tuples exist that match. What guarantees are needed to ensure progress, what guarantees are hard to provide, what guarantees are useful, but not required etc. Is this the most basic abstraction for distribution, upon which other useful abstractions can be built -- or are there other underlying basic abstractions that are needed, are there useful abstractions which cannot be built upon this, etc.

<comment><USER12> > In this case, the mechanism seems too general -- if I want to read all the > outstadning tuples with 2 as the second elememt, that's possible, but seems > rather hard

How is this any different than an SQL query with 2 in the second column? Tuple spaces seem like a RDBMS with a more restricted query model.

</comment></comment></comment></comment><comment><USER13> If you are interested in tuple spaces then I recommend reading David Gelernter's "Mirror Worlds: or the Day Software Puts the Universe in a Shoebox...How It Will Happen and What It Will Mean" and any Jini documentation you can get.

<comment><USER14> Huh. That's interesting. I remember reading Wired article about Jini as a pudding programmer and thinking "Yes, this can't happen soon enough". And I can still continue thinking...

Article is from 1998 and mentions (among other things) Tuple Spaces:

[https://www.wired.com/1998/08/jini/](https://www.wired.com/1998/08/jini/)

I wonder what ultimately decided Jini's fate.

</comment></comment><comment><USER15> A few jumping off points if you like this sort of thing

LuaTS — A Reactive Event-Driven Tuple Space [https://pdfs.semanticscholar.org/91cb/8c359920682fda35abd9c2...](https://pdfs.semanticscholar.org/91cb/8c359920682fda35abd9c211515feb6a4362.pdf)

[https://redis.io/](https://redis.io/) (uses Lua for scripting)

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

Comet: An Active Key Value Store

[https://vanish.cs.washington.edu/pubs/osdi2010comet.pdf](https://vanish.cs.washington.edu/pubs/osdi2010comet.pdf)

[https://vanish.cs.washington.edu/pubs/osdi2010comet_presenta...](https://vanish.cs.washington.edu/pubs/osdi2010comet_presentation.pdf)

ZeroMQ [http://zeromq.org/](http://zeromq.org/)

I'd love to hear to distributed languages with first class support for tuple space type operations (not Erlang).

</comment><comment><USER16> See also "chemical" programming

[http://chemist.io/chymyst01.html](http://chemist.io/chymyst01.html)

[https://en.wikipedia.org/wiki/Join- calculus](https://en.wikipedia.org/wiki/Join-calculus)

<comment><USER17> Or chemlambda [https://github.com/chorasimilarity/chemlambda-gui/blob/gh- pa...](https://github.com/chorasimilarity/chemlambda-gui/blob/gh- pages/dynamic/README.md)

<comment><USER8> And if that's not weird and robust enough for you, try "Programming the Movable Feast Machine with λ-Codons":

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

Or "Intercellular Transport in the Movable Feast Machine":

[https://www.youtube.com/watch?v=6YucCpYCWpY](https://www.youtube.com/watch?v=6YucCpYCWpY)

And especially "Robust-first Computing: Distributed City Generation":

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

[http://www.cs.unm.edu/~ackley/papers/paper_tsmall1_11_24.pdf](http://www.cs.unm.edu/~ackley/papers/paper_tsmall1_11_24.pdf)

</comment></comment></comment><comment><USER18> Ruby had a bundled distributed tuplespace implementation (Rinda) for many years, built on top of druby.

I remember playing with it, and wondering why it wasn't more popular.

</comment><comment><USER19> "And compile-time analysis of tuple in/out patterns can make it run efficiently in most cases; adhering to some simple patterns can help too."

Sounds like it might be overly generalized, with the developer having to implement actual mechanisms ("simple patterns") on top and the compiler/runtime having to figure out efficient implementations by presumably sophisticated analysis, all the time hoping that the two align.

</comment><comment><USER20> Nix reminds me of tuplespaces. Each derivation in the store is a tuple describing how to evaluate a result. Active evaluations also activate their dependencies.

</comment><comment><USER21> Somewhere I should still have an old JavaSpaces book I picked up specifically because I found tuplespaces such a compelling idea. I've tried to find a good way to use it over the years, but it's never quite matched any problem I was trying to solve.

I seriously considered it as a way to share monitoring events between various systems that might be interested in consuming them: logging, billing, alerting, etc.

</comment><comment><USER22> The paper mentioned in the article, "Generative communication in Linda" by David Gelernter is available from citeseer: ://citeseer.ist.psu.edu/viewdoc/summary?doi=10.1.1.113.9679

With broken links. Nice. Try [http://signallake.com/innovation/p80-gelernter.pdf](http://signallake.com/innovation/p80-gelernter.pdf)

<comment><USER8> Author of the visionary and flamboyantly named book "Mirror Worlds or the Day Software Puts the Universe in a Shoebox...How It Will Happen and What It Will Mean (1992)", and unfortunate target of the Unibomber.

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

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

</comment></comment><comment><USER23> One does wonder how tuple spaces would've fared without the influence of the unabomber…

<comment><USER24> I wonder more how it would have fared if DG weren't kind of an asshole.

<comment><USER9> I spent several days with DG when we were working on PIX and QIX, and I found him to be a smart, helpful person. Of course, he was on a crusade for tuple spaces, but you shouldn't hold that against him. Also, that was before he had several fingers blown off.

<comment><USER24> He named Linda before he had several fingers blown off too. I believe his crusade against the 90-something percent of climate scientists that believe in anthropogenic climate change is after he lost the fingers. I'm very sad he lost them, no one should have to deal with that. He was kind of an asshole before -and- after. And fwiw I'm using a broad definition of asshole, one that explicitly includes both people who name languages after porn stars because they were offended by Ada and people who deny established science outside of their field which has the not-inconsequential likelihood of causing mass extinctions.

</comment></comment></comment></comment><comment><USER25> I worked at a company in 2002 that used tuplespaces for managing distribution of searches to worker machines. It worked really well! I don't remember us ever having trouble with that part of our system.

</comment><comment><USER26> Gosh, for my Bachelor's final year dissertation in 1990 I implemented a distributed version of Linda / Tuplespace in C++ across Ansaware and Tanenbaum's Amoeba OS. Seems a lifetime ago!

</comment><comment><USER27> With JavaSpaces I remember really getting burned by the lack of queuing fairness guarantees. The ideas were nice- but execution was very laggy.

</comment><comment><USER28> This would still run on top of threads or something. So how could a basic Java -based wen-server be better if it took advantage of JavaSpaces?

<comment><USER29> Could we equally ask, "how something written in machine code be better if it took advantage of the JVM, because the JVM is implemented in machine code?"

</comment></comment><comment><USER8> The Linda programming language was named as a pun on Ada.

[https://en.wikipedia.org/wiki/Linda_(coordination_language)#...](https://en.wikipedia.org/wiki/Linda_\(coordination_language\)#Name)

</comment><comment><USER30> Built a python tuplespace around '06\. Realized it was really just a task queue and / or RPC abstraction with a database.

Now mostly just use RPCs and queues directly, depending on whether I need something now, or later.

</comment><comment><USER31> I don't get it. Isn't this just a threadsafe schemaless database?

<comment><AUTHOR> The main difference is that you can have code waiting for a query to yield results. Imagine a chat service which has a separate process for each user's TCP connection. Normally, when a new message arrives, you have to tell each user's connection process to send the message over the network. In a tuple space system, each connection process can wait for new messages to be added to the database and send them automatically.

</comment></comment><comment><USER32> Eve language was actually a good tuple spaces implementation which had a lot of fans</comment>


Ask HN: Does it matter to give IRS your bank routing info? - <AUTHOR> When you get the Covid checks, you have an option to give IRS your routing numbers. Is there any concern with this? <comment><USER2> If the IRS were to garnish your accounts, they can get all the account numbers without your assistance. Giving them the information might save them a day or two in the processing.

I am not a fan of giving government agencies sensitive data that they do not already have readily available for historical reasons. The federal government historically have not done well in _technical_ security audits. This is not specific to the IRS and I am not picking on them specifically. More generally this is about technical security audits and not the checkbox governance audits. They are getting better in governance and compliance audits.

All of that said, I am a firm believer in "People can't mismanage, lose or otherwise _accidentally_ leak data they do not have in the first place." I barely trust my bank to manage my bank accounts. Having worked for a bank, I know how antiquated their back-end systems are.

<comment><AUTHOR> your answer is very contradictory, can you please clarify your advice?

<comment><USER2> My answer was intentionally contradictory. I am just providing the data points I know of. If your concern is their ability to garnish money, then giving them information isn't really an issue. If your concern is them getting hacked or otherwise leaking your data, then you may wish to take a conservative approach.</comment></comment></comment>


Even a URL tells a story - <AUTHOR> http://reillybrennan.com/post/7686471401/even-a-url-tells-a-story

<comment><USER2> This story is pretty short: the Sony page is an Enterprise Java (TM) shopping cart, not a brochureware page in a CMS.

Apple also is a heavy user of Enterprise Java. Try finding pages where they can take input.

That said, yeah, given the choice I would a) devote engineering resources to getting human-readable URLs (SEO and UX benefits for reasonably little work) and b) prefer frameworks which make that the default because they are likely clueful in other ways, too.

</comment><comment><USER3> I'd say that the URL for Apple iPod is:

      http://google.com/search?q=apple%20ipod

and for Sony Walkman:

      http://google.com/search?q=sony20walkman

Really, I see people going to their GMail by typing "gmail" in Google. And ask 100 strangers on the street how important the tidyness of the text in their browser's address bar is to them.

<comment><USER4> Yup... and unfortunately for Sony, the top hit for "sony walkman" is Wikipedia. If their URLs didn't completely suck maybe they would have better luck with their SEO.

<comment><USER3> I think it's Wikipedia because "walkman" has a much longer history as a brand name, from cassette players to cell phones.

I remember times where back where I lived "walkman" was a plain noun meaning "any kind of portable cassette player".

<comment><USER5> Well, in a way the same thing is true with "iPod" now: It's used to refer to "any kind of MP3 player". But search for "ipod" on Google, and the Wikipedia page telling you all about the history of the iPod is not the first result, it's a page where you can actually _buy_ one. Several pages, actually.

<comment><USER6> Hmmm. I don't believe people use the term 'iPod' to refer to any old MP3 player.

<comment><USER7> Some do (my parents for example), and I suspect even among those who recognise different brands, there's decreasing awareness of what MP3 is. It's not uncommon for a brand to become synonomous over time - Walkman was an earlier example in this thread, but others include Liquid Paper, Roller Blades, and even Biros. Dangerous territory, because in the instance where it does become generic your trademark protection disappears (see also the battle Xerox continues to wage in that regard).

<comment><USER8> Also, Kleenex. Possibly the "Duck" brand of tape as well since people seem to have trouble saying duct tape.

<comment><USER9> Actually duct tape vs duck tape isn't all that clear.

<http://en.wikipedia.org/wiki/Duct_tape#Etymology>

Duck Tape is trademarked, but it's possible that was the original term for it. It's weird.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER10> Sony's mixing the store with the product information page, resulting in such an ugly URL. Regarding stores, however, Apple isn't entirely innocent either—what about URLs like this[1]?

Sony UK's is just a product information page, and it has a much cleaner URL[2] (albeit not as clean as Apple's).

[1] [http://store.apple.com/us/browse/home/shop_ipod/family/ipod_...](http://store.apple.com/us/browse/home/shop_ipod/family/ipod_touch?aid=AIC- WWW-NAUS-K2-BUYNOW-IPODTOUCH-INDEX&cp=BUYNOW-IPODTOUCH-INDEX)

[2] <http://www.sony.co.uk/hub/walkman>

</comment><comment><USER11> I get the point he's trying to make, but you can still type in <http://sony.com/walkman> and it takes you to the correct page.

<comment><USER12> How do you discover that though? If you get to it from Google or another site, you're immediately thrown onto a page with a hideous, unrecognizable URL.

</comment></comment><comment><USER13> It's ironic that a post about URL tidiness would be here: [http://reillybrennan.com/post/7686471401/even-a-url- tells-a-...](http://reillybrennan.com/post/7686471401/even-a-url-tells-a- story)

<comment><USER14> Aside from maybe removing the numeric ID, is that url that bad?

<comment><USER4> A better URL would be <http://reillybrennan.com/2011/even-a-url-tells-a-story> \- stick the year in there to get a fresh namespace every 12 months so as not to end up with collisions some day.

<comment><USER15> I can see going either way with or without the year, but not for the reason you stated. If you are writing the exact same title for a blog post then the year should probably be in the actual title because that most likely is an important piece of the article (thinking "Resolutions - 2011"). The reason I might include a year in the path is just to let users know quickly how old the material is when they see a link to your article, but then again do you really want to let them know that before click into your site?

<comment><USER4> I like using years for namespaces because I like thinking long-term - in 50 years time, will that site's namespace be getting too busy? Using years means you can even completely change the rest of your URL scheme without needing to update last year's URLs.

Quickly letting users use the age of the article is a good reason too, but only for blog-style content. I don't think you should use the year trick with evergreen content (example.com/2010/terms-of-service for example).

<comment><USER16> example.com/2010/terms-of-service would still be a good URL for the namespace reforming reasons you cited.

</comment></comment></comment></comment></comment></comment><comment><USER17> I like the point of this post, but I wish the author would have elaborated more. Sanitary URLs are great because they play on human emotions. Looking at the simple, clean Apple URL, it does two things: it provides an easy to remember route to their specific product, and two, it feels _clean_. In contrast, the Sony URL feels dirty and disorganized, lacking a real focus and seemingly, makes the Walkmen feel like just another electronic whatchamacalit. Although it seems purely cosmetic, there's a subconscious thing going on. Yes it helps developers/consumers but even more importantly, it makes your brand look focused. There should be more writing on the psych aspects of web development. I feel like there's a lot to be said.

<comment><USER18> Donald Norman wrote a great deal about that subject (psychological and emotional aspects of user experience), albeit not specifically about web dev.

<comment><USER17> I thought the name looked familiar. I downloaded a copy of "The Design of Everyday Things" not too long ago. Guess I'll have to crack it open?

For those that are also interested: [http://www.amazon.com/Design-Everyday- Things-Donald-Norman/d...](http://www.amazon.com/Design-Everyday-Things- Donald-Norman/dp/0385267746)

<comment><USER18> And there's also Emotional Design: [http://www.amazon.com/Emotional-Design- Love-Everyday-Things/...](http://www.amazon.com/Emotional-Design-Love- Everyday-Things/dp/0465051359)

</comment></comment></comment></comment><comment><USER19> The interesting thing though is that Jobs was always very inspired by Sony and "tidyness".

I really do wonder if Apple can continue without Jobs or whether it will decay into management kingdoms like Sony and other large organizations.

</comment><comment><USER20> The story here is, 'hide complexity'? Or perhaps 'Focus on the details of user experience'?

I love the reference to "all of this business at the top". Perhaps there's a design principle in there. If a user is ever referring to "all this business..." then you've gone off track.

</comment><comment><USER21> Who cares about urls? My browser hides everything except the domain anyway

<comment><USER22> _Who cares about urls?_

Clean URLs can help developers to better manage their site. This is because they provide an intuitive way to organize site content. By design, this also means that users can find information easily.

As a simple example, imagine surfing an exotic car website. You want to find information about the Koenigsegg Agera. Now, imagine the following two URLs which both point to the page about the Koenigsegg Agera:

1\. <http://www.example.com/vehicle.aspx?id=0x5F3759DF>

2\. <http://www.example.com/vehicle/koenigsegg_agera>

Clearly, the URL in example 2 offers:

1\. An intuitive way to navigate the site's content. As a user, you could enter a different vehicle name, using the given URL structure, to locate other vehicles:

<http://www.example.com/vehicle/ariel_atom>

<http://www.example.com/vehicle/porsche_918>

2\. SEO (Search Engine Optimization). This is a topic unto itself. In general, one of the areas of SEO is optimizing URLs in order to achieve the best results with regard to indexing and ranking. Please see Google's Search Engine Optimization Starter Guide (see link, below) for a more in-depth treatment of this topic.

References:

Clean URL <http://en.wikipedia.org/wiki/Clean_URL>

Google's Search Engine Optimization Starter Guide (See page 8, "Improve the structure of your URLs") [http://www.google.com/webmasters/docs/search-engine- optimiza...](http://www.google.com/webmasters/docs/search-engine-optimization- starter-guide.pdf)

URL structure [http://www.google.com/support/webmasters/bin/answer.py?answe...](http://www.google.com/support/webmasters/bin/answer.py?answer=76329)

Search Engine Optimization <http://en.wikipedia.org/wiki/Search_engine_optimization>

<comment><USER23> I went through your links to understand the SEO issue, and I am having a hard time finding more than one technical reason to make URLs friendlier. The only thing that stood out to me was along the lines of including searchable keywords in your URL, so indeed, rather than just an ID, having the word "walkman" in Sony's URL would raise their URL score in the search engine.

The rest was pure speculation on what "users" do with URLs -- aka some engineer's personal opinion on what's pretty. Can anybody provide links to usability studies regarding what users actually do with URLs? This would be of far more value than some company's personal standard, be it Google or someone else.

My experience is unfortunately anecdotal, but all my users just bookmark or copy-paste whatever they see. They are more concerned that the site has good navigation than that they can alter the URL or type it in directly. They use a starting point and then move on from there. So I have a hard time believing statements in these documents like "users may remove a part of the URL, thinking it is not important". The one exception is that I _have_ seen newer users type "www." before URLs that do not need it.

<comment><USER22> (I am attempting to repond to both _Xurinos_ and _romaniv_ in a single reply here.)

My clean URL example was just an example. I did not intend to infer that the world is primarily navigating via URL manipulation, but it came across that way. Rather, I meant that it can be a nice touch for usability, in certain cases. For example, power users are going to quickly notice, "Hey, I can find a vehicle by manipulating the URL by using the 'manufacturer_carmodel' pattern." Of course, the site would have normal search functionality, so that traditional users could locate vehicles in that manner as well. In the end, it is more about SEO, but with the clean URL paradigm, you get both (again, in some cases), so it can be a win-win. Also, the URLs look nice when they appear in search results (i.e., nice keyword-based URLs instead of URLs with query strings and IDs) which can lend itself to readability/usability.

Of course, even with clean URLs, a case where it probably does not work is a blog (as noted by _romaniv_ ). For example, no one is going to manipulate a long URL string for a blog posting; they will simply navigate the site for the information. Although, here is a real-world example that I have encountered: I have come across multi-part blog postings via Google searches. In many cases, "Part X" displays in the search results, but not "Part 1." In these cases, it is always nice when these sites are designed with clean URLs, making it a breeze to simply copy the URL from the search results, and change the "X" to "1". Clearly, this is not easy (or possible) to do if the URL is a query string with an unintuitive article ID.

Ultimately, I think that clean URLs are about SEO, but I think they can have a usability factor, again, in some cases and well, for "power users" at least. I probably should have said "power users" instead of "users" in my original post.

</comment></comment></comment></comment><comment><USER24> I wrote a thing about my exceptionally short urls a little while ago: <http://qntm.org/urls>

</comment><comment><USER25> IMO, this shows how important each respective product is to each company.</comment>


Google Cloud Gold support worth it? - <AUTHOR> We're a startup on their silver plan and I'm having a horrible time with support. Their last response was over 3 days ago on an issue that I've been able to reproduce consistently. I hate to pay more money with this experience but if it helps not being ignored then we'll have to pony up the cash because this is really hurting us. <comment><USER2> Disclaimer: I'm not employed by anyone in this space; I'm a consultant who focuses on AWS bills, but I've no formalized business relationship with any of these providers past tiny accounts on all of them for a few ridiculous purposes-- mostly comedic.

Google has amazing technology-- but I fear they lack the ability to execute operationally at a level that makes me comfortable trusting then with a business's livelihood. They turn things off too frequently for comfort; they fail to realize that sales are relationship driven in ways that algorithms fail to satisfy; they don't demonstrate a dedication to customer success that makes me take their cloud offering particularly seriously.

I really don't see that paying them for a higher support tier is likely to mitigate your issue...</comment>


Show HN: Bild – Simple image processing in Go with parallel processing support - <AUTHOR> https://github.com/anthonynsimon/bild <comment><USER2> Wow, this code is so easy to read.

Even though I might not use this package as I don't have any Go project in my pipeline, reading the code was a nice learning experience and just demystified a few things about image processing for me.

Go might not be one of my favorite languages, but its readability is just great (or maybe this codebase isn't idiomatic Go?).

<comment><USER3> Agreed, that is definitely one of the nice things about Go. Compared to something like Haskel, to pick an extreme example, it is so easy.

Part of that is because there aren't any 'higher level' functions so you are forced to write everything out as explicit loops. Often a bit tedious but it is definitely easier to see what exactly is happening when reading the code.

Side rant on Haskel: I really wanted to get into it, but when you see function signatures like this:

        add                     :: Integer -> Integer -> Integer

You have to wonder what pipe they are smoking. I'm sure someone is going to tell me there is an obscure compsci reason why it couldn't have been this:

        add                     :: Integer, Integer -> Integer

But that is just stupid, sorry.

<comment><USER4> It could have been

        add :: (Integer, Integer) -> Integer

but then you couldn't write

        add 1

and use it as a function. And that would be just stupid, sorry.

<comment><USER5> It's just a matter of syntx. After all it's rather common for people to want to do partial application to non-first argument: [http://stackoverflow.com/questions/4553405/how-can-i-bind- th...](http://stackoverflow.com/questions/4553405/how-can-i-bind-the-second- argument-in-a-function-but-not-the-first-in-an-elegan)

So something like:

        add 1 _

or whatever (I'm not Haskeller so hard for me to judge what exact syntax) would do.

And then

        add _ 1

would be easily possible too.

<comment><USER4> Absolutely, but then what would

        add _ (minus 1 _)

mean? Not the same as

        let f = minus 1 _
        in add _ f

and things would get very weird very fast.

</comment></comment></comment></comment></comment><comment><USER6> Did you benchmark Go vs C/C++ for parallel image processing ? I'm curious to see if there is actually a cost into switching to a higher lever language like Go.

<comment><AUTHOR> I haven't done any formal benchmarks yet. At the moment the library is not fully optimized, just the low hanging fruit (optimization/bugfixing is the next stage).

But I will definitely post some benchmarking results soon, as they are crucial for the optimization stage.

By the way, any suggestions/contributions to the project are more than welcome!

<comment><USER7> Some basic suggestions:

All of the blur/ functions could see big improvements with some simple changes:

* Use separable kernels whenever possible (this reduces a O(K^2) evaluation to 2 _K evaluations)

_ Some filters (like your box filter) can be done efficiently as a linear combination of IID filters (i.e. implicitly computing a pair of running sums, subtracting one from the other as you go).

* The convolve/ package could use some cache blocking, and should definitely have the conditionals on the inner-loop removed.

Unfortunately, these changes will likely make your code a bit more difficult to read.

This is one of the reasons Halide has become so popular for image-processing (if you're interested in high performance image processing without sacrificing maintainability, Halide is definitely worth looking into!)

<comment><AUTHOR> Thank you for the suggestions! The blur and convolution packages are definitely among the first things to be optimised, lots of other features could benefit from a much needed faster convolve function.

Halide looks very interesting, I found the "Halide Talk" video on their website to be a great primer on their methods.

</comment></comment></comment></comment><comment><USER8> Without SIMD (or autovectorization) this will be very slow. This is really the canonical use case for SIMD acceleration, which Go doesn't support.

This is very clear code though and great for learning.

<comment><USER9> There's [https://github.com/bjwbell/gensimd](https://github.com/bjwbell/gensimd) for doing SIMD in Go. That'd take away the "clear" part pretty quickly.

</comment></comment><comment><USER10> This looks neat, nice code, but isn't this just the same stuff that xv (1) has been doing since the 90's? It sure looks similar. Maybe this is much faster?

(1) [https://en.wikipedia.org/wiki/Xv_(software)](https://en.wikipedia.org/wiki/Xv_\(software\))

<comment><AUTHOR> The project was originally for learning purposes, as I wanted to try out Go's concurrency/parallelism for something not web related. It quickly grew into a collection of common image processing functions, so I decided to turn it into a Go package.

The goal of the library is ease of use and development instead of being the fastest implementation (and then loosing too much readability). That being said, it is not slow but there's still room for improvement, which will be addressed during the optimisation and bug fixing stage.

I'm not sure if it's the same as xv, to be honest I haven't worked with it before. But it looks interesting, thanks for the link!

</comment></comment><comment><USER11> In which situations is parallel execution used?

<comment><AUTHOR> Basically every time that we need to iterate over the _Pix []uint8_ containing the pixel data, as this can be run in parallel (or concurrently if running in a single logical CPU).

You will usually see it like this:

      parallel.Line(height, func(start, end int) {
        for y := start; y < end; y++ {
          for x := 0; x < w; x++ {
            pos:= y*img.Stride + x*4
            // ...
          }
        }
      })

_parallel.Line_ is a function that takes a _length int_ and a _fn func(start, end int)_ and it splits the provided length into segments, then it dispatches the provided fn with each segment range to a new goroutine. The number of segments is defined by the number of available logical CPUs.

So basically each dispatched _fn_ is iterating over its assigned range of the _Pix []uint8_ and the image is split into chunks by height. Notice that only the y-axis loop is assigned a partial range and we iterate over the x-axis first, this is because we want to move sequentially in the slice as much as possible.

During the optimization stage I would like to benchmark against a tiled segmentation instead of a line one, but the current version only implements the latter.</comment></comment>


a16z has an Official Rapper and he made this video about Ben Horowitz - <AUTHOR> http://vcbhorowitz.com

<comment><USER2> Hi,

I'm Ben. Please people pay attention to me!

-Ben</comment>


WP moves to React, new cashcow rears its head - <AUTHOR> Considering that WordPress is moving to Node and React, and that a massive amount of existing WP extensions make heap loads of money, can you see the upcoming opportunity?
Quality React extensions for WP is going to become a massive market real soon.
Are you going to jump on the boat? <comment><USER2> Does Wordpress really move away from PHP/Mysql ? From what I read [http://ma.tt/2015/11/dance-to-calypso/](http://ma.tt/2015/11/dance-to- calypso/) it isn't very clear.

<comment><USER3> Seems to me like automatic have been working on a new Client/frontend written in JS with React components, the Server/Backend will still be powered by Wordpress written in PHP+MySQL.</comment></comment>


Bill Gates: The Scam Behind Her Foundation - <AUTHOR> https://www.youtube.com/watch?v=Dqzt6yAmdDE <comment><USER2> BTW, it should be translated: "his" foundation. "Sa" refers to the foundation, which is feminine in French.

</comment><comment><USER2> From what I understand, the problem with gates and other philanthro- capitalists is that they have the power to shift focus of organizations (research and administration) from what's actually needed, to their own priorities.

Ie giving money to malaria which is not a priority rather than NCDs, which are. The whole field then re-orientates itself, breaking apart public health long term objectives and priorities.

The consequences are catastrophic and very frustrating.

Mind you that's the same gates which held back the tech world for at least two decades with his shity OS, so to protect Microsoft's monopoly from open source and Linux.

But the world is trained to admire rich people no matter how empty or dangerous they are.

</comment><comment><USER3> any English translation?</comment>


These are the 5 modular smartphones everyone is waiting for - <AUTHOR> http://www.araprototype.com/knowledge/modular-smartphone-versions/

<comment><AUTHOR> It is actually only 4, there fifth, magic cube by Xiaomi is probably only a rumor or a study by the CEO of Xiaomi</comment>


'E-waste' activist gets 15 months in prison for selling Windows restore disks - <AUTHOR> https://www.polygon.com/windows/2018/4/25/17280178/eric-lundgren-windows-restore-disks-microsoft-prison <comment><USER2> Earlier discussion:

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

</comment><comment><USER3> If you have contacts at Microsoft, please share this with them and ask them to overturn this terrible ruling.

Quote: Microsoft's lawyer argued to the court that the sales of the disks "displaced Microsoft's potential sales of genuine operating systems," while ignoring the fact these disks were inoperable without an existing license paid for or granted by the company. An expert witness testified there was "zero or near zero" monetary value in any of the disks; they were useful mainly as a convenience to users or maintenance technicians.

</comment><comment><USER4> The reason customs got involved is that he violated Microsoft and Dell trademarks by printing their logos on the disks. The reason he got jail time is that despite the disks getting seized by customs, they setup a sting to convinced him to sell the disks behind custom's back and he fell for it.

I appreciate his cause, but I think there is a much simpler solution: Have computer repair shops offer a DVD burning service. There is legal precedence for 3rd party services being able to legally make physical copies of digit files for consumers and charge for the service/materials.

</comment><comment><USER5> 15 months in prison, a $50k fine, and then 3 years of subsequent "supervised release" where this guy isn't allowed to be self-employed, smoke cannabis, and must submit to a search of his person on demand.

This is absolutely fucking crazy.

But seriously HN: what are we going to do about it? If this were you going down like this, what might you ask us to do?

</comment><comment><USER6> What the hell is going on here? Doesn't Microsoft offer similar for free download from their own website? I seem to remember their media creation tool not prompting for a key until install time. Why on earth would they fight this?

<comment><USER7> There's another article on HN right now about it, one of the comments provides some insight:

      He was not providing people with restore media they could use to
      fix their own machines. He was taking the restore media, burning
      it onto discs _with official Microsoft and Dell logos on them
      and then selling them to computer refurbishers who would then include them with PCs
      they were selling.

If that's true then I think it provides some justification. It's at least infringing on trademarks.

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

</comment></comment><comment><USER8> This is Microsoft telling the public better not get clever with us or we'll get clever with throwing your aas in jail just to set an example for the next clever person. He was clever and got smashed like a bug by them.

</comment><comment><USER9> Is the idea that Microsoft has a legal right to make it inconvenient or obscure enough to fix an existing licensed Windows installation, that people just don't bother and buy a new license?

<comment><USER10> So it would seem. From my experience with laptop "recovery" partitions, actually reinstalling windows on old hardware is a pretty iffy business, requiring a good deal of expertise. Easier to install Linux at that point.

</comment></comment><comment><USER11> I was just at Fry's electronics and right under the official Windows 10 copies (USB stick + license key, $105) were DVDs that said they were "Restore only" disks for Windows 10. It said plainly on the box that it didn't have a license key and you would need one. They were $12. They weren't made by Microsoft though (no genuine sticker, different packaging).

Seems like the same thing? I thought it seemed convenient for those who lost their media.

</comment><comment><USER12> What a real shame. The punishment does not at all fit the crime.</comment>


Australia threatens social media laws that could jail tech executives - <AUTHOR> https://www.cnet.com/news/australia-threatens-social-media-laws-that-could-jail-tech-executives/ <comment><USER3> As an Australian, I'd just like to say, before the expert Americans come here on their high horse and lecture us about freedom and bald eagles - <USER2> cultures value different things.

There's a difficult debate between "freedom to" and "freedom from", between private tyranny and state tyranny. Different countries will fall along different points along the spectrum. This is okay.

<comment><USER4> You might be right but I'd prefer it if our government let us be free to use secure, encrypted services.</comment></comment>


Show HN: CampTarget, road routing and planning helper - <AUTHOR> https://www.camptarget.com/ <comment><USER2> Sounds like a useful product in theory, but chose not to use it because it immediately asked for a location and authentication with Google or Facebook. Why would you need that information right off the bat? I have no incentive to create a profile on your product without getting to try it out first.

<comment><USER3> Ditto that was an insta-close for me as well.

</comment></comment><comment><AUTHOR> Basically it's an app that should help break your several-day-road-trip by hours that you'll spend each day driving. You can pick some interesting places that you'll like to visit along your way, and soon you'll be able to share this road with others.

It's using Google Maps JavaScript API, some minimal JavaScript on front-end part, and Node + Mongo on backend.

It still has bugs and a lot of things to do, so this would be a beta-preview :).

I would be very happy if you could provide some feedback here :-)

<comment><USER4> A couple non-starters here for me is the immediate asking for location data and login method. Perhaps you should delay the location request until the user chooses a 'Current Location' option? Otherwise you're asking where I am, but even if I told you, I would still have to give you more information (login) to get anything useful. Regarding login, maybe only require logging in for route saving, or other features. This would allow a user to actually try the app before giving any of this information. Maybe you could have a landing page before the application, to give the user an overview of what it actually does first. Great job on shipping a product!

<comment><USER5> I agree, I jumped-in to use it, and before I have an idea of value I am asked to login.

However, to me, the real blocker was when I clicked login with Google, it says it was going to provide my age range. Why? What do you want to do with that?

<comment><AUTHOR> We take name and email and userid, in a really non-malicious attempt to create your future profile. You will be able to opt-out according to GDPR, soon.

<comment><USER6> That doesn't quite answer his question. Why is the age range mandatory to create an account via Google? The basic permissions — notably the ID for each user Google will hand back to you — should be sufficient for that purpose.

<comment><AUTHOR> It is more convenient for us to use Google and Facebook login mechanisms than to create one from the scratch.

We use two methods provided by Passportjs (plus.login and userinfo.email).

I guess one of these asks for age range. You can check their documentation for more details at [http://www.passportjs.org/docs/google/](http://www.passportjs.org/docs/google/).

And for the transparency sake, these are the parts of code on our side.

router.get('/callback', passportGoogle.authenticate('google', { failureRedirect: '/' }), (req, res, next) => { let user = req.user.doc; let userId = user.userid;

        ///
        res.cookie('token', userId, { ...

and this is what is saved to Mongo DB:

var UserSchema = new mongoose.Schema({ name: String, userid: String, email: String, sourcePlatform: String, updated_at: { type: Date, default: Date.now }, });

Hope that helps ;)

<comment><USER6> Thanks for the response! Transparency is always appreciated.

It looks like the age range is a component of the plus.login scope. You're not storing any data associated with that scope, so you can instead use the userinfo.email scope (and, possibly, the userinfo.profile scope) to ask for only the information you need.

</comment></comment></comment></comment></comment></comment></comment><comment><USER7> This sounds like something I would definitely be interested in trying, but I don't have fb/google. Hopefully you can post again when there is some kind of option for email-based logins.

</comment><comment><USER8> easy to log on w gmail. no issue. but the app only offered to find these attractions along my trip: camping, gas, store, etc.

am i missing something? seems like a great oppty to offer some exciting and unexpected options.

i would love a tool like this if it filled in the blanks with destinations that were new, exciting, unique, etc.

</comment><comment><USER9> An excellent application for trip planning already exists called 'Furkot' \- I've been using it for years - I assume this works slightly differently though and actually suggests interesting places? (didn't try it yet because it asked me to log in before I know what it does)

<comment><USER10> Another thumbs-up for Furkot. I use it in place of Garmin's infuriating software and just load it on the device when I'm done. It served me well for a multi-week motorcycle trip to Alaska, and a variety of smaller trips to British Columbia and the like. Since every use case is different I won't go on about why I like it, but in summary it is impressively well done.

I'd compare to CampTarget, but like many others the immediate need for my location and creds was an insta-close for me.

</comment></comment><comment><USER11> From the team that brought you GayWay and MinceRight</comment>


A Decade of Replications Lessons from the Quarterly Journal of Political Science - <AUTHOR> http://thepoliticalmethodologist.com/2014/12/09/a-decade-of-replications-lessons-from-the-quarterly-journal-of-political-science/

<comment><AUTHOR> "Of the 24 empirical papers subject to in-house replication review since September 2012, [1] only 4 packages required no modifications. Of the remaining 20 papers, 13 had code that would not execute without errors, 8 failed to include code for results that appeared in the paper, [2] and 7 failed to include installation directions for software dependencies. Most troubling, however, 13 (54 percent) had results in the paper that differed from those generated by the author's own code."</comment>


Cost Cutting at Dropbox and Silicon Valley Startups - <AUTHOR> http://www.businessinsider.com/cost-cutting-at-dropbox-and-silicon-valley-startups-2016-5 <comment><USER2> These articles are always written with a not so subtle level of schadenfreude by the author.

When companies cut costs they basically have a choice of reducing COGS, reducing overhead, reducing compensation per employee, or reducing the number of employees.

Most software companies have relatively low COGS so there isn't much to cut there. Reducing overhead (office space, events) is the least painful. Cutting peoples' salaries is basically impossible, so the only lever there is holding back bonuses. Depending on the company that may be a big cost saver. The last option is laying people off.

Given those are the only options cutting overhead is the nicest thing to do. Why is that a bad thing?

<comment><USER3> One company I worked for was very big on breakfast meetings. You would grab a muffin and a coffee, then go listen to some VP waffle about something.

One day, the muffins were all sliced in half, and a sign up to only take one half each.

Not long after that the company laid off 6000, including me.

Pay attention to these early warning signs, is my advice.

</comment></comment><comment><USER4> Curious if they've read the classic Steve Blank [https://steveblank.com/2009/12/21/the-elves-leave-middle- ear...](https://steveblank.com/2009/12/21/the-elves-leave-middle- earth-%E2%80%93-soda%E2%80%99s-are-no-longer-free/)

</comment><comment><USER5> As a somewhat frugal person, I feel really uncomfortable when companies buy me unnecessary things (that could be going into my salary...).

SV sounds like it's becoming a nicer place to work to be honest.

<comment><USER6> _As a somewhat frugal person, I feel really uncomfortable when companies buy me unnecessary things (that could be going into my salary...)._

But it wouldn't go into your salary. As far as I've always understood it the goals of perks is, besides attracting new talent, to keep people on premises as long as possible.

<comment><USER7> It is very impressive to younger college graduates. When you go from eating cheapest pizza and pinching pennies, something as simple as free dinner sounds like a lavish perk. Throw in free shuttles, massages, etc, you'd find they'd be really happy and tell their friends too.

It is probably worth it to the company in terms of keeping people there, having them enjoy their day etc more than just paying that to each employee as part of the salary and have them buy their own dinners.

<comment><USER5> That's nice. Everyone is different and different things make them happy.

<comment><USER7> I wasn't saying I personally agree, I would rather have that money in my paycheck. But given their audience and the cost benefits analysis -- it does seem to make sense.

</comment></comment></comment></comment></comment><comment><USER8> The thing that got me was:

"The company wrote in the email that employee perks in total have been costing Dropbox at least $25,000 a year for each employee. Based on Dropbox's roughly 1,500 headcount, that would translate to about $38 million a year."

That sounds nuts, but do "perks" include health insurance, life insurance, the usual stuff? Or just the ridiculous stuff that only exists at tech companies?

<comment><USER9> That's about $100/employee/workday, which is significant but not insane -- a couple of meals, a few espresso drinks, a massage and some dry cleaning and you're probably in the ballpark when you consider operational overhead. Whether they're easy to cut is another matter -- perquisites are considered more important when they're being removed than when they're instituted. (Plus, it's a cheap if unreliable signal for financial distress.)

<comment><USER3> There will also be the salaries, offices, etc of the people whose full time job it is to administer the perks system.

</comment></comment></comment><comment><USER10> I completely understand cutting a chrome panda and eliminating open bar on Friday nights, but things like an employee shuttle seem like a solid use of company money to increase real productivity. Time spent driving a car or navigating a few bus/train connections just can't be that productive. A comfy bus straight to the office (probably with WiFi)? Yes.

<comment><USER11> Dropbox's employee shuttles ran a very limited schedule and only to the Marina and Mission from their Mission Bay office. When the company was smaller it may have been more practical but over time as hiring picked up a larger percentage of employees didn't live in these two areas. Spending so much on a shrinking percentage of headcount wasn't reasonable especially since the majority of employees were paying their own commute costs, often from the South or East Bay.

</comment></comment><comment><USER12> Am I reading correctly that Dropbox management spent a hundred thousand bucks on a _chrome panda_ in order to get people to think about careful spending?

<comment><USER4> I _think_ what happened is they bought a chrome panda first (probably took a year), and then more recently decided it was worth having some level of cost control, but what do you do then -- sell it? remove it? cover it with a tarp? -- so they put a note on it saying essentially "Never Again."

<comment><USER13> It's a pretty cool panda. I can see why they are keeping it.

<comment><USER14> Apparently this is the thing:

[http://imgur.com/gallery/yp7wIRV](http://imgur.com/gallery/yp7wIRV)

I'd ask why, but if there was an answer to that question it wouldn't be half as cool.

</comment></comment></comment></comment><comment><USER15> The question before cutting each cost: Will this help my staff be more productive and happy?

The assumption being a happy and productive staff creates better products.

Panda? Maybe not.

Free soda? Keeps our engineers from being thirsty! Yes.

Bring all you mates to friday open bar? Maybe not

Bring your closest mates to drink beer and talk shop? Yes.

</comment><comment><USER16> Just because investors are no longer willing to blindly shovel cash into the furnace that is SV's pointless startup culture, doesn't mean they will similarly slow down investments into innovative technology companies that have promising products, real revenue and strong visions.

Press loves to generalize. Doesn't make it true.

<comment><USER17> > innovative technology companies that have promising products, real revenue > and strong visions.

How many of today's startups does that describe? Like 1 in 50, maybe? The past three years have felt an awful lot like the late 90s, and I think the next three are going to be a lot like the early 2000s.

</comment></comment><comment><USER18> Frivolous office decorations and perks can be tolerated so long as one avoids frivolous business decisions and products that are doomed to failure from the start.</comment>


Estimate: 800,000 U.S. Households Abandoned Their TVs For The Web - <AUTHOR> http://techcrunch.com/2010/04/13/800000-households-abandoned-tvs-web/ <comment><USER3> I already have. Most of what I want to watch is available on Hulu, Netflix, or CBS' (crappy, admittedly) website. For the one other show I watch, I subscribe on Amazon.

I haven't watched over-the-air or over-the-cable TV in almost two years now.

Why subsidize the 95% of TV I don't watch with a cable subscription? I'd much rather directly fund the shows I'm truly interested in via Amazon's subscription (or Hulu's ads).

The article notes that expected subscription-droppers are to double over the next year. If that stays steady at doubling, in eight years cable and broadcast will be dead. In all likelihood, however, that rate is only going to perform as an S-curve (there will always be holdouts to new technology - <USER2> look at the transition from analog to digital airwaves).

<comment><USER3> I want to update my last sentence.

The rate of adoption (not the adoption percentage) is not going to perform as an S-curve. Once the adoption rate peaks, it will quickly drop to zero.

In other words:

Adoption rate is likely going to increase, either linearly or exponentially (we humans are terrible at seeing exponential rate change at the beginning) until the actual adoption percentage approaches its asymptote.

This asymptote represents the technologically and financially marginalized portion of society. Adoption rate will likely be extremely slow on that end.

Adoption rate increase will likely look like an S-curve with a very sharp drop-off at the point where the actual percentage of persons adopting TVoIP technology approaches 85-90% of the population - unless an extremely inexpensive TVoIP solution (Google-funded?) is adopted.

</comment></comment><comment><USER4> I desperately want to drop cable, but I'm a huge sports fan which means no viable alternative to ESPN really hurts. Anyone have any suggestions?

<comment><USER5> If you love sports in general you might be out of luck. I love baseball in particular hand have no problem paying the 100 bucks for MLB.tv to watch any (and every) game that I choose, often in high-def, on whatever device I want.

I'm not certain about the other sports, but for baseball there is no real reason to be tied to cable.

<comment><USER6> Unless your favorite team is local and you are subject to blackout.

<comment><USER7> True, but you could probably pick them up OTA in that case.

</comment></comment></comment></comment><comment><USER8> My wife and I dropped a $75/month DirecTV bill over a year ago and haven't looked back. Now, all the DirectTV box does is serve as a stand for our projector to sit on.

Hulu has most of the new television shows and if they don't have one of your shows, it's probably on iTunes. I'm not a big sports fan, but I was concerned about the Olympics. Fortunately, NBC had them online.

Netflix is great if you watch several movies a month, but if you are like me and one is enough then iTunes or Redbox work great.

<comment><USER9> Same here. Though I get all the networks plus two PBS via over the air. I'm continually amazed that via analog I couldn't get a single channel that was watchable, but with the switch to digital I can get 6 stations (plus sub channel) perfectly clear.

</comment></comment><comment><USER10> I already have, and I suspect that a lot of people my age are going to follow suit. I realized during a recent move that my TV was still at the old house, and that it wasn't really bothering me not having it. I haven't even plugged it in since I finally got it to the new place.

I'm either going to trade my television for a road bicycle or a keg- refrigerator.

If you're a cable company trying to mount a closed "you will watch what we want you to watch _when_ we want you to watch it!" platform against a "Here are a bunch of things you can watch...whenever you want. Like them? Share the link with your friends!", you're in trouble.

The model of "sit down at 7:00pm CST on Thursday evening to watch The Office" is dead and the writing has been on the wall since the 1990s.

</comment><comment><USER11> So did I. But this seems appropriate:

[http://www.theonion.com/articles/area-man-constantly- mention...](http://www.theonion.com/articles/area-man-constantly-mentioning- he-doesnt-own-a-tel,429/)

</comment><comment><USER12> That's weird. Are you really paying more than $100 per month for cable in the US? I was confused there because I really couldn't imagine that of all things the cable bill would be a reason to ditch the TV. You get your standard maybe thirty useful and seventy crappy TV stations in Germany for 15€. Probably because pay TV never really caught on in Germany. Except if you are really into soccer. I don't even know what I could get by paying beyond soccer. No HBO in Germany.

Having public broadcasting doesn't seem to be too bad, after all :)

<comment><USER13> $50 for basic cable here, another $50 for extras (discovery channel and comedy network) HD and movies get a lot more expensive. Then sport - ouch.

There is only one cable provider and it has a monopoly. I just watched TV on the net after the companies intro $10/month offer ran out.

<comment><USER14> That's all in the standard package here. €16,45/month for 60 channels, including discovery channel, comedy central and sport. The most popular channels come in HD for free, but to get Discovery, National Geographic and History in HD you need to pay extra (€4/month). Maybe we pay the difference with taxes?

</comment></comment></comment><comment><USER15> My wife and I are in that 800,000. When we bought our new house a few years ago, it came with an antenna on the roof, so we decided to fore-go cable and try OTA for a while.

A few years later, we watch almost nothing on the TV anymore (including OTA), and get a lot of our video entertainment from Netflix, Hulu, the occasional torrent for "niche" material, and local movie theaters if we're feeling particularly rich (or want a night out), or manage to catch a matinée showing.

But, in general, we consume considerably less non-interactive media these days. It's done wonders for my honey-do list. ;-)

</comment><comment><USER16> I dropped my cable, but I have a nettop pc hooked up to my TV so that my Hulu/Netflix/Torrent experience maps pretty well.

In practice it is like having TV/Movie on demand for a much lower monthly cost with gaming and web browsing built in. If you do your shopping right LCD TVs make great monitors at couch sitting distance.

</comment><comment><USER17> As people in the TC article pointed out the only issue I have with cord cutting is live sports. MLB has a 20$/month subscription service but I'd like to only pay for my team say 3-4$/month. Once the other leagues follow, and I can pay a few $ a month/team. I'm ready to cut.

<comment><USER18> And MLB.tv doesn't let you watch local market games which are just about the only ones I'm interested in. You can get around it with a proxy server and alternate billing address, but that's a nasty hack.

<comment><USER19> Similarly with NBA.com's League Pass. Whenever my favorite team plays the nearest team (almost 200 miles away) the game is blacked out for me.

Why make it hard for customers to pay you for the product they want? Why make it easier for the non-payers using atdhe.net or justin.tv than it is for subscribers like me to find the games we want? Why make customers pretend they're from Brazil so they don't randomly miss games?

Still, these services are a big step forward from what was available 5 years ago.

<comment><USER18> > Why make it hard for customers to pay you for the product they want?

So they don't lose their lucrative licensing deals on TV. It's a bum out, but that's how it will be for a while.

</comment></comment></comment></comment><comment><USER20> Netflix and Hulu fill any TV needs we have - except for the NFL. If Hulu was able to offer all of ABC, CBS, NBC and Fox with no commercials for $30/mo I'd snatch it up in a heartbeat, especially if they also sold some hardware to go from the network straight to the TV.

</comment><comment><USER21> There are over 100 million televisions in the U.S. - so while this is a great indicator (and I'm a huge fan of abandoning TV and am one of the 800K) there's still a while to go before TV becomes a truly irrelevant screen.</comment>


Ask HN: The best way to find remote job - <AUTHOR> What is the best way to find remote job? Actually i'm tryin' to find 20hours\week job to upgrade my Node.js(for now i'm .NET developer) skill and learn something new with real life project..
But I want to get some small salary, 5-15\hour will be okey.
So where I can find such jobs? <comment><USER2> 5-15/hour? You're doing yourself and the industry a huge disservice, regardless what currency this is in. If you're a .NET developer, I take it you know what you're doing and even if you want to learn Node.js along the way, that's not a way to go. Once you're set on a small amount (and charge by the hour, another big sin we're all guilty of) it's really hard to get more, and you'll end up doing crappy work for crappy clients. Don't do that.

<comment><AUTHOR> Currency - dollar. hm... what is the right pricing?

<comment><USER3> I'd multiply that by at least 5 if you're in the US and you're any good.

<comment><AUTHOR> Nope, i'm from Eastern Europe.

<comment><USER4> Multiply it by 3 then.

Edit: Let me clarify - not saying that Eastern European programmers are better or worse but the living costs are obviously lower in Eastern Europe than say Western Europe.

<comment><USER5> Not necessary. I'm from Georgia, eastern Europe. I was astonished during my recent visit in Berlin of how cheap it is, especially groceries/food, clothes, toys, etc...

I was also comparing prices in San Diego, California, and it was quite on par with Georgia.

The main reason eastern Europe appears cheap is the human labour - people are just used to low income...

<comment><USER6> Can't agree more.

US west coast prices are terrifyingly similar to prices in the Baltic States(unless you're living in a metropolis such as NYC).

Something to remember: It doesn't matter that you're from Ukraine. It matters where the company you work remotely for is stationed. If you find a company in the US or western EU willing to hire you, you can probably ask for their domestic market rates :)

Good luck.

<comment><USER5> Yes. Actually, some companies have policies that they research local salaries and offer accordingly. Needless to say, I don't work for such companies.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER7> weworkremotely.com (run by the 37signals/Basecamp folks) and jobs.joelonsoftware.com (shortcut to Stackoverflow jobs) are two sources of remote job listings. I am sure there are more -- these are just two with which I happen to be familiar. I have also found that both of these sites have a fairly high quality of job listings.

Another approach to consider is seeking freelance work. You may be able to find work porting .NET applications to node.js which would allow you to leverage you current skill set to learn a new one. The challenge with this approach is that freelance rates can be pretty cut throat. Therefore, it would likely best to view these types of jobs as an opportunity to build experience/portfolio more than money making.

<comment><USER2> We hired two developers through WeWorkRemotely (gotten about 100 applicants), and couldn't be happier. Highly recommended.

<comment><USER8> I got hired through WeWorkRemotely fairly recently, I didn't know the competition could be that fierce! :)

<comment><USER9> Competition for remote work is fierce, and is only going to get more fierce for as long as it remains rare. For most people that are applying for remote work, they are applying not because of the work itself or a strong belief in the company. Their #1 search criterion is for remote work and all other details are probably a somewhat distant second, and until remote jobs are more available you will find it a competitive market.

<comment><USER10> But on the flip side, companies can get quality talent for cheap salaries, no?

<comment><USER11> They would get a whole lot more productivity out of me. Not being asked to fix users excel errors and being bugged every 5 minutes. (I know this is true, as the organization was a lot smaller 3 years ago when I started, and for the first year I was incredibly productive).

</comment></comment></comment></comment></comment></comment><comment><USER12> For remote jobs, clarity of communication is essential.

I hope this doesn't read as mean, since I suspect English is not your first language, but if you are trying to get hired by an English speaking company, you need to use proper grammar and spelling.

If you are looking for job in your native language, and just raising the topic here on HN as the best place to discuss it, then please only read the first paragraph of this comment. I don't mean to exclude you from discussing things here.

<comment><USER13> Hi, I'm just here to confirm Muphry's law[1].

You missed an indefinite article here: _If you are looking for job in your native language, ..._

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

<comment><USER14> Muphry's [sic] law, indeed.

<comment><USER15> click the link, it's not [sic] so much as Muphry's law is not to be confused with Murphy's.

"Muphry's law is an adage that states that when a person criticises another's editing or proofreading, there will be a mistake of a similar kind in that criticism. The name is a deliberate misspelling of Murphy's law."

</comment></comment></comment></comment><comment><USER16> This is a very hard to question to answer you and there is no actual solution to give you.

It all comes down to how good you really are. I have been looking for the past 3 - 4 months for a remote job, but since the competition out there is huge and there are definitely better programmers than me I haven't manage to land anything yet.

Make a great CV, a personal page, work on github to show your work. This will help you dramatically since you will be displaying your work and who you are. ( I have all except github as all I do is actually on my own repos )

As for the hours you are willing to put in, then that is more like freelancing than a full time job. Perhaps try Elance for some freelancing and work on your own to learn node.

<comment><USER17> > It all comes down to how good you really are. I have been looking for the > past 3 - 4 months for a remote job, but since the competition out there is > huge and there are definitely better programmers than me I haven't manage to > land anything yet.

Not trying to be harsh, but if you honestly believe this, you should give up right now. There will always be people smarter than you, this is a given. But you will never land a job with the attitude of "I'm not good enough to work here".

<comment><USER18> > but if you honestly believe this, you should give up right now

That sounds a bit dramatic, I'd advise changing what you believe.

There will always be things you believe that hold you back, but you will never overcome them with an attitude of "I should just give up now"...

</comment></comment></comment><comment><USER19> Can people who are working remotely share their experience? What works, what doesn't?

Some things I've heard about that I wouldn't mind reading about again:

\- Making an office space in the home (I've seen workspaces designed [I think] for remote workers - do people use these and find they offer value?)

\- Setting up boundaries with family members

\- Communication habits - do you scrum over text chat, or daily video conferencing? What about large team meetings? Do you share daily status over email, or is that too much overhead?

\- Working hours - do all-remote teams encourage syncing up time that the team is online? If you're remote and most of the team is together, do you work hours that are local to the rest of the team? I've heard it can be hard in this situation making sure that the rest of the team remembers you in hallway conversations, since it's easy to forget the one guy who is remote.

Some stuff I haven't seen written about:

\- Logistics - do you need to be the admin for your PC? Do you get a hardware budget, or is it entirely BYOB?

I'm also interested in how the remote dynamic changes going from small teams to companies with thousands of employees.

<comment><USER20> Also I'm curious if people from "3rd world countries" are also able to find remote work and where (I'm from Brazil).

<comment><USER21> My contact info is in my profile and I'm hiring. Have hired several contractors in Brazil in the past.

<comment><USER22> Any chance of hiring from India? :)

</comment></comment></comment></comment><comment><USER23> We wrote an article with some ideas here: [http://blog.sqwiggle.com/best- places-find-telecommuting-job-...](http://blog.sqwiggle.com/best-places-find- telecommuting-job-craigslist/)

EG: The AngelList search is very good and you can filter by allows remote :-)

</comment><comment><USER24> I'm really surprised oDesk has not been mentioned. They have merged with elance, and the type of work you are looking for at the rates you are seeking (and higher) are routinely listed there.

I would create a profile on that site, most new freelancers there start with a lower rate to build experience and feedback and in a few months look to raise the rate.

Feel free to contact me by email and I can tell you what my experience has been from the hiring side.

<comment><USER5> Not sure about hiring side (about quality...), but from the contractor side - stay away from these sites. It is the race to the bottom...

<comment><USER25> While I've heard good things about oDesk(I think there was another one, eLance?), I have to agree with the sentiment of this. I spent several weeks trying to get some simple work on freelancer.com so I could build up some credibility, and every project was either not worth your time("please create a site just like Facebook, I will pay $100"), or someone who had more projects completed will come in with a modest offering and be the one who gets approval for the work. It was pretty irritating. I tried to take an exam for C# that was offered by the site, but the payment system kept crapping out on me, and I'm pretty sure I got charged for it without being allowed to take the test.

I want to do remote work, but going through these sites makes me grateful that I'm actually part of a company that pays me a salary.

<comment><USER24> Rentacoder, freelancer, etc are definitely bottom of the barrel in terms of income and quality of projects.

I've always found the quality and cost of eLance and oDesk to be higher. Now that they've merged, I think there is something there, the development talent in Eastern Europe is excellent.

</comment></comment></comment></comment><comment><USER26> It might be tough to get hired in that scenario. You might want to bootstrap this idea by first doing some of your own Node projects.

<comment><USER27> Quite; "pay me to learn technology X" is always going to be a tough sell unless you're bringing another skillset to a problem.

<comment><AUTHOR> I think you don't understand me right... Simply: i want to find trainee aor junior remote job.

</comment></comment></comment><comment><USER17> Specifically for Node it's nice to have some notoriety, no matter how small. So create a cool Node module that does something original and email the guys at dailyjs.com about it. If it gets posted there put that in your resume and you'll land a job.

But not a lot of companies are looking for part-time programmers, why do you not want a full-time job?

<comment><AUTHOR> Full time job is OK, but if it'll suit my salary requirements. For now i'm, ok with my current job. But want to move forward. I mean, I want to learn new techs by part-time job, and then move to full-time.

</comment></comment><comment><USER28> I would set some alerts for craigslist job listings in the larger craigslist markets.

[http://sfbay.craigslist.org/search/sof?query=node.js&is_tele...](http://sfbay.craigslist.org/search/sof?query=node.js&is_telecommuting=1&is_parttime=1)

Replace 'sfbay' with various cities and see what you get.

<comment><USER29> Indeed [http://vancouver.en.craigslist.ca/van/sof/4451591937.html](http://vancouver.en.craigslist.ca/van/sof/4451591937.html)

</comment></comment><comment><USER30> What I do is "plant small seeds" on the web (like: articles, video talks), which acts as "ads" for my skills. Then I make sure I can be found online (twitter, site, forums). It's a midterm strategy but works very well (I've worked 100% remotely during the last 3 years).

<comment><USER31> I don't get it- can you give an example of a 'seed'?

Sounds interesting.

<comment><USER30> Sure - here are concrete example of seeds.

I call them seeds because you have to realize that they will take time to give fruits. This is not an emergency technique.

Blog posts: from time to time, I was writing an article on my (now defunct but soon restarted) technical blog. It is currently offline but you can have a look here [1]. I created linkable content that got some coverage, and some of my former customers saw the blog and it created credibility to them.

Videos: similarly, I've tried since I think 2009 to give at least one talk per year. It has to be recorded and available on the web afterwards. Even on small topics, in small events to get started.

Some video examples:

\- [https://speakerdeck.com/thbar/transforming-data-with-ruby- an...](https://speakerdeck.com/thbar/transforming-data-with-ruby-and- activewarehouse-etl) (video at [https://www.youtube.com/watch?v=LW863DOXqZQ](https://www.youtube.com/watch?v=LW863DOXqZQ)) => people contacted me afterwards to do ETL work

\- on bootstrapping [https://speakerdeck.com/thbar/retour-dexperience-sur-le- boot...](https://speakerdeck.com/thbar/retour-dexperience-sur-le- bootstrapping-de-wisecash-produit-saas) (video at vimeo.com/85490636) => people asked me to help them build SaaS afterwards

You can also just tweet useful, non opinion-oriented tweets and links, and grow an audience this way (I have around 1460 followers [http://twitter.com/thibaut_barrere](http://twitter.com/thibaut_barrere) but started much lower). People looking for skills will find you this way etc.

Hope this helps!

[1] [http://web.archive.org/web/20121031083446/http://blog.logeek...](http://web.archive.org/web/20121031083446/http://blog.logeek.fr/)

<comment><USER11> Does anyone know a good blogging platform to include code examples (without messing around with Javascript)? I tried google blogger, but code did not come out nicely, and it tries to do its own formatting when you save.

<comment><USER30> I've settled with Jekyll (static), hosted on S3. I'm using prism.js at the moment but will probably move the code examples to embedded github gists.

</comment></comment></comment></comment></comment><comment><USER32> Have you considered picking up freelance node.js work? I run a website called FreelanceInbox.com that is designed to help freelancers find quality leads without having to spend time a lot of time searching. You could probably handle small projects and develop your skills that way.

<comment><USER10> Cool site, neat idea. Any chance I could get a week's trial before I sign up? I'd be more interested in data science, and/or Python/Django work. I can't tell if you have that.

<comment><USER32> There is currently not a trial option, but it is a 30-day money back guarantee, so if the service doesn't work, you can just let us know and you'll get a full refund. Python/Django work yes, but currently no on the data science.

<comment><USER10> I don't see Python/Django on the set of checkboxes, any advice?

<comment><USER32> sent you an email

</comment></comment></comment></comment></comment><comment><USER33> I would suggest you make yourself easily contactable. Posting this question on HN might interest a possible employer who would offer you some work. However they will have a hard time doing so, if your contact details are not mentioned in your profile.

Update: You have added contact details. :)

<comment><AUTHOR> You are right :)

</comment></comment><comment><USER34> I'm thinking of finding a remote job too. I am an experienced Nodejs developer/architect. My current gig, I am nodejs lead & initial team member, in a very popular app. So I have scaled the app to millions.

</comment><comment><USER35> I'm thinking of finding a remote job too. However, I'm inexperienced and a friend of mine said that people don't tend to hire remotely for junior level positions. Is this true?

<comment><USER32> Same thing as I mentioned in my other comment. Freelancing is sometimes a good fit for people in your position. To help you get on your feet, I created a website called FreelanceInbox.com that is designed to help freelancers find quality leads without having to spend time a lot of time searching.

</comment></comment><comment><USER36> Meet other developers (at meetups or coworking spaces) and ask them if they know someone who's hiring.</comment>


The incredible persistence of email - <AUTHOR> http://www.citeworld.com/business/21082/email-persists-social-collaboration <comment><USER2> tl;dr Corporations are used to email and see no reason to change it, email (Outlook) just gets more plugins as new things emerge.

Maybe I'm old fashioned but I see no point in trying to replace email. It is an app just like everything else and any serious application should have some form of email integration.</comment>


Where Have all the Gophers Gone? Why the Web beat Gopher (1999) - <AUTHOR> https://ils.unc.edu/callee/gopherpaper.htm <comment><USER2> The NCSA and Cern web servers had the ability to let users on a system publish content from a specially named "~/public_html" directory. At UIUC, the engineering labs quietly enabled this functionality for all engineering students.

Within a week, dozens of students had their own web pages up, and by the end of the year, hundreds did. Encouraged by their initial success, this encouraged students to stand up their own web servers so they could run cgi scripts, etc.

As far as I knew, there was no equivalent taste-test for providers of Gopher content. You either stood up your own server or got special access to someone else's server, both of which were hard to do at the time.

<comment><USER3> RPI had this, too, and I remember taking full advantage of it oh so long ago.

<comment><USER4> In the late 90s Oz universities generally gave their students email via Pine plus a 10mb web folder as standard. Many STEM students made random websites about their hobbies or poetry or whatever. It was like a proto Geocities.

<comment><USER5> And once you did that, your content was on the "World Wide Web", not just some "Gopher server". The WWW name made the venue sound more intriguing.

</comment></comment></comment></comment><comment><USER6> The primary gopher killer was around February 1993 the University of Minnesota announced that it would charge licensing fees for the use of its implementation of the Gopher server. In contrast, CERN said anyone could implement the WWW. Practically all implementation work from then on used the WWW. In addition, the gopher developers wouldn't work (basically) with open standards groups like the IETF.

By trying to control & license everything, they lost everything.

<comment><USER7> I wonder what will happen to the next gen of video codecs. The proprietary video codec is on the verge of collapse with most new devices now shipping AV1 decoders and streaming services looking at switching to AV1 when available.

<comment><USER8> Has apple accounted AV1 support in MacOS and iOS? (sorry if I missed it. That would be great news)

<comment><USER7> They are in the group behind AV1 but they have yet to support it. VLC on iOS can play it however so maybe streaming apps could include their own decoders while waiting for apple. It looks like netflix is using AV1 for android users right now and TVs are coming with AV1 support now.

</comment></comment></comment></comment><comment><USER9> There is a sort of Gopher "successor" in the works called Gemini that was featured recently:

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

It aims to fix flaws in the Gopher protocol while still making it easy to implement clients.

If you haven't dug into Gopher, there's lots of cool stuff in it from ASCII art and old computer manuals to games and lots of blogs (called "phlogs"). I suggest grabbing a client and heading to the Gopher Lawn to get a taste:

gopher://bitreich.org/1/lawn

(Lynx works as a client, but there are a ton more out there with fun UIs.)

<comment><USER10> I wrote a 15 line Python server behind STunnel and xinetd for Gemini; I love the protocol, and where I felt a lot of the Gopher world seemed to venerate the old, I think Gemini really is a great, low-fat, content oriented protocol and community. Come join the fun!

If you want to connect now: Web Portal: [https://portal.mozz.us/gemini/gemini.circumlunar.space/](https://portal.mozz.us/gemini/gemini.circumlunar.space/) Clients: [https://portal.mozz.us/gemini/gemini.circumlunar.space/softw...](https://portal.mozz.us/gemini/gemini.circumlunar.space/software/)

I'm in the process of writing a Tcl graphical client, to let folks hack their browser as if it were a running lisp process. For day-to-day browsing, I'm mostly using Elpher right now, which is an emacs Gemini and Gopher client written in Elisp, and is fantastic.

I'm at gemini://acidic.website/

<comment><USER11> I understand why acidic, thanks to your explanation, but why website, when you don't have a website?

(I also like acidic food sometimes. I'm not sure if I like acidic coffee; so far, the only coffee I have successfully consumed is espresso without milk, water or sugar and some is surely better than others. I was certainly surprised to discover that plain espresso is actually better than adding milk, water or sugar.)

Is there a way to actually reply within Gemini? I could set up my own server, I guess, but you would never know I had.

<comment><USER10> > I understand why acidic, thanks to your explanation, but why website, when > you don't have a website?

Because the domain was incredibly cheap, and I may eventually host some HTTP content there as well, but I'm not sure. The main reason was just the price heh.

> Is there a way to actually reply within Gemini? I could set up my own > server, I guess, but you would never know I had.

Nope, no comments. You could email me, of course, but I'm thinking of setting up an ActivityPub server on the box so folks can message me if they're interested.

</comment></comment></comment></comment><comment><USER12> One thing I never see in these analyses is ease of setting up a server. Back when I was in college and got my first computer, I could install a simple web server, drop any file in its folder, and view that file in my web browser. If it was HTML, and I got the HTML wrong, it would still display most of the page.

Gopher wasn't like that at all. I downloaded the Gopher server and ran it. Then I put a file in its folder, and it didn't show up. You had to (IIRC) write a special index file to tell it how to serve each file. If you didn't get it perfectly right, it wouldn't show up at all. And of course the error messages and documentation were somewhere between "terrible" and "missing".

I wanted Gopher to succeed, because I liked the simple, regular organization of information, rather than the crazy anything-goes world of the World Wide Web. I just couldn't figure out how to get it to work.

</comment><comment><USER13> I still maintain a gopher presence[1] as a mirror. Once it was determined that gopher could neither be monetized nor weaponized, it was doomed to obscurity. It is an open academic tool for open academic purposes. As an aside, I actually saw the initial announcement on USENET about CERN releasing something called a browser for something else they called the World Wide Web. I couldn't see the point since we already had gopher, veronica, jughead, et al. Absolutely prescient on my part...

[1][https://gopher.commons.host/gopher://gopher.club/1/users/eve...](https://gopher.commons.host/gopher://gopher.club/1/users/every/)

<comment><USER14> > Once it was determined that gopher could neither be monetized nor > weaponized, it was doomed to obscurity.

This is a cynical rewriting of history. More likely, Gopher lost to HTTP due to a combination of random chance, network effects, and simply not being as user friendly to e.g. set up a server. HTTP was also an "open academic tool" for "open academic purposes". Only later, due to HTTP's success, was it monetized and "weaponized".

<comment><USER15> > This is a cynical rewriting of history.

Seconded. I was on the Internet before gopher, and I never really saw the point over regular ftp (and, a quick glance at the wikipedia page right now doesn't really tell me what the real extra value over ftp is).

Conversely, the web's value was immediately obvious.

<comment><USER13> Gopher was a menu-driven interface via ftp to search, find and download files for academics who weren't particularly computer savey. It also gave them a platform to publish their own research for others and have it indexed and searchable. It was never meant to be a popular format...

<comment><USER16> Well, I think popular in the context of Internet meant something different then as it does now. But yes, gopher seemed then just like 'nother service, while WWW was a revolution in the mid-nineties.

</comment></comment></comment></comment></comment><comment><USER17> There _are_ still some gopher holes. For instance, the bitreich is quite active:

         gopher://bitreich.org

Some of the content is rather funny, other is a bit too much for insiders to be comprehensible. It seems to be a "pure" fork of the suckless.org community.

<comment><USER18> When I mapped Gopherspace back in 2018, there were over 300 active gopher holes:

[http://www.jaruzel.com/gopher/mapping- gopherspace](http://www.jaruzel.com/gopher/mapping-gopherspace)

<comment><USER19> I have a list of 634 gopher servers, which I check daily for their "aliveness":

gopher://kamalatta.ddnss.de/1/links

There are some duplicates (different domains for the same content, IP addresses) but roughly 364 domains are constantly online.

</comment></comment></comment><comment><USER20> I used Gopher to download MPEG-1 videos back in 1993. Whole two of them. One was egg shot by a bullet and second one was Michael Jackson's Smooth criminal anti-gravity lean clip. Exciting times.

</comment><comment><USER21> I was in college getting my MIS degree a little before this article was written, and gopher was already being described is antiquated and vintage technology.

The web had a much broader appeal to me and as soon as I could I set up a page on our schools web server. I then took a deep dive into CGI scripting and that got me to start coding.

</comment><comment><USER22> I remember the first time I read about the web was on gopher.

A few years later (1997), part of my job was to migrate a bunch of university gopher holes to the web.

</comment><comment><USER23> See also:

2016 [https://news.ycombinator.com/item?id=10964366](https://news.ycombinator.com/item?id=10964366)

2009 [https://news.ycombinator.com/item?id=828995](https://news.ycombinator.com/item?id=828995)

</comment><comment><USER24> I just built a rough gopher server for createaforum.com just for fun [https://www.youtube.com/watch?v=Nws5oVpPY_g](https://www.youtube.com/watch?v=Nws5oVpPY_g)

</comment><comment><USER25> TL;DR Hypertext links and graphics.

<comment><USER26> you say graphics, I read 'porn' ... never used gopher, did get an application/icon when installing internet software for one of the first ISPs I used, but I guess little adult content to be found on gopher?

<comment><USER11> Cynical. Generally speaking, articles with images and color are more interesting to random browsers. Even variable width fonts are more interesting than fixed width fonts.

Given a HTML page using the default serif font that shows a picture of you and a cat and talks a little about your research, or a plain text file using the default fixed width font that talks a little about your research and says "in the menu below, clyde.jpg is a photo of my cat", then most people are going to prefer the first option.</comment></comment></comment>