Top U.S. cities have seen internet speeds decline this past week - <AUTHOR> https://techcrunch.com/2020/03/25/88-out-of-top-200-u-s-cities-have-seen-internet-speeds-decline-this-past-week-3-cities-by-more-than-40/ <comment><USER2> The actual report: [https://broadbandnow.com/report/internet-speed-analysis- marc...](https://broadbandnow.com/report/internet-speed-analysis- march-15th-21st/)

"But New York City, now considered the epicenter of the virus in the U.S., saw download speeds drop by 24% last week, compared to the previous 10-week range. That said, NYC home network connections, which have a median speed of nearly 52 Mbps, are managing."

It took me a few times reading it to understand what this is trying to say. What they mean is that many of these cities that are showing slowdowns already had higher-than-average median speeds. Many of the cities that aren't seeing slowdowns were already pretty slow to begin with. E.g. Chicago has only slowed down 10% but its median speed is only 26.79 mbps.

<comment><USER3> It seems more like a mix shift issue, than a real issue.

If most of the fastest internet speeds are in offices, and people start working from home where slower speeds are located than average speed will decline.

<comment><USER4> Is that true? My home connection has always been far faster than my office connection. Sometimes I go home just to download a particularly large file.

<comment><USER5> Ha!

If I want to download a particularly big file, I use tethering via my phone. Seriously, about 90Mbit/s download on the phone, that's faster than most places I've worked and also faster than my home connection.

It was so obviously better, that I switched home to be on 4G instead of ADSL, because the 4G was both cheaper and faster. It's working out well, but the phone still manages to be faster than the router.

<comment><USER6> Yes. Most people don't realize this. (4G phone >> home internet)

I tether my iPad to my 4G phone because the latency/bandwidth is much higher than my home internet (40mbps).

I ran Speedtest on my phone vs my desktop with a wired connection to the router and learned that my 4G wireless connection was faster.

<comment><USER7> I think most of my town must use 4G at home because between 4pm and midnight my ping is too annoyingly high to play counterstrike

</comment></comment></comment></comment></comment></comment><comment><USER8> > 112/200 top U.S. cities have seen internet speeds increase this past week

And no matter how hard we try, half are below the median!

<comment><USER9> Statistics are unforgiving!

</comment></comment><comment><USER10> So am I the only one that's happy and amazed it's working at all? Unprecedented demand and it's still running, just a bit slower than normal. Imagine if it all fell apart.

<comment><USER11> I'm having trouble imagining a failure mode that would cause total collapse under load rather than just reduced per-user speeds. Networks have to deal with spikes in demand pretty frequently anyway, usually during the evenings when lots of people are streaming video. A sudden increase in overall demand throughout the day doesn't seem like it should be that big of a deal; and so far it seems like it isn't.

<comment><USER12> How about the mode where, video streaming makes normal browsing impossible for some users? Their packets just don't survive the public net in the blizzard of video packets? That would cause apparent collapse for some at least.

Not sure how 'net neutrality' would factor into that - a free-for-all would mean it might happen more, but a pay-as-you-go would eliminate a whole class of users. A hard problem.

<comment><USER13> Networking isn't magic, it's pretty well understood. And ISPs are pretty good at QoS to make sure that doesn't happen.

<comment><USER12> When it gets full (like it is some places), then the only strategy is to drop packets. If they are dropped systematically (by some rule) then some demographic loses some part of their internet entirely. That's also well understood.

Its a product of non-neutral nets, where by definition they do something by a rule (instead of randomly for instance).

And even randomly dropping (neutrality?) stresses certain subsets of network traffic more than other e.g. video can recover from dropped packets; TCP traffic not so much. Again stymying certain classes of activity more than others.

</comment></comment></comment></comment></comment><comment> rooam-dev It's just a reality check on how much your current ISP has oversold their capacity (similar to overbooking of airplane tickets).

</comment><comment><USER14> If anything it shows how over subscribed the lines are by the providers. I'm sure they'll use it as an argument for gov. investment. :/

<comment><USER15> They already burned money given for them to do that. The next logical step is to simply take the infrastructure for the public.

</comment></comment><comment><USER16> So thoughts on rural areas- my experience is that they generally have more workers that will be considered essential than in urbanized areas- agricultural workers, truck drivers, people in the supply chain, etc. That might provide some moderating forces on the lower bandwidth options they are often stuck with.

That being said, schools doing distance learning over low bandwidth dsl or fixed wireless is going to be interesting...

<comment><USER17> Time for the rural broadband administration to shine:

[https://www.ntca.org/ruraliscool/who-we- are](https://www.ntca.org/ruraliscool/who-we-are)

See also: [https://en.wikipedia.org/wiki/Rural_Utilities_Service](https://en.wikipedia.org/wiki/Rural_Utilities_Service)

<comment><USER18> If by "shine" you mean "be as ineffective and underfunded as they have been for decades", then yes.

<comment><USER17> Rural phone and electric service exist largely by government based efforts.

Market solutions don't work for disadvantaged communities, we've learnt that lesson repeatedly.

Answering your presumption: no, that's not what I mean at all.

</comment></comment></comment></comment><comment><USER19> It's peculiar how everything that has happened in Italy is slowly also happening over there.

And weird in a sense that the US actually has/had a chance to use other country's hindsight and is not doing it.

<comment><USER12> Italy is 60 millions of people in a country 116,000sq miles.

The US is 328 millions of people in a country 3.8 million square miles.

For different reasons, its playing out similarly?

</comment></comment><comment><USER20> If it was overloaded handoffs or connections, the problem would be cheap and easy to fix. Unfortunately the problem is overloaded last-mile. Way more expensive to fix, because it costs money and cuts into profit margins.

</comment><comment><USER21> Everyone is trapped inside trying to stream HD video and all physical medium has limits. Especially coax. Why does supply and demand surprise anyone? This isn't a conspiracy.

<comment><USER22> I used to read about how ISPs were overselling and would be in trouble if everyone was using their connection to the fullest. It was always talked of as a hypothetical because it used to be pretty unlikely that every person would be home and needing to use the internet so much at the same time. Now that so many people are home and needing to use the internet, it's not hypothetical and we get to see how ISPs are actually able to handle the load: and as many predicted it would not be able to keep up. I think this isn't news in the sense that everyone thought it would be fine; I think this is news because this was a known but not addressed situation. It will be interesting if this leads to capacity upgrades or if we'll see more pleas for major content producers and consumers to constrain their resources to keep the infrastructure running. I think people would like to see upgrades so that we can get the previous speeds and quality but we'll see.

<comment><USER23> The hypothetical already exists, it's called the evening peak hours. I'm not familiar with every part of the US however in Europe most ISPs saw no need to throttle video as the current situation merely makes the usual peak last longer.

<comment><USER24> I could see this being up to 2x of the normal peak because everyone's at home.

<comment><USER25> Why would it be 2x the normal evening peak hours? Yes, normally maybe second shift workers and the rolling shifts of people going out to eat would reduce normal peak usage slightly, but I can't imagine it being 2x.

<comment><USER26> Because ordinarily, not everyone watches videos in the evening; people go visit each other, go out to bars, go on dates, etc. Now however, meeting and outside activities are unavailable.

</comment></comment></comment></comment></comment></comment><comment><USER27> Anecdata. Chicago suburb on WOW.D 78 mbps U 10 ( I pay for much lower speeds ). I was able to get Doom Eternal in 30 mins or something. Decent stress relief.

I am not sure what is happening. It is obvious WOW lifted caps on me and I am actually benefiting, but I am not sure how that is possible since everyone near me ia streaming something.

</comment><comment><USER28> Seems to be a worldwide thing. I have a 50Mbps symmetric optical fiber line in Bengaluru, and servers hosted outside India have come to crawl these days, even while latency/bandwidth within the city are as high as before.

I wonder if the undersea cables have become overwhelmed in the past few days.

</comment><comment><USER29> Yeah, I wouldn't be pissed if 4k doesn't work. If the content is good even less than HD works for me. Everybody's on, the network is congested, lets not be too picky for now. Stay safe everyone

</comment><comment><USER30> Anecdotally, here in Nebraska my residential fiber connection remains 1gbps symmetric. Haven't seen any fluctuations at all over the last few weeks.

Living in less densely populated areas does have its advantages at times.

<comment><USER31> Likewise, in St Louis on AT&T Gigabit fiber. There have been many outages with Spectrum cable though.

</comment></comment><comment><USER32> Anyone use bevcomm? I have fiber to the house at 300Mbps but rarely get it. I wanted 1Gps but apparently my ONT can't handle it. I'd get it replaced but trying to avoid covid_19 at this time.

</comment><comment><USER33> I'd guess this is less of a concern than the services people are accessing being slow. E.g. even though I've got FTTH, youtube is still sometimes slow to load the front page.

<comment><USER34> Fortunately youtube and netflix has a good CDN at our major ISP interchange node as we are about 12,000 km from New York so all our traffic goes via undersea cables.

</comment></comment><comment><USER34> My fiber ISP is doubling my speed for free during the 21 day nationwide lockdown ... currently on 50/50 Mbps.

<comment><USER35> 25/25 fibre? That's... Cheap

<comment><USER34> It will be upgraded to 100/100 in the next few days ... pay about 75 USD but it is really a luxury for most where I live.

</comment></comment></comment><comment><USER36> i understand wireless is tied to the internet backbone, but i'd imagine with so many people at home, wireless data congestion must be at an all time low, with everyone (probably) on their home wireless networks rather than using cellular data.

<comment><USER37> I think by default some Android-based devices and iPhone in recent years (since about 2014 I believe but don't quite me on that) can use cellular data even when we are on WiFi if the WiFi signal is weak like when you've wandered too far from the access point.</comment></comment>


Ask HN: Want to build an app with me via chat?  - <AUTHOR>

Are there any hackers that want to work on a few ideas for a web app from scratch? We could build something that we ourselves come up with together and hack it together in a few hours until it's up and running.
I am a front-end designer. I was hoping we could make a resource to benefit the start up community on hacker news.
I would like to use PHP/MySQL, but I'm open to learning Ruby on Rails for this project.
Contact information and design examples are in my HN profile section. Feel free to just message me on AIM. <comment><AUTHOR> Also, if anyone has ideas of something quick and easy they wanted to have built, feel free to share here.

</comment><comment><USER2> This leads me to a question, does HN have an IRC channel?

</comment><comment><USER3> Definitely interested, anyone else want to join the fun?</comment>


Show HN: I made a directory that connects side hustles with sponsors - <AUTHOR> http://www.sashlist.com <comment><AUTHOR> Hey everyone,

I had some time today to throw together a small side project that sets up other side projects with sponsorships from existing businesses.

Here's the pitch: Side hustles that launch well can see hundreds of thousands of views but never make a cent. Now, with sashlist.com, businesses win cause they get exposure and makers are rewarded for their work.

I would love feedback on design/features :-)

Thank you in advance!</comment>


The End Of The American Entrepreneur? - <AUTHOR> http://dish.andrewsullivan.com/2014/05/07/the-end-of-the-american-entrepreneur/

<comment><USER2> This mirrors almost exactly the collapse in the buying power of real American wages and the growth of consumer debt. How can people be entrepreneurial if they are perpetual revolving debt slaves in a national "company store" model economy?</comment>


Linus on Git and SHA-1 - <AUTHOR> https://plus.google.com/+LinusTorvalds/posts/7tp2gYWQugL <comment> joatmon-snoo The actual mailing list discussion thread can be found here, and is infinitely more informative than any of the bull being spouted in this thread: [http://public- inbox.org/git/20170226004657.zowlojdzqrrcalsm@...](http://public- firstname.lastname@example.com/T/#t)

<comment><USER2> My takeaway from all that - the git project is internally taking steps to mitigate vulnerabilities from this particular attack (making it harder to insert the arbitrary binary data necessary into git metadata), but a) is just throwing up their hands at the problem of projects that store binary blobs like image data in their repos, and b) is not taking this as a signal that more serious sha-1 attacks are on the horizon and they should speed up their hash-replacement efforts.

This latter leads into the problems with Linus' positions in particular. In that thread, does not take seriously the threats that this poses to the broader git userbase, because he only seems to care about the kernel use-case: trusted hosting infrastructure at kernel.org (itself an iffy assumption, given previous hacks and the use of mirrors), and the exclusive storage of human- readable text in the repo which makes binary garbage harder to sneak in. These do not apply to most users of git. His rather extreme public position (paraphrased, "our security doesn't depend on SHA1") is even more troubling - it absolutely _does_ depend on SHA1, this just isn't (yet) a strong enough attack to absolutely screw over the kernel. A stronger collision attack (eg a chosen-prefix as opposed to identical-prefix, or godforbid a pre-image attack) would _absolutely_ invalidate the whole git security model.

<comment><USER3> SHA1 is only used for uniqueness. You still need to have write access to repo to perform attack. If you already have write access you do not need to make collision...

<comment><USER2> For this particular attack - what if you do not have write access, but have sufficient social capital to get a pull request merged with a benign-seeming file?

<comment> joatmon-snoo If we're just talking about this particular attack, the two files don't even resolve to the same SHA-1 in Git:

        $ sha1sum shattered*
        38762cf7f55934b34d179ae6a4c80cadccbb7f0a  shattered-1.pdf
        38762cf7f55934b34d179ae6a4c80cadccbb7f0a  shattered-2.pdf

        $ git hash-object shattered*
        ba9aaa145ccd24ef760cf31c74d8f7ca1a2e47b0
        b621eeccd5c7edac9b7dcba35a8d5afd075e24f2

<comment><USER4> As soon as somebody invests a few $100k there are going to be such files. Now it's known how much it takes. That much.

Luckily, there is also a known solution to detect that kind of files.

</comment></comment></comment></comment></comment></comment><comment><USER5> Linus's transition plan seems to involve truncating SHA-256 to 160-bits. This is bad for several reasons:

\- Truncating to 160-bits still has a birthday bound at 80-bits. That would still require a lot more brute force than the 2^63 computations involved to find this collision, but it is much weaker than is generally considered secure

\- Post-quantum, this means there will only be 80-bits of preimage resistance

(Also: if he's going to truncate a hash, he use SHA-512, which will be faster on 64-bit platforms)

Do either of these weak security levels impact Git?

Preimage resistance does matter if we're worried about attackers reversing commit hashes back into their contents. Linus doesn't seem to care about this one, but I think he should.

Collision resistance absolutely matters for the commit signing case, and once again Linus is downplaying this. He starts off talking about how they're not doing that, then halfway through adding a "oh wait but some people do that", then trying to downplay it again by talking about how an attacker would need to influence the original commit.

Of course, this happens all the time: it's called a pull request. Linus insists that prior proper source code review will prevent an attacker who sends you a malicious pull request from being able to pull off a chosen prefix collision. I have doubts about that, especially in any repos containing binary blobs (and especially if those binary blobs are executables)

Linus just doesn't take this stuff seriously. I really wish he would, though.

<comment><USER6> That's _not_ the plan. That was an idea that was thrown out if this was an emergency (it's handling different length hashes, and doing so that we don't have to force a flag day conversion which is hard), but once people realized that in fact, the sky was not following, the plan which Linus outlined in his G+ post was devised --- which does not involve truncating a 256-bit hash.

<comment><USER5> Can you please link me to "the plan" then? I have been trying to follow some of the ML discussion and that was the last plan I saw him put forth, e.g.:

[https://marc.info/?l=git&m=148787047422954](https://marc.info/?l=git&m=148787047422954)

<comment><USER7> By clicking "next in thread" in that very post you get Linus replying to himself with a non-truncating plan:

[https://marc.info/?l=git&m=148787163023435&w=2](https://marc.info/?l=git&m=148787163023435&w=2)

<comment><USER5> Thanks for the link.

Re: snark, I did hit "next in thread" but managed to skim over that in his response.

But again, thanks anyway.

(Note: this still sounds more like spitballing than "the plan", but at least it's a step in the right direction)

</comment></comment></comment></comment></comment><comment><USER8> One thing SHA-256 has going for it is that millions can be made from finding pre-image weaknesses in it, because it's used in Bitcoin mining. If you could "figure out" SHA-256, and use it to take over Bitcoin mining, you'd make $2M the first 24 hours, at current rates. And if you play it wise, it could take a long time before anyone figure out what's going on.

With regards to market price for a successful attack, I don't think any hash function stands close to SHA-256. And for that reason I think it would be the right choice.

<comment><USER9> [https://twitter.com/veorq/status/834872988445065218](https://twitter.com/veorq/status/834872988445065218)

<comment><USER8> I think the claim is interesting, and I certainly wouldn't reject it. But just relaying someone else's claim, without any substantiating argument, I find quite uninteresting.

<comment><USER9> Jean Philippe Aumasson[1] is an important currently active cryptographer who studied this particular problem closely. If he says he does not expect an algorithmic break of SHA2, I believe him that I don't need to plan to switch from SHA2 to SHA3 in an hurry.

I don't have the math to understand a more detailed explanation for his reasons to make such a statement. If you do have the math, ask him.

1 - [https://131002.net/index.html](https://131002.net/index.html)

</comment></comment></comment></comment><comment><USER10> I don't really get the threat model here. If an attacker is pushing commits into your repository, you're long since toast on all possible security fronts, right? Is there anything nefarious they could accomplish through hash collisions that couldn't be done simply by editing commit history?

<comment><USER11> Not really. From Linus — I think the most important point that has not been discussed extensively:

> But if you use git for source control like in the kernel, the stuff you > really care about is source code, which is very much a transparent medium. > If somebody inserts random odd generated crud in the middle of your source > code, you will absolutely notice.

<comment><USER12> _If somebody inserts random odd generated crud in the middle of your source code, you will absolutely notice_

Unless I'm misunderstanding how this would work in practice (I assume commits being added under my name or existing commits being modified?), I'm abolutely not buying that though. Way too general, no? I would likely notice something like that, but I know enough colleagues who are just as likely to not notice. Mostly because they don't fully grasp git so they're just like 'hmm, thing says I'm behind, ha I know the fix is pull, yes I'm a git wizard' and just pull then continue working without even checking what got changed.

<comment><USER13> Sure, most people don't review all the code that they pull.

But if you are in a position to insert "garbage data" into a commit in preparation for an attack, it will be much easier to insert malicious but safe-looking code in the first place. Omit an array bounds check, disable SSL certificate validation, or anything else that looks like a mistake but will allow you to compromise the running code later.

</comment></comment></comment></comment><comment><USER14> One thing that I think is worth mentioning: This was completely avoidable. Git isn't that old, it wasn't taken by surprise by the SHA1 attacks.

The first paper from Wang et al, which should've put SHA1 to rest, was published in 2004, the year before the first ever Git version was released. It could have been easy: Just take a secure hash from the beginning.

</comment><comment><USER15> If anyone is really interested in more assurance of git commit contents, there's "git-evtag", which does a sha-512 hash over the full contents of a commit, including all trees and blob contents.

[https://github.com/cgwalters/git-evtag](https://github.com/cgwalters/git- evtag)

</comment><comment><USER16> While this post sounds very reasonable to me there's one point that I really don't get: why does he keep saying that git commit hashes have nothing to do with security?

If he believes that, why does git allow signing tags and commits and why does Linus himself sign kernel release tags? Isn't that the very definition of "using a hash for security"?

</comment><comment><USER17> Related, from Mozilla:

* The end of SHA-1 on the Public Web

[https://blog.mozilla.org/security/2017/02/23/the-end-of- sha-...](https://blog.mozilla.org/security/2017/02/23/the-end-of-sha-1-on-the- public-web/)

 _As announced last fall, we've been disabling SHA-1 for increasing numbers of Firefox users since the release of Firefox 51 using a gradual phase-in technique. Tomorrow [Feb 24th], this deprecation policy will reach all Firefox users. It is enabled by default in Firefox 52._

<comment><USER2> To be fair (although I've been commenting angrily about git's continued use of SHA-1 elsewhere) it's a lot easier for a browser to change hash algorithms than for git.

</comment></comment><comment><USER18> Linus is a little behind the times with this comment:

``Other SCM's have used things like CRC's for error detection, although honestly the most common error handling method in most SCM's tends to be "tough luck, maybe your data is there, maybe it isn't, I don't care".''

BitKeeper has an error detection (CRC per block) and error correction (XOR block at the end) system. Any single block loss is correctable. Block sizes vary with file size so large files have to lose a large amount of data to be non-correctable.

</comment><comment><USER19> In the specific case of cryptography where it's unknown how bulletproof the algorithm will be why not use multiple hash functions? Perhaps using the top 10 best hash functions of the day. That way you're not putting all your eggs in one basket and if nefarious collisions are able to be created in the future you still have the other hash functions to both "trust" and double check against. It's even more unlikely that nefarious collisions will be able to be constructed that collide all the other hash functions as well. You could just append the hashes to each other or put them in a hash table or something. Maybe my computer science is not up to snuff but it seems like this would provide more resiliency against future and non-public mathematical breakthroughs as well as increased computing power such as quantum computing. Yes, it would take a little longer to compute all the hashes in day to day use, but with the benefit of a more robust system both now and in the future.

</comment><comment><USER20> Have there been writings on what exactly git's migration strategy to a new hash function will be? Apparently they have a seamless transition designed that won't require anyone to update their repositories, which seems like a pretty crazy promise in the absence of details.

<comment><USER21> In git the SHA-1 hash is simply an identifier for an object - it's used in the filename, but not stored in the object. And when a commit or tree object references others, it's just a name that can be looked up in the database. So a commit object hashed with SHA-256 can easily reference a previous commit that was hashed with SHA-1.

During the switch, a bit of deduplication may be lost. But the only interesting issue I can see is how git fsck will tell which hash an object was created with when verifying the hash (maybe with length?).

<comment><USER22> Git update repo kind of command may be ??

</comment></comment></comment><comment><USER23> Also see discussion of Linus's earlier comments at [https://news.ycombinator.com/item?id=13719368](https://news.ycombinator.com/item?id=13719368)

</comment><comment><USER24> Newbie question .. can some one please help me understand the attack scenario. if I, as the attacker, want to inject malicious code/binary into a git repo, then I need to write my malicious code/binary in such a way that the resultant hash collides with one of the commits (? Or the last one?) in the repo. Is this correct?

</comment><comment><USER25> Probably isn'y the sky falling. But if knowing the length fixed all hash function issues then cryptographic hashes would just use a some more bits for length.

</comment><comment><USER26> Can someone correct me. SVN/Subversion and GIT are affected by SHA-1 problem. SVN uses SHA-1 internally, but exposes only a numeric int as revision. GIT uses SHA-1 internally and as revision. So if someone commit a modified PDF that collides he can run havoc on both SVN and GIT at the moment. It seems easier to fix the issue in SVN than GIT.

<comment><USER14> It's a somewhat different issue.

Git can probably not be havoced by committing two colliding files (and doing so would require doing another chosen prefix attach with a git blob header). But git looses cryptographic integrity promises due to this attack (aka: you can have different source trees with different histories leading to the same top commit hash). svn never had any cryptographic integrity to begin with.

</comment></comment><comment><USER27> I do wonder how many outside of crypto circles know about SHA-2 circa 2004.

</comment><comment><USER28> This, btw, is why we have e-cigarette bans. The fact that the generally high- IQ, paid-to-think-about-subtle-categorization community of software developers needs to be inoculated against the "I Heard SHA-1 Was Bad Now" meme, should serve as a reminder for why most things should not be managed by democracy.

(Yeah, I know this will be read as a plea for monarchy and downvoted. It simply proves my point: people are WAY too subject to errors in the classes (1) "I hate him because he said something 'bad' about something 'good'." and (2) "I hate him because he said something 'good' about something The Tribe now knows is 'bad.')

<comment><USER29> Save yourself some downvotes and remove the mention that you expect them.

<comment><USER28> Save myself from people proving my point? Why?

<comment><USER29> The HN guidelines specifically ask not to express the expectation of downvotes. You may be downvoted purely for ignoring the guidelines, regardless of the rest of your comment.

 _Please don 't bait other users by inviting them to downvote you or proclaim that you expect to get downvoted. _

[https://news.ycombinator.com/newsguidelines.html](https://news.ycombinator.com/newsguidelines.html)

<comment><USER28> A generally reasonable guideline, but in this case, I am actually criticizing the tribalism that makes people rise to that bait.

It similarly leads to the discussion of how "I can't believe Linus is trying to defend SHA-1 when The Tribe already knows it is cryptographically 'bad'."

<comment><USER29> If you are taking the view that you're expecting downvotes to prove the point that people who are trying to uphold community standards are doing so blindly or ignorantly, you'll very likely think you're proven correct when you do receive downvotes. Can you blame them? You're explicitly flaunting the guidelines they choose to abide by while telling them they're wrong to do so _in your special case_.

<comment><USER30> ahem... "flouting"

<comment><USER29> You're right, of course. Thanks!

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER31> Um what? Software written in the past 20 years has a baked-in assumption that the length of some ID can't change?

</comment><comment><USER32> I'm mystified as to why this is even a discussion.

SHA1 is busted. That impacts some git users. The fix is not invasive. Fix the bug. Make the transition. Move on.

Super unprofessional.

<comment><USER33> It's not that simple. Git is a widely used software integrated into many places, so keeping some backwards compatibility is important.

Just going ahead and start breaking things would _really_ be unprofessional.

<comment><USER34> They did break backwards compatibility with git v2.0 but sadly they did not bother to change the hash function.

<comment> joatmon-snoo What backwards compatibility was broken?

<comment><USER35> Little bits in CLI interface [https://blogs.atlassian.com/2014/06/happened- git-2-0-full-go...](https://blogs.atlassian.com/2014/06/happened-git-2-0-full- goodies/)</comment></comment></comment></comment></comment>


Eclipses During 2019 - <AUTHOR> http://eclipsewise.com/oh/ec2019.html#LE2019Jan31T <comment><AUTHOR> > In 2019, there are three solar eclipses and two lunar eclipses: 2019 Jan 06: > Partial Solar Eclipse 2019 Jan 21: Total Lunar Eclipse 2019 Jul 02: Total > Solar Eclipse 2019 Jul 16: Partial Lunar Eclipse 2019 Dec 26: Annular Solar > Eclipse</comment>


Tell HN: Legally, building a product sucks for minors - <AUTHOR>

I reside in the United States. It's pretty well known the age to have the legal capacity to enter a contract is 18.
However, after a glance of the legal bit of the many services I use, almost all of them require you to be 18, in the US. The consequence for many of the services discovering your breach of the TOS is an immediate termination.
For SoftLayer, they explicitly state you must be at least 18 at the time of your contract, otherwise your services will be terminated.
Amazon AWS, Linode, 6sync, also follow the same patterns, although they may be lax on enforcement.
This is just a friendly reminder to the minors on HN, and for me. Don't host anything you cannot afford to lose on those services and others.
As for me, I prefer to stay anonymous with my ventures and personal information online. I cannot afford having my parents signing up on behalf of me. <comment><USER2> Probably not directly applicable to you, but I thought I'd share my experience:

"The Children's Online Privacy Protection Act, effective April 21, 2000, applies to the online collection of personal information from children under 13. The new rules spell out what a Web site operator must include in a privacy policy, when and how to seek verifiable consent from a parent and what responsibilities an operator has to protect children's privacy and safety online."

One of the reasons I didn't become a web developer in grade school is that when this bill was first written, Geocities decided to comply by modifying their TOS, and then unilaterally terminating edit access to a 12-year-old's account. After turning 13, they refused to reinstate or accept another signup from the same email due to TOS violations. The site remained up, though thankfully without any personal info on it. You can imagine the countermeasures I took after that against a similar attack. Teaching the children that they have to lie and ignore contractual/legal restrictions to do anything useful becomes a standard very early that continues through their contact with music, games, movies, pornography, filesharing, alcohol, drugs, and hookups. "Protect the Children" is an easy, cowardly rallying cry for a Joe Lieberman or a Tipper Gore, but teaching them that all the good stuff happens behind an adult's/corporation's back robs them of their free will within the bounds of the law, and of their respect for anything the powers that be are trying to do.

It is my contention that internet pseudonymity / anonymity is a treasured part of our culture, and part of the way we route around damage. It is essentially required of our minors due to the way we disenfranchise them while simultaneously requiring an online presence for a lot of personally & socially beneficial activities. The hideous notion recently brought up of criminalizing a TOS violation and tying it to jail-time would largely shut minors out of the Internet altogether, by any reasonable cautionary standard. A constellation of laws which requires broad criminality, and is completely selectively enforceable, brings the status of rule of law itself into question.

On this November 6, let's say this: I don't think minors would be in quite so dire of a position if we could all (read: All American Citizens) vote.

<comment><USER3> I remember my parents being really perplexed that I had to fax (long- distance!) in permission forms to Neopets when COPPA was introduced. Most sites didn't bother getting consent from parents and just locked out minors entirely, which was extremely frustrating to my (then) eight-year-old self.

</comment></comment><comment><USER4> Your post reminded me of this other young kid I know and his friends who hunted for bugs for a tech company in exchange for online resources: <http://en.wikipedia.org/wiki/Bill_Gates#Early_life>

I hope that inspires you in your current and future career!

</comment><comment><USER3> This includes YouTube/GMail/Google+, and Facebook accounts (!) -- I have heard of minors having their accounts terminated when the company found out, even if their parents consented to the account (or, for that matter, worked for the company in question).

</comment><comment><USER5> I wouldn't worry about it. I had an AdSense account at 13 and a server with SoftLayer at 16.

<comment><AUTHOR> That's one of my concerns. One of their clasues state "Termination for Breach. [...] if Customer is an individual, Customer was not at least 18 years old or otherwise did not have the legal capacity to enter into the MSA".

Note the "was" and "did", I assume your account can be terminated right now. Whether they enforce it or not is another question.

</comment></comment><comment><USER6> The reason for this is minor's can't be held liable for any contracts they sign, that and companies have boiler plate legal speak that is intended for 99% of their customers.

That being said, there are plenty of ways to get around that limitation, and may well land you in a grey area. On the flip side, because your a minor you can also get away with a lot more.</comment>


I Make Dreams Come True - <AUTHOR> https://github.com/raganwald/homoiconic/blob/master/2011/10/i_make_dreams_come_true.md#readme <comment><USER2> This post reminded me of some discussions I've had with a friend about open source. He always says that open source software is written by geeks for geeks.

His point was that the software might be free but there was too high a cost struggling with difficult installs and ugly user interfaces. You can stand out if you bridge that gap.

Did you catch what Matt Mullenweeg said yesterday at Startup School why WordPress succeeded in the early days? He said it was because WP had the quickest and easiest install of any blog software.

Bringing tech we use every day to a wider audience is a viable business model.

<comment><USER3> I have been thinking along similar lines, in the context of my latest open source interest, Node.js and the multitude of packages available through NPM.

My main goal right now, aside from building a Node.js hosting service, is to create a platform for content and data management built on Node.JS, CoffeeScript, and NPM, with a plugin and component architecture. I dream about killing WordPress.

<comment><USER4> If your dream is to kill the competition instead of building a better product, well... you're doing it wrong. Buzzwords and fancy tech don't mean crap to the end user.

<comment><USER5> Most of the technologies I dream about killing are the ones that I feel are suboptimal and downright frustrating but I am forced to use for lack of a better solution or due to economic forces. I want to kill them because I want them to disappear by being replaced by something better.

For example, I hate most of the Microsoft Office suite, but there really isn't anything that's better for the average user to author documents. I dream of making something that's so good that people will switch and I won't have to deal with Office ever again.

</comment></comment></comment></comment><comment><USER6> I agree with the sentiments on OT. It really ought to be baked into everything. It has features you want, such as undo/redo, collaborative editing and optimistic locking.

I've been working on an OT implementation for the past few weeks. It really is some brain wrinkling stuff. The adoption of data-bining we're seeing in the newer JavaScript client frameworks/libraries could be paving the way for something like OT to go mainstream. OT is a bit like pulling your brain through a wormhole#. I think it's going to take a really easy to plug-in library to have something like OT get any traction.

 _# That is, OT is fairly straightforward if you're editing a document. It gets weird when you have to map a graph of objects onto/from a stream of operations._

<comment><USER7>
      OT is fairly straightforward if you're editing a document

Even with a "plain text" document, there is much nerd sniping to be done when you consider that OT works best at a semantic level, not a character level. A trivial example is that conflicting edits to words and numbers should often be treated differently. This may not generalize very well, a domain-specific editor for one application may want to use slightly different transformation semantics than another.

<comment><USER6> I try not spend too much time on semantics at the transformation level. There are already hundreds of cases that must be understood transformed just to handle concurrent operations on an XML document. If you want the transformer to handle semantics I fear you're going to balloon in complexity to the point of deep sadness. ( What do we do if I'm typing a number inside your word? Word inside a number? Delete a number inside a word? What if you word is the name of city? etc. forever )

I think there is a better ROI on making the intent of your collaborators clear, such as with cursor/mouse indicators. If I can see you're editing a number, I can know to steer clear, or at least be ready for the consequences.

<comment><USER8> I've written ShareJS, which performs OT over generic JSON objects.

Getting OT-for-JSON working involved a lot of cases, but it was certainly tractable. The tricky algorithmic code is 440 lines long.

XML would be much more complicated to get right, but certainly possible if you're mad keen on XML.

<comment><USER9> Did you really need it on the JSON level? It goes over the wire, hence it is essentially just a string.

<comment><USER8> Yes, you do.

Say you have an object:

{x:1}

Two people try and add a y:2 to the object. If you treat the object as a string, you can end up with:

{y:2,x:1,y:2}

... which is invalid JSON. If you do string-level operations, there's heaps of ways the JSON can end up invalid or just plain wrong. In comparison, using OT if two people apply a "Insert y:2 into the object" operation, the object will be edited correctly at all sites.

</comment></comment></comment></comment></comment></comment><comment><USER10> I had a similar reaction after seeing Etherpad's collaborative text editing. I remember my jaw hitting the floor when watching a replay of Paul Graham writing and editing an essay keystroke by keystroke.

Now that I've seen it—I want everything to be real time and collaborative. I think it's one of those things where once people have seen it, there's no going back.

<comment><USER11> I really wish Google docs integrated their versioning in a visual way like Etherpad. I wonder what the team is up to these days. Are they still at Google?

<comment><USER12> "I really wish Google docs integrated their versioning in a visual way like Etherpad"

What did you like about it?

<comment><USER11> Jake, thanks a ton for your comment. I absolutely love that Hacker News is a place where users and engineers can talk openly and comfortably.

It's been a while but if I remember correctly, there was a slider on the top right with a play button. It allowed me to scroll through the history of the doc akin to Time Machine. That visual playful approach is much more engaging than a drop down list of versions. Titles and dates really tell you nothing about the nature of the document.

Watching an essay evolve with a click of a button was awesome and uniquely informative. A killer feature that should not be sacrificed. It was certainly a feature that could help Google Docs position itself above native applications.

<comment><USER13> I'm an instructor for a university course that is taught in a computer lab, so that every student has a computer in front of them. Each week, I setup two "community notes" pages using some etherpad clone and let them write their notes for the day in that fashion. I have to setup two, because apparently there is a hard limit of 12 users per etherpad, but it's completely changed my students' view of notes.

There's no more clamoring each week for the powerpoint that I refuse to make. They're now using each other to build notes that are better than anything they could build individually.

When we get this technology into everything, the world will be a much better place.

</comment></comment></comment></comment></comment><comment><USER14> If anyone is keen to hack on OT or OT-related products, a friend of mine has a great Javascript/Coffeescript library called ShareJS that makes building OT- powered web apps pretty easy.

Demo: <http://sharejs.org/hello-ace.html>

Github: <https://github.com/josephg/ShareJS>

<comment><USER3> I was just googling for socket.io and operational transform a minute ago and that popped up. The slideshow I saw though said it just uses Ace to handle text.

Can it do OT on types other than text now?

EDIT:.. actually I see the JSON example. The hex thing game, I notice it has a fixed length in that array.. does this sharejs OT library handle cases where a variable size array has concurrent updates, deletes and inserts?

<comment><USER8> Hi! Author of ShareJS here. ShareJS works fine with variable length arrays.

Also, ShareJS isn't limited to ace. Textareas work as well. Here's the same document that was linked, editable from a textarea:

<http://sharejs.org/textarea.html>

</comment></comment></comment><comment><USER15> I've come to realize that I'm an average programmer in the world of programming.

I'm not a rock star that knows how to optimize every slice of code.

However, when I go to other industries and bring my programming skills to improve their processes, I am basically a wizard in their eyes.

</comment><comment><USER16> Making dreams come true is the same as "adding business value" as long as your business is consumer facing.

<comment><USER7> True, personal value is often aligned with realizing dreams.

But you can make an amazing amount of money making people's dreams come true in the workplace was well. How do you feel about Visicalc, fax machines, FedEx, and others examples of things sold to businesses that provoked the same "Why didn't anyone think of this before?" reaction? Sure, people justified these purchases with the money they'd make or save using them, but often people looked at them, stared, then a lightbulb came on and they wanted them.

Businesses are staffed by people. Yes, you can sell them Enterprise Software and Services they hate, and laugh at me from your massive mansion. But you can also sell them software and services that make their dreams come true.

</comment></comment><comment><USER17> If you like dreams and technology, you may also like this: www.technosophics.com Try it, it is all free. Eventually it will also be open- source.

</comment><comment><USER18> One thing I take from this article is that the things that give us that "Dreamy" feeling are (especially in tech) things that turn ordinarily mundane or complicated things into simple and easy things.

For example, the GUI basically turned accessing files (along with other commands) from mundane tasks into easy and attractive tasks, effectively making it far more useful by lowering the learning curve and lessening the complexity.

Movies are another example of turning something (plays) into a more exciting, entertaining, and accessible form.

It seems that what we consider "Dreamy" is simplicity. Perhaps that's why consumers gawk over Apple device's and describe them as dreamy. It makes one wonder, why is it that we consider simplicity so attractive?

One reason could be that it is purely natural human instinct. We do not like not understanding things and we constantly try to understand that which we don't. When people create things that increase other's ability to understand whatever product or service they are offering, they are creating desires, also known as dreams.

In a sense, that's the only reason that businesses exist, or at least it's the only reason businesses should exist.

<comment><USER19> I think the reason why we are drawn to simple things is down to, among other reasons, something that I've observed with how the human mind fills in blanks.

Ever noticed how someone looks attractive from behind but then they turn round and are not so much? It seems to me that when our brain fills in the gaps it assumes that the subject is aesthetically pleasing. (Well, either our brain defaults to expecting something to look nice, or it fills in the blanks with an average and we find the average to be attractive.)

So coming back to simplistic design and why it evokes a positive emotional response from us: Perhaps it's because with a simple design our brain has more 'blanks' to fill in.

If anyone knows of a name for this phenomenon and further information exploring it I would love to learn about it. Same goes for if what I'm saying is nonsense and there is an alternate theory disproving mine!

<comment><USER20> I think this is explained here <http://en.wikipedia.org/wiki/Cognitive_dissonance>

<comment><USER18> Thanks for the link. Truly understanding cognitive dissonance seems to be the key in understanding what people find attractive and can definitely help companies (start ups or established) in marketing and refining their products or services. The simpler something is, the harder it is for people to have conflicting ideas about it, making it more attractive.

<comment><USER21> My observation is that simplicity tends to cause polarization. This (having lovers and haters) is actually quite good, IMHO. More conversation means more chances to learn from your users/customers.

<comment><USER18> good point</comment></comment></comment></comment></comment></comment>


Page Weight Matters - <AUTHOR> http://blog.chriszacharias.com/page-weight-matters <comment><USER4> I'm on a pretty fast line, and I am sometimes appalled with how long it takes pages to load, and often it comes down to loading content I have no interest in:

      * comments
      * ads and images
      * headers
      * sidebars
      * toolbars
      * menus
      * social network tools
      * meebo bars (really google, really?)
      * javascript to load all of the above crap

The amazing thing is how often I can't even begin to read the page for what seems like much of a minute as the page takes so long to render, or various pieces of the page jump, and shift and scroll.

I find that tools that localhost various ad servers help, and other tools that load the crap but keep it off the page help like adblock plus, but even more so, adblock plus' filters that let me shitcan all the crap.

One of these days I want to write an extension similar to adblock plus that seeks out and removes jquery crap. A lot of the reasons I can't read pages anymore seems to be jquery slideshows, jquery toolbars, jquery popups and the like.

I am pretty sure that graphing this out and we find the end of the web occurs sometime in 2018 when page designers and their bosses and engineers and marketing pukes have so larded down pages that the net runs out of available bandwidth and any page takes 4:33 to load.

<comment><USER5> There seems to be an expectation these days that everyone's on a 50Mbit+ connection with an ultra mega blazingly fast computer, and nobody tests their sites on anything but that setup.

Example: The Verge. Chrome reports theverge.com as making 118 requests with 2.62MB transferred, taking 11.04s (onload: 6.42s, DOMContentLoaded: 3.32s). Kotaku: 234 requests, 1.35MB transferred, 11.93s (onload: 10.91s, DOMContentLoaded: 4.28s).

I tested this on a maxed out 2010 MacBook Air, and that's _with_ AdBlock Plus and ScriptNo.

The Verge is basically unusable while it loads and Chrome struggles to render it after it has loaded while scrolling on my machine. This is all-too-common these days.

<comment><USER6> Is there a consulting market for fixing these kinds of examples? I quite enjoy optimizing these kinds of issues, but perhaps the value is too implicit or too low for them to bother.

<comment><USER7> The issues these optimizations pose for the workflows of the whole team and the maintenance requirements are the blocker. You must be able to convince people that so much of their time are worth the gains (the same people that use high level languages and JS frameworks they may not need very much of for productivity boosts).

<comment><USER8> But for the slow sites highlighted, I don't understand why client-side performance and bandwidth usage apparently isn't a priority; I mean, their site, their front-end is their primary product, the thing they make money off of. A ten second load time is simply unacceptable; just look at the performance guys at Google, who have and are working hard to shave milliseconds off of page load time.

I'm probably going to offend a few people here, but creating a website without or with minimal performance optimization is just plain sloppy and uncraftmanshiplike work. Get your act together, or get a different job.

<comment><USER7> Right, and thanks for separating how to approach this issue in creation of an app vs maintenance. Real world issues like having a million images that are not compressed or sized correctly, or having part of an application out of your control that cannot be modernized or share assets with another part get in the way. There are companies that strive to outsource this work to a platform / appliance, like the recently acquired <http://www.akamai.com/blaze> instead of actually fixing/upgrading these issues (not to say that it works). After all, most companies don't have resources for their front-end devs to be profiling page loads by country and pushing HTTP performance under such dramatically different bandwidth/latency variations.

</comment></comment></comment></comment></comment></comment><comment><USER9> There are a few ways to see this data in Google Analytics. You can view a world map of your site with page load time and server connection time color- coded.

The first, and easiest way is to go to Content > Site Speed > Overview. By default this will show you a chart of page load time over time.

First, to get enough data change the time scale to a full year. Underneath the date picker there is an icon with 16 dots in it in a 4x4 arrangement, with some dots filled in. click on that and move the slider all the way to the right. This will ensure higher precision and will capture some of the slower page loads.

At the bottom, in the 'Site Speed' section instead of 'Browser' select 'Country/Territory'. It will change the data from pages to countries. Now click on 'view full report' and you will get a world map with page load times.

It will look something like this:

<http://i.imgur.com/uCxcx.png>

The site I just did it on doesn't have enough data, but if you have a fairly popular site you should see a nice variation in page load times.

Google have a post about this on their Analytics blog with much better maps and more information:

[http://analytics.blogspot.com.au/2012/04/global-site- speed-o...](http://analytics.blogspot.com.au/2012/04/global-site-speed- overview-how-fast-are.html)

Their maps look a lot better.

The other way of doing it is to create a custom report. I have one called 'Global Page Load'. Add 'Country/Territory' as a dimension, and 'City' as a sub-dimension. You may also drill in further by adding browser version, mobile, javascript, etc.

As metric groups, I have - in this order: DNS Lookup time, Avg Server Connection Time, Avg Server Response Time, Avg. Page Load Time.

This then gives you a pretty report where you can immediately see which visitors are getting slow responses, and you can further drill in to see what type of connections and which browsers or devices are slow. I was surprised that my light page, with compressed CSS and every static/cached was still taking ~20seconds to fully load from 30% of countries.

That is for pages that load, you need to add another tab to the report with error metrics to see who isn't getting through at all, and you would need to look at server logs to see who isn't even loading the Google Analytics javascript. All very handy, and eye opening in terms of the types of connections and the speed of connections that a lot of web users are on.

To many sites are guilty of having pages that are just far too heavy - <USER2> they only test from their 100Mbit city based connections. I am in Australia with a 1st world internet connection at 24Mbit and I avoid theverge.com desktop site because of the page load.

Edit: If anybody can work out a way to share custom reports in Google Analytics, let me know - I would be interested in sharing reports with others, for specific cases such as this.

<comment><USER10> Google's sitespeed tool only has a, usually quite small, 'sample' of your speed time.

<comment><USER11> You can increase your sampling to rate to as high as you want, even 100%: [https://developers.google.com/analytics/devguides/collection...](https://developers.google.com/analytics/devguides/collection/gajs/methods/gaJSApiBasicConfiguration#_gat.GA_Tracker_._setSiteSpeedSampleRate)

The cap is 10K visits/day.

<comment><USER12> Thanks for this! I manage a bunch of sites that get less than 10k visits/day and I always thought the speed data was really lacking. This is a huge help.

</comment></comment></comment></comment><comment><USER13> Since my home router and wireless access points all run Linux, I can play all kinds of sadistic games with routing, tunneling, traffic shaping, etc.

One of the experiments I did a while back was creating a "satellite Internet connection from halfway around the globe" simulator on a dedicated wireless SSID. Basically, I created a new SSID and used Linux's traffic control/queueing discipline stuff to limit that SSID's outbound throughput to 32 kbps, limit inbound throughput to 64 kbps, add 900 milliseconds of latency on sent and received packets, and randomly drop 4% of packets in/out. Very, _very_ few sites were even remotely usable. It was astonishing.

I think one of the most useful products that could ever be created for web developers is a "world Internet simulator" box that sits between your computer and its Internet connection. (Maybe it plugs into your existing wireless router and creates a new wireless network.) It would have a web interface that shows you a map of the world. You click a country, and the simulator performs rate shaping, latency insertion, and packet loss matching the averages for whatever country you clicked. Then devs can feel the pain of people accessing their websites from other countries.

(Thinking about this for a minute, it could probably be done for about $30 using one of those tiny 802.11n travel routers and a custom OpenWRT build. It would just be a matter of getting the per-country data. Hmmmmm...)

<comment><USER14> OS X has a handy GUI tool called the Network Link Conditioner, which lets you easily set up simulated network conditions. The inbuilt profiles are a bit optimistic, I find, but it's easy to add more.

It's just tc or the BSD equivalent under the hood, but it's point and click and easy to turn off.

More details at: [http://mattgemmell.com/2011/07/25/network-link- conditioner-i...](http://mattgemmell.com/2011/07/25/network-link-conditioner- in-lion/)

<comment><USER13> Neat -- I'm still on OS X 10.6 and didn't know about this. Thanks for the pointer!

I guess the advantage of a dedicated pain box is that any device, regardless of operating system, could use it. Network Link Conditioner (and the two pieces of software mentioned so far by siblings of your comment) are all OS X-specific. (That's another webdev gripe for another day.)

<comment><USER14> Linux has tc, the command line tool, and some other scripts that sit on top of that, like wondershaper.

On Windows, there's a few mentioned here: [http://stackoverflow.com/questions/1094760/network-tools- tha...](http://stackoverflow.com/questions/1094760/network-tools-that- simulate-slow-network-connection)

</comment></comment></comment></comment><comment><USER15> This is an interesting example of why randomization in experiments is important. If you allow users to self select into the experiment and control group, and then naively look at the results, the results might come up opposite from what is expected. This is known as Simpson's Paradox. In this case, it was only the users for whom page load was already the slowest that picked the faster version of the page. So naively looking at page load times made the pages look like they loaded slower.

However once Chris controlled for geography, he was able to find that there was a significant improvement.

Moral of the story: run randomized A/B tests, or be very careful when you are analyzing the results.

<comment><USER16> You have to be careful of how you sample for the A/B testing. Even if they properly chose a set of users to get Feather, and a set of users to stay at baseline, their results would STILL get skewed, since the remote users who now got Feather would view disproportianately more videos than the baseline, pushing up average load time in the experimental group anyway.

</comment></comment><comment><USER17> In addition to the developing world, page weight is a big concern for those of us with limited data plans. When a single log post weighs in at 2-3 MB (which is common), the day's allotment of a 200MB/mo plan disappears really fast. I often end up only reading the HN comments while on the bus since I don't want to play Russian roulette with the article size.

(of course, this is unrelated to YouTube, but to the general sentiment of the article)

<comment><USER18> When I'm mobile, I like to read with ihackernews.com because it has a button that uses viewtext.org to just show me the text of the article.

</comment></comment><comment><USER19> I like this article a lot, it makes a good point that many of us often overlook. What's the dominant feeling about ajax to reduce page weight? It is ok if my page is 1MB but only the initial 100KB are sent synchronously and necessary for interaction? An example would be YouTube sending just the main page layout and video player and then async loading all of the related stuff and comments.

<comment><USER20> It can help, but still has to be applied carefully. A fast initial load is pointless if a bunch of widgets are making the page jerk and jump all over the place for the next 30 seconds.

The strategy I've used is to serve up a light frame with the meat of the content, while keeping all ajax/external site dependent stuff hidden (with equivalently sized placeholders to avoid shifting layout and scroll), then doing a single subtle fadein of the additional content when everything's ready.

You can tweak the timing--like if you have a few bits of ajax content from your server that take 1-2s to load, and a few social buttons that are taking more like 5-6s, you'd probably want to fade those in separately in two steps. The point is to carefully orchestrate how elements appear to the user, not just bombard them with everything at once.

<comment><USER7> People are not taking into account "browser crunch" of parsing and executing all of this javascript required to defer loading to ajax. This is painful to phones, but heavyweight frameworks like jQuery mobile are still used, even though we know just parsing jQuery can take phone several seconds. It could be quite a while before your $.ajaxes will fire.

</comment></comment></comment><comment><USER21> This story reminds me of a founder I met recently, building a wildly successful project on the most meager of resources (continue reading, I include Google Analytics screenshots below).

This is a hacker in the truest sense of the word. He builds stuff just because he loves building stuff. He is a student at a University here in Jamaica. He isn't building it to be cool, or chasing the latest web 2.0 fad of the week. He didn't know HN until I introduced it to him, and he is young (say 19/20).

He built <http://wapcreate.com> \- a WAP site creator.

That's right, WAP...not iOS or Android optimized HTML5 sites. Good, old fashioned WAP sites.

The most amazing part of the story though is that he is running it on 2 dedicated servers in Germany, it's a hack job (PHP, a bit of Ruby & a bit of Java). But once he picked up traction, he got so much traffic that he hasn't been able to keep the servers online.

In the first image - <http://i.imgur.com/yEbyh.png> \- you will see that he got over 1.5M uniques. The vast majority of the time period covered here (the last year) was either very low traffic - pre-traction - or servers offline due to excessive traffic.

In the 2nd image - <http://i.imgur.com/Pu8da.png> \- you will see that about 1.2M of those visits were in the 3 month period of June 1st - Aug 31st. His servers melted down towards the end of August and he ran out of money to pay his server bills. He eventually got it back up again a few weeks later, and the traffic spiked again and the servers crashed a few weeks later again.

In the 3rd image - <http://i.imgur.com/HJ4gy.png> \- you will see that the vast majority of the visits are from Asia (even though he is 1 guy in the rural areas of Jamaica).

In the 4th image - <http://i.imgur.com/JSQ48.png> \- and perhaps the most striking you will see the diversity of devices that the visitors are coming from. Most of them are from "feature phones". i.e. A multitude of versions of Nokia phones. Notice that this is just 1 - 10 of 508 device types.

He presented at a conference I went to, here in Jamaica, and he and I started speaking. I am helping him figure out how to proceed in a sustainable way. i.e. getting this thing stable, and then generating revenue.

After speaking to him for many weeks, I finally realized how insane his accomplishment is. Apparently, in all of this, he had been creating his site on computers that were not his. He either used his school computers, or borrowed machines from people. His Aunt is buying him a 2nd hand Thinkpad for Christmas - for which he is EXTREMELY stoked.

So while we are all chasing the billions doled out by Apple on the App Store and the newest, sexiest SaaS app idea with fancy $29/mo recurring revenue, with our cutting edge macbook pros and iPads - here is one guy using borrowed hardware, making a creation app for a technology that we have long since forgotten, generating crazy traffic and usage and struggling to even make a dime from his creation.

The world is a funny place, and this internet thing that we live on - <USER3> massive. As big as TechCrunch & HN are, there is so much more out there.

If you think you can help out in any way, either donating computing resources or anything else that can help us get this site back online and helping him start to generate revenue from this - then feel free to reach out to me.

P.S. If you want to dig into it some more, check out what some of the fans of the site are saying on it's FB page. I am not trying to trick you into liking the page. It only has ~1500 likes, but you can see passionate users commenting (both complaining about the downtime and praising some of the features).

<comment><USER22> That's a great story and congrats to him on building something like that under those conditions.

There's a good reason why "we are all chasing the billions doled out by Apple on the App Store and the newest, sexiest SaaS app idea": money. He's making no money and it will be very hard to monetize. How do you get someone on another contentent, who earns very little money, using old technology, to pay you and pay enough to turn a profit?

It's great that he's helping people but if it has no business model it's not sustainable unless he can turn it into a non-profit with donors.

<comment><USER23> That is really a sad state of affairs. You can create something that helps and is used by millions of people in the world, but unless those people have disposable income, you're likely screwed as far as earning enough to keep doing it. Better do something that a much smaller number of rich white people will pay you for instead.

<comment><USER24> The poor people in this case are white/Asian.

If people don't have money, it means this should be a financially backed non- profit, or the underlying issues should be fixed first. It's not sad that you can't make money where there is none.

<comment><USER21> You would be surprised how much aggregate purchasing power "poor people" have.

As someone that lives in a third world country, the biggest companies are those that sell lots of products to the masses - not the boutique shops that sell to "middle & upper classes". i.e. the "bottom of the pyramid". In fact, Carlos Slim (the richest man in the world) has a ton of companies that sell to the bottom of the pyramid, and he is doing fine ;)

The businesses, here, that target the middle-to-upper classes tend to struggle.

So I am fairly certain there is a way to monetize this.

In fact, some users do want to pay to keep their site alive. So we just need to balance the amount that is paid and make sure resources are effectively allocated.

<comment><USER25> Carlos Slim has a govt-enforced monopoly. [http://news.cnet.com/8301-1023_3-57369357-93/telecom- monopol...](http://news.cnet.com/8301-1023_3-57369357-93/telecom-monopoly- overcharging-mexicans-billions/)

<comment><USER21> So do many other companies in many other countries - including utilities in the US - but the owners are not the richest people in the world. In fact, they probably don't come in the top 10.

I say that to say that having a monopoly is not a guarantee of maximum success.

<comment><USER26> In the case of a true monopoly it pretty much is.

<comment><USER21> Well tell that to the local oil monopoly in Venezuela....whose coffers are being raided to feed populist urges.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER27> I wanted to post this last night but the internet went down in Vientiane (again) so I just went to sleep.

Having spent the last couple of months connecting from various parts of SE Asia, I'm happy to see this getting the attention it deserves. You don't realize how utterly painful or unusable much of the web is until you experience a network that is not only incredibly slow (by US standards) but also incredibly unreliable and prone to 5-20 minute outages many times per hour or day depending on where you are.

Before today, I hadn't clicked on a youtube video in months. The site was unusable.

Most evenings in smaller cities (not villages, that's a different story entirely) the broadband will be OK with downloads averaging around 3-15KB/sec. This allows you to access most sites or check gmail (usually I still opt for HTML mode). However, it's the frequent and intermittent outages that cause the most headaches. In many places I've visited they happen a couple of times per day and in other places, they happen many times per hour. These outages are a larger problem for AJAX heavy sites where clicking a button doesn't give a page saying "This webpage is not available" instead, the site just sits there, waiting for the request to complete, giving the user no indication that the rest of the internet is unreachable.

I have no idea what causes these outages (it's not the local network) but they lead to an awful experience on some sites. Hacker News, Wikipedia and other places do a great job of providing useful info that can be retrieved in a reasonable amount of time, countless others are so fat I've stopped visiting them entirely.

Think about the people and parts of the world you'd like to reach and design your site to have an enjoyable experience in those areas. I'm grateful for features like gmail's HTML only mode. I only wish other heavy sites had an equivalent feature.

<comment><USER28> I agree that browsers should make it much clearer that clicking on a button or link which does nothing is having no effect. In my mind this violates good UI design: that whatever action the user takes, they deserve some feedback. There are many very popular sites (including Facebook, at which I am advocating for new approaches) where pages are essentially unusable until JavaScript has loaded but little indication is given to the user.

The other point that the Internet is slow and high latency in foreign countries: true, but in the SF Bay Area it's slow and high latency on mobile devices and this should be a common experience shared by Hacker News readers.

</comment></comment><comment><USER29> I must not be very clever as it took me 3-4 attempts to understand the before last paragraph (e.g. that without Feather it took 20 minutes while with Feather only 2 minutes to load a video).

<comment><USER30> Agreed. The wording of the story was a little hard to read. My first time through, it sounded like Feather increased load times, something about geography, and then the story ended without resolution.

Be sure to read it a couple times if you run into the same initial impression.

The clear point being made is that in many parts of the world, the original heavy page was taking a long time to load. Videos would only start after 20 minutes. Feather dramatically reduced the initial load time, but because of what was being measured (video start times), it looked as if Feather had increased load time. In reality, videos were being watched 18 minutes sooner.

<comment><AUTHOR> I'll rework the wording. Also, it wasn't that the videos were necessarily taking 20 minutes to load. That was simply projections based on the numbers we were seeing at the time. There was not enough data of people actually waiting for 20 minutes to watch something, at least in the small subset of data we pulled at the time.

<comment><USER31> Wording looked fine to me. guess you cant please everyone eh.

</comment></comment></comment></comment><comment><USER32> What I don't get from the article:

Why could people in low-bandwith regions suddenly watch YouTube videos? Having the website itself down to 98KB is fine (which still took 2 minutes to load in some areas). But then you only get the first video frame.

So then you'd go and watch a video and that file is still the same size (several megabytes at least), which should take them still hours to load the entire video.

I understand that less requests and a smaller page weight does matter and I try to keep my webpages as light as possible, but YouTube seems to be the least interesting example for that, since the content itself can't be reduced much further without reducing either the image quality or the screen size.

</comment><comment><USER33> Re: Page Weight.

I spend a bit more than a month studying how to build Nuuton in a way that it did not end up being a front-heavy piece of crap. Looked at a lot of differents options. Considered a client side Javascript MVC frameworks. Looked at the CSS side of things. Went as far as thinking about developing our own little app for Nuuton (No browser needed). But at the end, the simplest choice won. I decided to go with flat HTML/CSS. No bootstrap or framework either. Plain old markup and stylesheets. It uses very little Javascript (no Jquery either), just what the simple UI requires (an event listener for the enter key, and an event listener for 4 links). Nothing else. No animations. No fancy scrolling. No caroussels. Nothing like that. Its rendered on the server side (Django), and gets served to you in a very small package. I even went as far as breaking down the stylesheets so that you dont need to download CSS that does not apply to the page you are visiting. And you know what? It works, feels, and looks amazing. Even if the project ends up being a failure, acheiving such little victories are just deliciously fun.

Where did I get the inspiration to go against the current industry trends? HN's simple yet functional html setup. My god, its features a million tables, but the damn thing just works beautifully. By the way, Nuuton also uses tables. :)

<comment><USER34> Mind telling us what Nuuton is?

<comment><USER33> A new type of search engine. We call it an information engine, but just think of it as a seach engine that covers much more meta information than anything out there. nuuton.com to see the landing page. If you want to get an early look at it just email me.

<comment><USER34> Landing page doesn't help much.

Web search engine I presume? What do you mean by "covers much more meta information"?

</comment></comment></comment></comment><comment><USER23> It would be nice if newer browsers could start including average speed data in the http header. Then you could have servers that would offer up more or less weighty versions of the website based on projected load times. For browsers not attaching this header info, you could just assume the worst case scenario.

Even if maintaining multiple versions of the site would be a pain, it would at least be nice to do something like this during a site redesign. If a user has a fast enough connection, and load times aren't projected to be terrible, serve up the new heavier site. If not, serve up the older site. Then you could get some metrics about what percentage of your users still need the old design around, and how important it would be to cut weight on a redesign if needed.

I'm a technical lightweight so i might have messed up some of the details, but hopefully the idea is still interesting.

</comment><comment><USER35> > traffic from places like Southeast Asia, South America, Africa, and even > remote regions of Siberia

...and now someone will figure out that this traffic isn't generating any revenue and you'll be back to catering the folks with high bandwidth and deep pockets.

</comment><comment><USER36> Posting from Egypt. On a good day I might be able to download 100kB/s, usually during evenings it's more like 10kB/s with high packet loss & latency.

I often use Opera Mini, because most browsers and sites are just unbearably slow or do not work at all.

</comment><comment><USER37> All of you people pointing out that AdBlock and NoScript and using w3m really helps reduce load times:

you're right. And missing the point.

A large chunk of the world is permanently bandwidth starved, and most of the mobile world lives on transfer caps and long latencies. If those are plausible scenarios for your audience, you need to reduce the quantity of invisible bits you are sending them.

What's an invisible bit? Any bit that does not directly create text or images on the screen is invisible. Anything that runs client-side. Some of it may be necessary, but most of it is probably boiler-plate or general-purpose when what you actually need is more limited. Reduce!

</comment><comment><USER38> There's a great resource for testing page load speed for different browsers/locations/connection speeds.

Frankly, I'm stunned that they run this at no cost.

<http://www.webpagetest.org>

</comment><comment><USER39> I live less than one and a half miles from the centre of a major European city. We currently get 0.24Mbits/s download and 0.37Mbits/s upload on ADSL over the phone line. My broadband provider's help line have confirmed no faults on line, or with my router (I've swapped the cables, router, and tried several computers). They think its an automatic profiling change because we are often away from home and switch the router off. I'm battling my way through the help line 'levels' which is proving to be 'interesting'. I may go to a smaller more expensive provider in the new year just so I can run an rdp session and get an interface I can work on.

The low bandwidth experiment has been educational. On Firefox/Ubuntu, you get the little status bar at the bottom that shows the requests. Some pages have a _lot_ of those, and take ages to load. Distro-hopping is feasible (I'm trying out different interfaces), a CD-ROM downloads overnight quite easily. Software updates are a killer (go and have dinner, listen to some music...).

I've started using a command line web client (w3m in my case) to get to the text more quickly. You get to see which sites have 'skip to content' links embedded early in the page and with CSS set to not show them on Firefox. You also get to see which sites provide all content via html and which sites 'wrap up' their content in javascript functions &c.

As many here provide Web content and applications, just try a command line Web browser on your site...

<comment><USER40> I'm three miles away and I easily get 3 Mbps. Check your line (mostly attenuation and SNR). I've got 53dB attenuation and a SNR (ratio) of 10dB. Plus, uptime is pretty good (over 13 days now).

<comment><USER39> They claim to know that it is not the phone line itself. What are you using to measure the attenuation/signal to noise? I have to say the upload speed being _faster_ than the download speed, together with the lack of any drop-outs or instability in the connection did make me wonder about rate limiting.

</comment></comment></comment><comment><USER41> Feather even exists today: <http://www.youtube.com/feather_beta> and works as far as I can tell. You can opt into it using the link.

</comment><comment><USER42> This has been available in the Google Web Toolkit since 2006. I'm not sure why a Google employee would not have been aware of it. If you use GWT, only the bare minimum of resources (JS) are loaded to render the landing page. Further JS will be loaded for subsequent pages/actions as needed. Images and CSS are inlined too so that there are no requests for them. "Perfect caching" of resources is built in through MD5 names for resources so that with a simple apache filter you never download static content twice.

I'm glad to Feather worked so well. It always drives me nuts when some major site/portal needs 250+ requests to load. If you like the sound of it (only 3 requests to load a complex app), checkout GWT as you get all of these optimizations (i.e. Closure) and more by just compiling your web app.

<comment><USER43> YouTube is written in Python, which was just bought by Google around 2006, not even developed in house. Not even Gmail uses GWT last I checked...

</comment></comment><comment><USER44> I had this argument about 4 years ago with a young colleague who said I was out of date, and I am not a developer. Brett Tabke of Webmasterworld.com has been arguing for years that lightweight matters. It used to matter for dialup in the USA, now with widespread broadband it is less important to those people. Now it is important for mobile users and global users on dialup or slow connections. In a few years it will matter to the people that got their first android phone in some country with poor infrastructure.

Even personally it matters to me :) since I live in a 50 year old house that has slow DSL (YouTube buffers constantly) and I live in the center of Tucson, AZ.

I recall Google doing a study that increasing the speed of browsing increases the use of the internet. Page weight will always matter to someone.

<comment><USER45> _Page weight will always matter to someone._

I'd even go further and claim it matters to everyone in some situations. Open youtube in one tab to listen to a long lecture, open more tabs.. slim webpages still load fast, but "regular" (derpy!) ones take ages.

And then it's also a resource. I turn water off when I don't need it, because wasting water sucks, not because I cannot afford wasting some. Why should bandwidth be much different? I'm all for using what you need, or for making experiments, but the quest for shinyness over content, putting _all_ sidebars on _all_ pages, including jquery plugins and whatnot at the drop of a hat etc.. all that leads to crappy sites and a crappy infrastructure. That is, the same infrastructure could allow people to achieve much more, if more sites were spartanic like, say, HN ^^

Because at the end of the day, I don't even care if I notice it. That argumentation is lazy and shortsighted. See, if the site loads in 200 ms instead of 250 ms, and I load the site a thousand times per year, that's 50 seconds per year -- over 10 years that's over 8 minutes. That may not sound like much, but consider that this is not the only site, and that I am not the only human (and that load time reductions of much more than 50 ms would be possible on a lot of big sites). In total, the amount of time wasted by petty BS is probably quite staggering.

</comment></comment><comment><USER46> While I appreciate (and agree with) the overall theme (Make your pages light, so people on < 10mbit/second links have access them, opening them up as a market to you - this works well for people on older GPRS/GSM links in the developing world) - I don't understand the math. Presuming there are parts of the world still stuck in 1997 analog modem technology, then 100 Kilobytes / 56.6 kilobits/second = 14 seconds.

At two minutes, there are people out there with 6.6 kilobit links connecting to youtube?

I suspect there might be a bit of hyperbole in this article as well, because, even if there were people connecting on ultra slow links, the average latency of those connections is likely to be be wiped out by the tens of millions of broadband links.

<comment><USER47> Most of the page-load delay tends to come from dropped packets and unnecessary round-trips, rather than from bandwidth limitations.

<comment><USER48> So "page weight" isn't the issue then, contradicting the title. It's the pipeline depth of the page.

<comment><USER49> Dropped packets are directly related to "page weight" and get worse depending on latency.

400 round trips * 500ms latency is 3 min 20 seconds. This took 20 minutes to load 1 megabyte.

<comment><USER50> In other words the bandwidth really is something like 6.6 kbps instead of the nominal rate.

(Really, did anyone ever get the nominal 56k modem rate back in the day?)

<comment><USER39> Yes as it happens, pretty close. Unfortunately British Telecom had a policy of dropping data connections after 2 hours in those days...

</comment></comment></comment></comment></comment></comment><comment><USER51> Indeed, many who extol the virtues of cloud computing somehow have a blind spot to the fact that network coverage on this globe is not even. Actually it would be nice to see a color coded world map of network strength, is there one?

Bad network coverage is a problem that can be addressed many ways. Shameless plug: I've been working on offline wikipedia that by its nature is always available and fast, everywhere: <http://mpaja.com/mopedi> I'm sure there are many unexplored niches where the cpu power in your hand can be put to good use without needing the network.

</comment><comment><USER52> What about compression? Is he talking about gzipped size or the uncompressed page?

</comment><comment><USER53> My experience is this is most applicable for medium to large sites with very healthy monthly uniques. But it is excellent advice for all, particularly as more and more mobile devices access your site.

Some excellent best practices from the Yahoo team here on how to increase front-end site performance (which can account for "80% of the end-user response time"): <http://developer.yahoo.com/performance/rules.html>

</comment><comment><USER24> > places like Southeast Asia, South America, Africa

Large swaths of South America have broadband access. I guess South Africa does too. Being a little more specific would be helpful.

<comment><USER54> While South Africa does have broadband access, most people sit on sub 3GB caps. The actual broadband penetration is also low - 2% for fixed line, and 11% for mobile access. The mobile broadband (3g) is metered per mb and frequently drops down to edge. It is improving, but as with the rest of the developing world, if you want to actually target most users you need to use SMS or very basic html sites that can work on older S40 Nokia phones and blackberries.

Obviously a fancy desktop sized page that relies on java script is just completely out.

</comment></comment><comment><USER55> This post makes a ton of sense. I spent a year traveling in the developing world a couple years back and was literally unable to watch a YouTube clip the entire time. It's amazing what parts of the Internet you can't see the moment you're on an insanely slow connection.

I was in Myanmar for a bit and their internet was so slow that I couldn't check even news or email -- no need for a China-style firewall.

</comment><comment><USER56> This post prompted me to commission a script that calculates itemized page weight: [https://bountify.co/ruby-script-to-display-itemized-page- wei...](https://bountify.co/ruby-script-to-display-itemized-page-weight-of-a- website).

</comment><comment><USER57> Oh, I totally know it does because I've been stuck on and off on slow connections recently -- and a lot of pages (HN is big and awesome exception), load quite slowly. I even ended up using gmail's HTML interface for a while.

<comment><USER57> Right after writing this post I see OSFlash (Open Source Flash) on Canasse's profile. (Got there via <https://news.ycombinator.com/item?id=4956809>)

</comment></comment><comment><USER58> Simpson's Paradox ftw!

</comment><comment><USER59> I thought this was the reason apps existed: to cut down loading time. I hate it so much when someone, in their app embeds a browser and load their site.

</comment><comment><USER60> We are working on the same thing, get site as lightweight as possible! Oh man, thinking that for somebody site takes 20 min to load makes me cringe!!!

</comment><comment><USER61> So the code to load the videos came in under 100KB. How large were the videos themselves?

<comment><USER62> Keep in mind the request count too - lots of small packets can be considerably slower than their net size would suggest, especially if one gets dropped.

</comment></comment><comment><USER63> Can someone with data give me a comparison of the people with the slowest connections and which browsers they use?

<comment><USER64> Posted above: <http://i.imgur.com/JSQ48.png>

</comment></comment><comment><USER65> I'm not really sure this post provides any useful information.

<comment><USER66> The interesting bit is the somewhat paradoxical result of longer load times after optimization, due to the page suddenly being more tolerable to use by those with slow connections. This is similar to the (somewhat controversial) idea that adding new lanes to highways can increase congestion [1]. That may not have any apparent direct application for the general developer community, but it's at least a modicum more useful than your comment.

[1] <http://www.fhwa.dot.gov/planning/itfaq.cfm>

<comment><USER67> > _This is similar to the (somewhat controversial) idea that adding new lanes > to highways can increase congestion_

This is non controversial and known as Braess's paradox[0]: changing the graph characteristics alters the Nash equilibrium solution for a worse one (i.e the Nash equilibrium is not optimal).

[0]: <http://en.wikipedia.org/wiki/Braesss_paradox>

<comment><USER39> <http://en.wikipedia.org/wiki/Braess_paradox>

Thanks for link, your url has one too many s characters on the end</comment></comment></comment></comment>


Why climagic chose to highlight ways to circumvent the SOPA blackout - <AUTHOR> http://www.climagic.org/txt/anti-sopa-protest.html <comment><AUTHOR> I'm not sure s/he was saying just this, but the point "since we love circumventing content protections/limitations so much, let's circumvent these!" is a funny/ironic/poignant one, in my opinion. Personally I disagreed with climagic's statement about "fighting anti-censorship censorship" ( @climagic you'd prefer to stay quiet and wait 'til there really IS no more wikipedia/reddit/worpdress.com, I suppose?), but I think the points he/she raises are valid. To what extent do we tell ourselves pirating is OK just out of personal expediency?

NOTE: I am not trying to restart/rehash the piracy debates of the past few days; I see this piece as a new angle/perspective on the issue.</comment>


Machinery – An asynchronous task queue - <AUTHOR> http://richardknop.github.io/machinery/

<comment><AUTHOR> So I have made a post on HN about three months ago when I came up with the prototype but I have done a lot of work since then, added new features, improved the codebase and fixed some bugs.

I'd be glad to get any new feedback about the progress I have made and suggestions for future development focus.

</comment><comment><USER2> How does this compare Metafora ([https://github.com/lytics/metafora](https://github.com/lytics/metafora))? Is it a slightly different domain?</comment>


Touchless 3d Tracking Interface - <AUTHOR> http://makeprojects.com/Project/A-Touchless-3D-Tracking-Interface/2233/1#.UCWJSshWoyu

<comment><USER2> Sweet. I keep thinking I need to make something with Arduino. Even if it is just duplicating someone else's project just to get a feel of how it all works. Earn the 'engineer' in 'software engineer'.

<comment><AUTHOR> Arduino's are a ton of fun, but I think the biggest barrier to entry, when coming from a programming background, is the electrical engineering stuff. The language they use is very similar to C. But to do things like wiring up an input button and an led, you end up needing to learn about Ohm's law and pull- down resistors. It amazed me how different analog and digital environments are, and how much we take for granted in our programming environments</comment></comment>


2011 Staff Predictions - <AUTHOR> http://www.readwriteweb.com/archives/2011_staff_predictions.php

<comment><USER2> Some really interesting ones here - and interesting to see where some cross over with: <http://news.ycombinator.com/item?id=2060782></comment>


User Acquisition, from the Trenches - <AUTHOR> http://blog.hrck.ca/post/75737598813/user-acquisition-from-the-trenches

<comment><USER2> I was hoping you'd go into more details than this. What I gathered from this post:

\- Riding on backs of tangentially related companies (I don't mean that in a bad way) was okay, but no conclusive numbers shared.

\- Cold emailing: Worth the effort, but no numbers shared.

\- Hacker News exposure: no visible effect.

\- SEO: ?? Coming soon

Are you just cautious about sharing business metrics (even some?), or could you be tracking your acquisition channels better?

For anyone else who's trying different approaches (as you should be), please take the time to set up your analytics... It's not _that_ hard, and it will pay off ten-fold because you'll learn what's worth spending your precious time on, and what isn't. I'd be happy to answer any general questions about this or offer help.

<comment><USER3> Hey Greg, awesome feedback. This definitely wasn't meant as a quantitive analysis of our acquisition channels, as you point out. The goal was to elaborate on what channels we use, and how our strategy has changed.

I definitely agree, there's nothing wrong with riding the backs of related companies! It's an amazing way to grow, if things align.

If there's enough interest I'd like to explore a more metrics driven post -- we definitely have that data :)

</comment></comment><comment><USER4> There seem to be at least a couple of spelling/grammar errors on the Stripe post, fyi.

we'll >>merges<< the information

You have an email >>provder<<

<comment><USER3> Thanks for the note, looks like someone doesn't have spellcheck enabled in Vim.

Edit: Fixed! In case anyone is wondering, here's a quick tutorial on how to enable spellcheck in vim: [https://www.linux.com/learn/tutorials/357267:using- spell-che...](https://www.linux.com/learn/tutorials/357267:using-spell- checking-in-vim)

</comment></comment><comment><USER5> Heads up - the first link to Sendwithus is broken.

<comment><USER3> Thanks shravan, fixed that now!

</comment></comment><comment><USER6> Fantastic guys and an amazingly effective tool.

<comment><USER3> Let firstname.lastname@example.com know what you like best and we'll send you a surprise :)</comment></comment>


Getting two AI bots to talk to each other - <AUTHOR> http://www.thepursuitofquality.com/Post/1/The_Pursuit_of_Artificial_Intelligence_-_Part_1.html

<comment><USER2> Awesome results. Sometimes quite lucid (better than some conversations I've had...), sometimes pure randomness.

Personal favorite so far: <http://pastebin.com/4Q81v7yp>

edit: oh wow.

      perl: Think sideways!
      ruby:
      perl: Where have all the berries gone?

I could _swear_ I've had that _exact same conversation_ before...

<comment><AUTHOR> Besides the pure randomness, I find it interesting how a lot of the conversations end up taking on a hostile tone.

<comment><USER2> I wonder how much of the human-responses are used to train the bot. It'd explain a lot of the hostility and randomness... I know I tend to make weird responses to bots, to see what kind of weird responses I can get back.

      bot: what are the ingredients to that?
      me: Tea.  Earl gray.  Hot.

</comment></comment></comment><comment><USER3> Of course Eliza [1] is a famous AI bot, but I laughed quite a bit when I learned (on PAIP) that they wrote a program to simulate a paranoid schizophrenic (PARRY) and made then talk to each other [2].

[1] <http://en.wikipedia.org/wiki/ELIZA> [2] <http://en.wikipedia.org/wiki/PARRY>

</comment><comment><AUTHOR> This was a series I wrote last November and today realized that the HN community may appreciate them.

Part 2 is here: [http://www.thepursuitofquality.com/post/2/the-pursuit-of- art...](http://www.thepursuitofquality.com/post/2/the-pursuit-of-artificial- intelligence-part-2.html)

Part 3 is here: [http://www.thepursuitofquality.com/post/3/the-pursuit-of- art...](http://www.thepursuitofquality.com/post/3/the-pursuit-of-artificial- intelligence-part-3.html)

<comment><USER4> As someone that enjoys crackmes, I found these posts fascinating - thank you very much :) It's interesting to see some reversing techniques for web services.

<comment><AUTHOR> My pleasure - I'm glad you enjoyed it!

</comment></comment></comment><comment><USER5> I wrote a Python script using a Cleverbot library that got it to talk to itself. The conversations actually weren't bad and you could sometimes see personalities form between the two. It makes me wonder whether the AI is designed so small differences early on between the two bots will eventually cause large divergences.

Also, it was funny to see them both call each other bots.

</comment><comment><USER6> Give them twitter accounts and get them following each other

<comment><AUTHOR> That's not a half bad idea... I'll stow that one away for later!

</comment></comment><comment><USER7> I ran it three times and enjoyed the output each time.</comment>