Show HN: Perceptual hashing tools for detecting child sexual abuse material - <AUTHOR> https://github.com/thorn-oss/perception <comment><AUTHOR> Hi HN! I'm a data scientist at Thorn, a non-profit dedicated to defending children from sexual abuse. We're excited to open source some elements of our perceptual hashing tooling as a Python package. We've tried to make it very flexible both for ourselves and hopefully also for others. Our aim with is to provide tools that (1) help more people eliminate child sexual abuse material from the internet and (2) assist with common tasks where perceptual hashing can be helpful (e.g., media deduplication). We hope you'll take a look, get some use out of the package (check out the example use cases), and even contribute feedback and/or code to make it better.

For more information on the issue, I urge you to check out our CEO's TED talk here: [https://www.thorn.org/blog/time-is-now-eliminate- csam/](https://www.thorn.org/blog/time-is-now-eliminate-csam/)

Documentation for the package here: [https://perception.thorn.engineering/](https://perception.thorn.engineering/)

<comment><USER2> If I may, I'm curious about your thoughts on few things, in the context of use case #1 (abuse), not #2 (reduplication):

* What are the challenges surrounding verification that your system functions properly, given that the test material is illicit?

* Can you speak to the reliability of the system in a sensitivity/specificity kind of way? In other words, what are the false positive and false negative rates?

* Are you aware of any large organizations leveraging your solution?

* Do you feel that the availability of these tools obligates service providers to use them, either morally or legally?

<comment><AUTHOR> Thanks for asking these important questions!

* What are the challenges surrounding verification that your system functions properly, given that the test material is illicit?

You're right that storing child sexual abuse material (CSAM) is illegal, unless you are the National Center for Missing and Exploited Children (NCMEC) or law enforcement. What is legal is to maintain a hash of known CSAM. NCMEC, Law Enforcement, and large tech companies maintain their own data sets of known CSAM hashes and, where appropriate, share them. The Technology Coalition [1] has more information on this. All that said, we can and do simulate the system to verify that it works properly using bench testing with non-illegal content [2].

* Can you speak to the reliability of the system in a sensitivity/specificity kind of way? In other words, what are the false positive and false negative rates?

The false positive rate in practice is very low. We set our thresholds based on bench tests with an expected false positive rate of less than 1/1000 (the thresholds vary based on which hash function was used). Different hash functions are more resilient to some transformations than others (e.g., cropping, watermarks, etc.).

For the false negative rate, it depends entirely on the kind of modification made to the image. For many common operations, it is close to zero.

* Are you aware of any large organizations leveraging your solution?

Thorn builds technology to defend children from sexual abuse, one of the products we build for this purpose is Safer [3]. Perception provides an easy way to get started using the Safer matching service. Safer provides a more robust and complete solution including handling a queue of content and reporting tools. Some organizations using Safer include Imgur, Flickr, and Slack.

But this technology (perceptual hashing) is used by many companies who don't use our tools. Our goal is just to make it easier for more people to get started.

* Do you feel that the availability of these tools obligates service providers to use them, either morally or legally?

Not being a lawyer or a public policy expert, what I can say is that the law, as I understand it, requires companies to report CSAM once they are aware of it. Working in this field I've learned two things pertinent to this question: (1) Most people don't know how pervasive of an issue this is, and (2) There aren't a lot of easy ways to start protecting your platform from this abuse. No one wants the cool new products and platforms they make to be used to abuse children. Privacy is important too, which is why solutions that preserve privacy and avoid leaking private information to third parties are critical, and perceptual hashing allows us to do both.

[1] [https://www.technologycoalition.org/](https://www.technologycoalition.org/)

[2] [https://perception.thorn.engineering/en/latest/examples/benc...](https://perception.thorn.engineering/en/latest/examples/benchmarking.html)

[3] [https://getsafer.io](https://getsafer.io)

EDIT: Line breaks

<comment><USER3> A false positive rate of 1/1000 is hard to assess without actual prevalence stats, but with a decent-sized userbase it seems likely you're still going to get a significant number of false positives. Is it intended that users of your system would have employees manually vet all positives (with legal and mental health concerns) or just submit them without review? I'm coming from having built tools to support a large manual sweep in the 2000s and watching the toll it took on my coworkers.

<comment><AUTHOR> Great question — organizations decide how to handle reviews internally. So the answer to your question on "review all" versus "automatically submit" is a, perhaps unsatisfying, but honest: it depends. We provide a guide [1] to help organizations formulate their own policies. And we're currently working on a content moderation tool that focuses on helping organizations operationally handle problematic content and considers the wellness and resiliency of reviewers.

[1] [https://www.thorn.org/sound-practices-guide-stopping- child-a...](https://www.thorn.org/sound-practices-guide-stopping-child-abuse/)

<comment><USER3> Oh good, I'm sure most organizations can use something like that guide as well as the tools. There's a lot of legitimate worry about both the wellness side & the legal exposure issues, but it seems like beyond the common wisdom to be very careful (somehow) I think in a lot of minds there's a lack of clarity as to what exactly that means. Is there a particular reason access to the guide requires handing over contact information?

</comment></comment></comment></comment></comment></comment><comment><USER4> If you dare to look into this topic, please also take a moment to look to another child protection non-profit[1] that (quite unusually) considers human and civil rights and sex positivity as one of its core values.

You might feel uneasy about "sex positivity" being associated with preventing child sexual abuse. They also have a lot of other messages that might initially repel you. But I also think that "when you associate shame and guilt with sex, you are facilitating sexual abuse"[2].

Here is a relevant Twitter thread about CSEM content filtering[3] and the secrecy around it. Secrecy that got them ejected out of a public National Center for Missing & Exploited Children meeting merely for tweeting about what was being said.

This Show HN open source project by Thorn seems to be an enormous improvement on that front. Would it be resistant to adversarial hashing (false positives)?

In my opinion, Thorn focuses way too much on technological solutions, and has an outright hollow message beyond that. Looking at 10+ of their website's pages, they don't dare to try to confront or explain the actual child sexual abuse itself, but only its most visible ill effects.

[1] [https://prostasia.org/about/](https://prostasia.org/about/)

[2] [https://prostasia.org/blog/the-weapon-of- shame/](https://prostasia.org/blog/the-weapon-of-shame/)

[3] [https://twitter.com/ProstasiaInc/status/1178783074328424448](https://twitter.com/ProstasiaInc/status/1178783074328424448)

<comment><USER5> I think it's good you posted this; the goals listed on the first link seem very reasonable to get behind, and it's something both I and researchers in child sexual abuse material (e.g. Amy Adler's paper, which is one of the most cited in the field) have noticed. The rhetoric of "think of the children" can be and has been used many times to silence sexual activity between adults, including fictional representations (such as manga and comics, some of which are illegal to possess in the UK), kinks (online ageplay roleplay is often targeted under obscenity law, despite being between two adults), and other cases.

In my view, the protection of children based on hard evidence showing causal links is paramount, not suspicion and anecdota (it was, in fact, anecdota given before Parliament which was used in the creation of the bill in England and Wales to illegalize _lolicon_ manga) based on the "social harms" that seem obvious at first sight but are refuted by cultural anthropology (e.g Patrick Galbraith and Mark McLelland have come to very interesting conclusions regarding how adults consume fantasy material). There is no group to fight for the few thousand people caught under this law so far (according to the English VAWG report 2017), nor do I imagine their being. The organization you linked seems, at least, to have this sort of thing on the agenda.

</comment></comment><comment><USER6> I don't get it. Sound nice but what exactly does Thorn do? what is this spotlight services they're providing? Seriously I've just spend time on their site but I don't get it beyond "using data". How they use it?

Lets say I have friends in a local DA office and I want to sell them this idea of using data they have. They just know that giving access to their data is a big legal headache. what exactly to I tell them to get them on-board with this? ( _exactly how the data / what data is handled?_)

</comment><comment><USER7> How did you build, label and store your dataset ? What's the legal framework for manipulating such data ?

</comment><comment><USER8> What are some of the ways you can improve on the n-squared nature of these distance calculations at scale?

In your use case you have a limited set of hashes you are comparing against, but I'm thinking of the more difficult use case of comparing every image against every other image (the context is ML training and weeding out overly similar examples so that overfitting doesn't happen, not related to CSAM). This quickly becomes untenable if you get, say, millions or billions of images.

"Don't do that" is one answer but are there any other ways you have come across to mitigate that?

<comment><AUTHOR> Hi there! Our example on deduplication [1] takes the case of deduplicating of the Caltech256 [2] dataset for the purpose I think you're describing, which I interpreted as avoiding duplicates in a dataset so that you don't have images that end up in both your training and test sets. Even though the dataset contains >30K images, you can still do this in memory (and find a handful of duplicates!) because each category is relatively small and you probably don't need to deduplicate images of trains with images of dogs.

On the same page, we mention two tools (specifically, FAISS [3] and Annoy [4]) to help with doing approximate search for scales where computing the distance matrix is impractical.

[1] [https://perception.thorn.engineering/en/latest/examples/dedu...](https://perception.thorn.engineering/en/latest/examples/deduplication.html#real- world-example)

[2] [https://authors.library.caltech.edu/7694/](https://authors.library.caltech.edu/7694/)

[3] [https://github.com/facebookresearch/faiss](https://github.com/facebookresearch/faiss)

[4] [https://github.com/spotify/annoy](https://github.com/spotify/annoy)

<comment><USER8> One more thing: I tried the different hashes that would run on my system (some had a dependency on opencv-contrib that was not met, and which python -m pip couldn't find) and found they aren't what I'm looking for. They may be good at finding different versions of the same image, but what I want is more like environment similarity. So that two pictures taken on the same street would be closer than a picture of the street versus a picture of a forest. They don't seem to be tuned for this task at all. So, my search continues. Let me know if you have suggestions on this as well.

<comment><AUTHOR> Perceptual hashes in this family will probably not be the right fit for that use case. There is work out there to build hashes that are intended to find find semantically similar content, typically using CNNs. Imagededup [1] seems to have one of these though I have never used it myself.

[1] [https://idealo.github.io/imagededup/](https://idealo.github.io/imagededup/)

</comment></comment></comment></comment><comment><USER7> How do you defend against semi transparent overlaying ?

Take an image you want to censor, overlay with a very transparent offensive image. Also publish the original image (or a second image with a different transparency value), and an in-browser extension can reconstruct the offensive image.

Your hash database will be flooded with wrong values.

<comment><USER9> That seems like symmetric key encryption with extra steps.

<comment><USER7> This is a general attack against perceptual hashing. It tries to achieve multiple objectives. Using stenography you could add any data in the image, like you would with encryption as you suggest. But here it is deeper.

By superposing a very transparent bad image with the good one, the perceptual hash won't be affected but the image would be still labelled as offensive by the poor guy labeling the data because the transparent offensive image is still visible. This mean that the good data will be marked as potentially offensive.

This allows anyone to target any individual user, or website. You take some of their published content, overlay offensive image and republish. The image will be reported as offensive, yet have a similar hash (i.e. a collision) to the good image which automated systems will pick-up as the original image being offensive and blacklisting its user or tanking down the website on search engine results.

Because this is sensitive data, by law it should be deleted as soon as it is detected which means the proofs get deleted automatically.

</comment></comment></comment><comment><USER10> When I read about something like this, I can't help but wonder, how do you deal with error analysis and such? I personally would not be able to view such disturbing and revolting material. And if you don't do error analysis, how do you know this stuff actually works?

</comment><comment><USER11> Reminds me of [https://github.com/CIRCL/douglas- quaid](https://github.com/CIRCL/douglas-quaid) which also use SIFT-similar techniques in addition to perceptual hashing

</comment><comment><USER12> Seriously this is a topic that I can't imagine having to think about :-/

I really hope that there's support in place for people who have to work on this, even if they aren't exposed the actual abuse.

</comment><comment><USER13> Without reading the link, can this be used to help find child porn? If yes, are there any steps you can or are going to take in order to prevent this?

<comment><USER14> It only filters images already there - child porn isn't already among the chaff only thing it can find by definition would be false positives. Which could be an interesting vetting exercise in itself - feed in tons of cat pictures until it dings on one as inappropriate.

Technically you can always try cycling through image combinations match the hash/looks like child pornography and nothing could technically prevent it except that it would take a very, very, long time.

Even given adversarial networks I would be very surprised to get anything more than vague figures and I don't even expect the result to look human. In which case it is really generating instead of finding.

</comment></comment><comment><USER15> This is great work. Not often we see posts about using tech directly for humanitarian efforts!

</comment><comment><USER16> From what I've read, this is supposed to catch the bad thing after it happened, not to prevent it. Then you say that 1 in 1000 is an acceptable error rate. 1 in 7 billions is not an acceptable error rate!

<comment><USER17> > _" Then you say that 1 in 1000 is an acceptable error rate. 1 in 7 billions > is not an acceptable error rate!"_

When systems like this return a positive match, that doesn't result in a summary execution. Rather, it prompts a deeper investigation.</comment></comment>


HEVC new license - <AUTHOR> http://www.streamingmedia.com/Articles/Editorial/Featured-Articles/HEVC-Advance-Releases-Revised-Licensing-Terms-108230.aspx <comment><USER2> I think it's already too late. Maybe not for this generation of codecs, but it's game over for MPEG-LA for the _next generation_ of codecs. Mozilla, Google and Cisco are all working on the new NETVC standard that will be standardized by the IETF in 2-3 years. HEVC will start being replaced then by an open standard, even if MPEG-LA comes out with HEVC 2.0 or whatever.

<comment><AUTHOR> All the TV are HEVC based today, Windows/Apple/Android can push an update in 1 hour to cover 99% of the users in the world and in 1 year we can see new smartphone has hardware-based capability (not only software based).</comment></comment>


Featurewhack - <AUTHOR> http://robertheaton.com/2013/02/24/featurewhack/

<comment><USER2> Great article, but not quite sure about the final bit of advice. Even if you gradually build your software in layers you might be faced with exponential complexity. If you are releasing early, then you also have the "legacy data" issue along with users who are just getting used to the interface. Change will be always met with resistance.

A harder but definitely more powerful approach is to build more isolated pieces of functionality with well defined interfaces. A conscious effort to minimize the feature interdependence definitely pays off in the long run. A team of moles is harder than an uncoordinated mob!

<comment><USER3> Layers should abstract over details, and eliminate entire classes of bugs if used properly. You don't see much discussion on it here, but it's a necessity if you're writing software for the long haul.</comment></comment>


Does a small startup have a chance on hard problems? AtD vs. The Spell Checker Poem - <AUTHOR> http://killall.dashnine.org/2009/05/the-spell-checker-poem-shootout/

<comment><AUTHOR> This is work in progress. I'm working on grammar rules now. Last night though I posted the spell checker poem in just to see how the system would respond to it and I was really surprised (sometimes we're our own harshest critics). I have a plugin for Wordpress too at <http://www.afterthedeadline.com>

<comment><USER2> Did it really get the correct word for the first "weigh"? (which is "away", not "way")

<comment><AUTHOR> Hah, ok score -1 me. It didn't. It came up with way (which was prefixed by a). I think you'll forgive me as that piece is something of a landmine.

</comment></comment></comment><comment><USER3> This is pretty neat to see. But this is probably the wrong metric to use to measure performance of a spell checker. In the real world you don't want to spell check writing that is 0.5 spelling mistakes per word, and many of these misspellings are not representative of how people actually misspell words. (Who would actually type "mist ache" for "mistake"?) Also, this may just reflect the fact that you have your thresholds for tagging a misspelling set lower. For good metrics you would want to have a large corpus of real documents and measure both the false positive and false negative rates.

(To be fair, the author probably knows this stuff already, and is just having fun.)

<comment><AUTHOR> I'm the author: There are two types of spelling errors, real word and non-real word errors.

A non-real word error is what most spellcheckers look for. They check if a word is in a dictionary and if it isn't they generate a set of potential words from that error and then rack and stack them. AtD's non-real word spelling corrector uses a dictionary gleaned from the intersection of many wordlists and a corpus of text. The rating of each correction is handled by neural networks. It's all fun and I have carefully measured, tweaked, and remeasured this part of the technology. I also reproduced an experiment conducted by some Polish researchers in 2005 and used their data to find out how I compare to Office 2003. I learned my dictionary needs more work but my accuracy is on par with Office here.

The real word errors are just as serious but somehow ignored by most spelling correctors. A real word error is where you use a word that is in the dictionary but really meant some other word. You can imagine why this is difficult. I use a statistical model to try to pick the best word from pre- made confusion sets. While I was impressed with the accuracy of this I had to bias heavily against false positives making it less than what I'd like to see. I'm currently working to have the grammar checker take over or augment some words where this technology does poorly. That said, this poem is all about the real word detection and correction and I was quite delighted to see how well my code did against it anyways (even after I bias heavily against false positives).

So in short, yeah I'm just having fun.

</comment></comment><comment><USER4> I tried the demo at <http://www.polishmywriting.com/> and it found some mistakes I missed in my writing. I am impressed with it's suggestions although it suggested many technical words as spelling errors. Check it out on your writing.

</comment><comment><USER5> It seems in this case you can just break them down into sets of phonemes and do a frequency analysis to get the most common usages.

That would take care of the "Eye have"

</comment><comment><USER6> Just fyi, there are other startups in Australia that also work on this spelling problem <http://spellr.us/>

<comment><AUTHOR> Judging by the results it looks like they are using Hunspell or Aspell to do the actual checking. I applaud their well executed effort. AtD is more of a complete writing improvement solution that someone like spellr.us could use to provide their service.

</comment></comment><comment><USER7> Sounds like a great OEM play: license your technology so it becomes widespread.</comment>


Google Dissolves Search Group Internally, Now Called "Knowledge" - <AUTHOR> http://techcrunch.com/2011/05/03/google-dissolves-search-group-internally-now-called-knowledge/ <comment><USER2> Obligatory TechCrunch linkbait complaint: Since when does renaming something mean "dissolving" it?

I realize the 2nd half of the title makes it more clear, but it's still pretty blatant linkbait.

</comment><comment><USER3> > Google has seven major product groups. Advertising, Commerce & Local, Mobile > (Android), Social, Chrome, YouTube and Search.

Anyone know who owns apps? Is Gmail not represented in one of these groups?

<comment><USER4> Gmail must be part of Social.

</comment></comment><comment><USER5> The bits I found informative "... most Google products ... split between ... product lead ... engineering lead"

"One way of thinking of this, ... Singhal (enginering lead) does the weeding (removing and pushing down low quality content in search), and Manber (product lead) is focused on the seeding (encouraging "good stuff" to grow)."

</comment><comment><USER6> It makes my heart warm to hear this. It feels good to have Page directly in charge of Google.</comment>


Show HN: Gitter – Chat for GitHub - <AUTHOR> http://gitter.im <comment><USER2> (Edit: I initially thought this was _from_ GitHub. Apparently it's not, so please disregard the nagging below. It is a cool idea, but if GitHub did this, I'd have different expectations.)

I'd be all over this if it was an IRC server. Most big projects already have an IRC channel on FreeNode, so this'd be a natural fit: Provide an IRC server with a channel for each project, provide a free web client for this server with the GitHub-goodies.

But alas, apparently it's just another proprietary chat network.

<comment><USER3> Actually, FreeNode integration is something we've discussed quite a bit and could well end up in the product if there is enough interest in us putting it in. FreeNode is an incredible source of information and it would be a pity not to use it.

<comment><USER4> This would be the killer feature to add. Users should be able to communicate to freenode, and vice versa, while being able to do all of the management functions.

</comment></comment></comment><comment><USER5> Error:

failed to fetch user profile (status: 403 data: {"message":"Maximum number of login attempts exceeded","documentation_url":"[http://developer.github.com/v3"}](http://developer.github.com/v3"})) at Strategy.userProfile (/opt/gitter/landing-app/node_modules/passport- github/lib/passport-github/strategy.js:90:28) at passBackControl (/opt/gitter/landing-app/node_modules/passport-github/node_modules/passport- oauth/node_modules/oauth/lib/oauth2.js:105:9) at IncomingMessage.exports.OAuth2._executeRequest.request.on.callbackCalled (/opt/gitter/landing-app/node_modules/passport-github/node_modules/passport- oauth/node_modules/oauth/lib/oauth2.js:124:7) at IncomingMessage.EventEmitter.emit (events.js:126:20) at IncomingMessage._emitEnd (http.js:366:10) at HTTPParser.parserOnMessageComplete [as onMessageComplete] (http.js:149:23) at CleartextStream.socketOnData [as ondata] (http.js:1472:20) at CleartextStream.CryptoStream._push (tls.js:544:27) at SecurePair.cycle (tls.js:898:20) at EncryptedStream.CryptoStream.write (tls.js:285:13) at Socket.ondata (stream.js:38:26)

Guess it's built with node ;)

After pressing the button again, it gave me the confirmation message.

<comment><AUTHOR> Yes, node node node! :)

Um, thanks for pointing this out, will take a look at it, we may have blown through the rate limit.

<comment><USER6> Isnt echoing errors like that a security issue? Im not implying it necessarly is, because it's obviously conveniently useful for debugging.

<comment><USER7> Yup, they should log / e-mail themselves the error messages when in production rather than displaying them, sensitive info might leak plus stacktrace aren't very friendly.

Looks like they might have left the connect.errorHandler() dev middleware ([http://www.senchalabs.org/connect/errorHandler.html](http://www.senchalabs.org/connect/errorHandler.html)) plugged into their app.

</comment></comment></comment></comment><comment><USER8> You guys should offer this for github enterprise. Any form of integration would also be nice (an IRC or XMPP bridge) because I don't want yet another chat client on my desktop, and alerts from web clients don't cut it...

...slightly offtopic, on the alerts: chrome's rich notifications pop under apple's desktop notifications, and neither let me capture the notification and have the system voice _read_ it to me rather than flash up in a corner that I'm not looking at. But campfire's in-browser notifications are the worst of all, some random tab beeping when I have 100 open.

<comment><USER9> Yeah, github enterprise definitely makes sense, and it is something that we will look into.

Chrome's notifications since v28 kinda suck. Browser notifications have always been difficult, and in fact our www.trou.pe native app was originally just a toolbar app to solve this problem.

</comment></comment><comment><USER10> Looks pretty neat. I went to signup, but then noticed that they require commit access to my public repos. Why do you need this permission to integrate links to the code and similar features? I don't like giving out commit access unless absolutely necessary.

<comment><AUTHOR> Hmmm, we shouldn't need that. Will take a look. You can always signup and then revoke the access if you're not comfortable.

Thanks for pointing out.

</comment></comment><comment><USER11> I don't really like the idea of signing up with my github account. But I like the idea of Gitter.

One small improvement: Link the "@GitChat" on the confirmation page to the twitter account ;)

<comment><AUTHOR> Hey, thanks for the improvement. Done. Shipped like squirrel.

Why don't you like the idea of signing up with GitHub? Feedback will be very valuable for us, thanks.

<comment><USER12> Not the parent, but I'm reluctant to give a website access to an account I care about just for a trial. If I know that I want to use your service, sure, but not if I just want to casually evaluate it.

<comment><USER13> I agree with this, but it's better than the alternative of signing up for a brand new username / password combo!

What would you have in mind instead?

<comment><USER14> (Not parent or parent's parent)

Email and password. It's not really better to be fair

I can give a new service a disposable email address, I don't have a disposable Github/Facebook/Twitter/etc account. Not even a shred of a chance of me testing something if you're requesting anything other than the most basic of read-only permissions too

<comment><USER15> "I don't have a disposable Github/Facebook/Twitter/etc account."

Now _there 's_ a business idea: Mailinator for shady sites harvesting "social" accounts.

</comment></comment></comment></comment></comment></comment><comment><USER16> The landing page looks really slick. I was wondering, how did you create the design for it? I'm a programmer and my web design skills are limited to installing bootstrap, and I'm always fascinated, how would you come up with right color/font/layout matching

<comment><AUTHOR> Hi. Thanks so much.

I do _everything_ "in the browser" these days. No Photoshop, just straight HTML/CSS/JS in Sublime Text. That way the site starts to feel alive pretty quickly and then I just tweak stuff around until I'm happy with it.

Colours... Sometimes I use [http://flatuicolors.com/](http://flatuicolors.com/) as a starting point and then tweak it from there.

Also keep looking around at stuff on Dribble/Behance/Pinterest for inspiration. Some good guys to follow on Pinterest: [http://www.pinterest.com/robklaiss/uiux/](http://www.pinterest.com/robklaiss/uiux/) [http://www.pinterest.com/alexhyett/ui-ux- inspiration/](http://www.pinterest.com/alexhyett/ui-ux-inspiration/) [http://www.pinterest.com/wkk711/mobile-ui- ux/](http://www.pinterest.com/wkk711/mobile-ui-ux/)

Hope that's helpful.

<comment><USER17> Hello, Would you mind sharing about front end libraries (js, css) you've used. The interface is beautiful and efficient. I'd love to hear a bit more about it.

<comment><AUTHOR> Thanks for much for the compliment, you made my day.

There's not much to say really. It's just pretty vanilla jQuery and then I code the CSS/HTML by hand. I use a few Bootstrap components, but where possibly I try to craft everything myself. I think that helps to keep it simple, if you start throwing a lot of components together you end up with a mess rather than having to put the effort in yourself and, as your time is a precious resource, you think more about what's important and what's not.

Sorry, I know that's not very helpful!

<comment><USER18> I was looking at the source and found your rick astley. It looked really weird in chrome's dev tools :P. Your CSS/HTML is way better than mine, time to polish my skills..

</comment></comment></comment></comment></comment><comment><USER19> Show HN: Something else that isn't done yet, but wants access to my accounts for who knows what reason.

</comment><comment><USER20> This looks like it was influenced by the Hub, a Node Knockout project with a landing page created by high school students that's been picking up steam on Twitter since last weekend.

[http://nodeknockout.com/teams/team-name-goes- here](http://nodeknockout.com/teams/team-name-goes-here)

Both landing pages seem nice, and looks like a great way to test the idea out!

<comment><AUTHOR> We hadn't seen this at all, so wasn't part of the influence to be honest. Trying to check it out now, but it's hanging on signup :(

<comment><USER21> Sorry to hear that :( I'm also one of the devs. If you are still having issues with authenticating you can check out a video and description about our service at [http://nodeknockout.com/teams/team-name-goes- here](http://nodeknockout.com/teams/team-name-goes-here)

</comment></comment></comment><comment><USER22> Very interesting, I'm looking forward to checking out the product! We use GitHub exclusively for everything; even our non-technical team-members leverage GitHub for sales, HR, marketing, blog post writing.. You name it. We did have to build a product to make this easier on ourselves [1], into which we've been resisting integrating chat. Chat is the only non-GitHub piece of our workflow, Gitter looks promising!

[1] [http://zenhub.io](http://zenhub.io)

<comment><USER23> We have this in production and would love your feedback [http://kato.quora.com/Free-Kato-For-Open-GitHub- Repos](http://kato.quora.com/Free-Kato-For-Open-GitHub-Repos)

</comment></comment><comment><USER24> Signed up immediately. Very promising, especially if the history stays up there for anyone who joins the "repo" discussion later on.

This could be really important for bigger projects where new/significant features should be discussed openly. This way the information stays attached to the repo and others can refer to it later on.

Looking forward to seeing it in action!

<comment><USER23> We built github chat and it's in production [http://kato.quora.com/Free-Kato- For-Open-GitHub-Repos](http://kato.quora.com/Free-Kato-For-Open-GitHub-Repos) please check it out and give us some feedback

</comment></comment><comment><AUTHOR> We've got a lot of the parts of this already built, just not packaged in this format.

We're trying to see how much support there would be for a product like this. If we get a lot of "signups" we'll get cracking immediately.

Comments/feedback more than welcome.

Thanks in advance for your support.

<comment><USER25> This is awesome. I can see this being massively useful. Who wants to use GMail for a chat?

Coming from someone who uses Github with a few people, this would be great. I'd even pay for it if our project was more than a hobby at this point.

<comment><AUTHOR> Thanks for the support. We'll be absolutely sure to have a useful free tier as well as a paid offering.

<comment><USER25> Thanks! That's what I meant to imply, but I didn't know how to phrase it.

</comment></comment></comment></comment><comment><USER26> One question:

After signing up for Gitter I checked out Trou.pe. But even without signing up for Trou.pe it already knew my gravatar & was able to suggest me usernames (including my full name) when going to [http://trou.pe](http://trou.pe).

How's that possible?

<comment><USER3> When you perform the OAuth signup via GitHub, GitHub provides us with your name username, etc. Then, if you click the link to signup with Troupe, we create a Troupe account for you, pre-populated with your details, so that you don't need to enter them again.

Hope this helps!

(I'm one of the devs)

<comment><USER26> So you're pushing my information between two different services. Both of which happen to be provided by the same organization.

It's kinda convenient, but still does not feel quite right :(

<comment><USER6> I concur, doesn't feel right.

I think at the very least, have a message saying "This information was shared when you did X" so it's at least explicit.

Possibly just not at all; methinks the github crowd, unlike the facebook crowd, are sufficiently privacy sentient.

<comment><AUTHOR> That wasn't the intention at all, it was more to save you having to type those details in again. Sorry if you felt wronged by it.

We're developers ourselves and value our privacy too/

<comment><USER27> Please make it so we can delete our accounts. I signed in for gitter because I like what I read and wanted to be on the waiting list, but when I got the message saying about Trou.pe I was curious to see what it was, not sign up. That's not cool, and now I'm signed up for some site I don't even know what does... I looked around after being force signed up and STILL don't know what it is. Now I can't delete it without going to Github and de-authorizing the actual account I did want. ಠ_ಠ

</comment></comment></comment></comment></comment></comment><comment><USER28> If you ever want to integrate real-time video chat as well, send us a note at vLine: [https://vline.com](https://vline.com). We actually have what we call a "GitHub identity provider" ([https://vline.com/developer/docs/getting_started](https://vline.com/developer/docs/getting_started)) that should make it really easy.

We used that to build GitTogether ([https://gittogether.com](https://gittogether.com)), which is a similar concept to this: text chat and video chat with people you follow plus members of your teams and organizations.

</comment><comment><USER29> Chat apps come and go... and there I am on IRC. I hang out with lots of people on github there.

Why would I use this over IRC with the client of my choice? Build an IRC client that integrates with GitHub, or extensions for Adium to handle github URL's. Or maybe GitHub could offer authorization through XMPP.

Why should I have to use a separate client when I already have Facebook, IRC, XMPP, etc. all managed from the same place?

</comment><comment><USER30> Hm, "signing up" by providing read-only OAuth access to my GitHub account is... fascinating. :-)

Very clever way to make signups easy, relevant to the interest you're trying to gauge, and gather far more information about me than just my e-mail address (eg. my activity level on GitHub, the type of projects I'm involved in).

</comment><comment><USER31> A lot of comments here are saying things like "I wouldn't be able to persuade my team/non-technical colleagues to use this instead of HipChat". Surely one the most exciting uses for Gitter is discussion on open-source repos, where you aren't already communicating with repo collaborators?

<comment><USER9> true, but it would be fantastic to merge those two cultures together. Having non technical people involved in open source projects is a good thing, and it is something that we are trying to encourage.

<comment><USER31> Absolutely, and I wish you all the best. Look forward to using it!

</comment></comment></comment><comment><USER32> Just tried signing up with github and got the message -

"Gitter isn't ready yet. If we get enough support, we will launch this in a few months. Help spread the word by Tweeting about us and follow @GitChat for updates."

From the other comments here, it looks like people are able to try out a demo or something. What am I missing?

<comment><AUTHOR> Hi. No it's purely testing a concept. Lean product development process in full swing.

We tried to make that clear in the text above the signup button, sorry if we mislead you that wasn't the intention.

We're trying to gauge interest before investing heavily in the product.

<comment><USER33> I think the "Sign up" copy on the button might be a bit misleading, because as a user I'm not really signing up for anything...

</comment></comment></comment><comment><USER34> From the screenshot with localhost on location bar I thought it would be self hosted.

EDIT: The screenshot was updated. ;D

<comment><AUTHOR> Ah no, that was just shotted off my local development environment.

</comment></comment><comment><USER35> Not directly related to your product, but I always wonder why, with soft launches like this where you gauge interest, why not make the "interest" count public? How many people have you captured?

That being said, I've wanted this idea for a while, so I signed up straight away.

<comment><AUTHOR> That's a great idea, wish we'd thought of it. We'll share the learnings afterwards on @GitChat.

</comment></comment><comment><USER36> My Hackathon GitChat project from one year ago: [http://chat.gitrun.com/](http://chat.gitrun.com/). Source: [https://github.com/gitrun/chat](https://github.com/gitrun/chat)

</comment><comment><USER37> I want to pay money for this. A chat service with built-in GitHub integration including issue and file referencing sounds like a fantastic tool for teams building using GitHub.

Any chance you can use an actual Kickstarter instead so I can throw money at you? :)

<comment><AUTHOR> As long as it's not Pound coins. Those things are heavy!

Thanks for the feedback. Our Clickstarter (tm?) is doing quite nicely. I don't think we'll need to Kickstarter it, we've actually built a lot of the tech anyway and could put this together pretty quickly and start charging too.

<comment><USER38> Would love to chat to you directly about all this. Your contact details are hard to find!

<comment><AUTHOR> Is that Matt of Haraka fame?

<comment><USER38> Yes, it's on my profile page here

</comment></comment></comment></comment></comment><comment><USER39> A wonderful chat service called Kato offers a very similar chat <=> github integration

[http://kato.quora.com/Free-Kato-For-Open-GitHub- Repos](http://kato.quora.com/Free-Kato-For-Open-GitHub-Repos)

</comment><comment> j-hernandez Another immediate signup. Would like to echo @davman's comment about showing the interest count. It would be interesting to watch the needle, so to speak. A +1 for Hubot integration as well.

At any rate, best of luck! Amazing effort.

</comment><comment><USER40> Beautiful, but unfortunately it wouldn't be appropriate for my non-technical teammates, so I cannot see it beating out hipchat.

I love the concept though and I can see this being the tool of choice for technical teams.

<comment><USER9> Yeah, that barrier is a tough one to overcome. We've found that having an easy entry point (nothing to install, one click signup etc.) lowers the barrier a bit.

Also having some kind of free tier could always be an advantage over hipchat...

<comment><USER41> HipChat also has a free tier (for teams of 5 or smaller). [https://www.hipchat.com/pricing](https://www.hipchat.com/pricing)

<comment><USER9> Good point. The problem with a tier limited by the number of people is that you take away one of the best parts of a free chat service. Being able to freely invite _anyone_ into a conversation really opens up what you can do.

</comment></comment></comment></comment><comment><USER23> We've already built this at Kato [http://kato.quora.com/Free-Kato-For-Open- GitHub-Repos](http://kato.quora.com/Free-Kato-For-Open-GitHub-Repos)

</comment><comment><USER42> Great work! Could you share about what stack/technologies used to build it? Trying to learn how to choose the best platform for each solution.

<comment><USER9> At the moment we have node + express + faye for rest api/streaming. The web front end is currently built with backbone, less and a sprinkling of bootstrap.

</comment></comment><comment><USER43> How long will it take to be a usable product? I might be interested and need to know if I should keep looking around or just wait a bit.

<comment><AUTHOR> Take a look at our current product, it's not directly tied to GitHub, but has webhook integration (with BitBucket, Travis, Jenkins too).

www.trou.pe

We'll need to sweat some details on Gitter, so hard to say on the timing. We may fuse the two concepts together, so it will be more about product-related decisions than development time as we have a lot of the code already.

Feel free to give us feedback on Troupe so we can loop that into the future direction of this product.

</comment></comment><comment><USER44> Looks great, just needs some emojis and hubot integration and I'm sold!

<comment><AUTHOR> Oh, we'll have awesome emotigifs(tm?) and will certainly look at baking Hubot right in.

Thanks for your feebdack.

</comment></comment><comment><USER45> A perfect headline / product for HN. Very nicely done Rick Rolling.

<comment><AUTHOR> Thanks, was hoping someone would find that easter egg. Got to have a little fun along the journey!

</comment></comment><comment><USER46> The 'support' button for trou.pe doesn't work. :(

<comment><AUTHOR> How odd, thanks for reporting, will look into it right now. Was working just fine earlier today.

You can also visit [https://troupe.uservoice.com/](https://troupe.uservoice.com/)

</comment></comment><comment><USER47> Nice one! This is a great repurposing of your existing product.

</comment><comment><USER48> "Available everywhere that has internets"

And my Windows Phone? :(

<comment><AUTHOR> Ah, yes on that too! Sorry, didn't mean to leave you guys out.

</comment></comment><comment><USER49> Looks really interesting, you guys should take a look at www.surfly.com. With Surfly in the mix you would not just be able to chat about things but also show people around.

Also, I couldn't find any contact info. :(

<comment><USER9> @gitchat on twitter for now.

</comment></comment><comment><USER50> I love the source code at the beginning of this page.

<comment><AUTHOR> +1 for finding it :) you should check it out in sublime text in the little preview strip they have on the right column, it looks awesome there.

<comment><USER50> job conditioning, I always look at the source code and the GTmetrix (YSlow, Page Speed) of all the "show HN" projects I see

</comment></comment></comment><comment><USER51> I initially read this as "GitHub for cats"

</comment><comment><USER52> Is it open-sourced?

<comment><AUTHOR> Hi!

We're using a huge amount of open source components ourselves and are actively contributing back to those projects. James Coglan's Faye is a great example of this where we've been working with James to get it to V1.

The approach we'll take for our own work is certainly to open source some of the components rather than the entire system. We're big believers in giving back, but at the same time we ned to protect our own business.

</comment></comment><comment><USER53> it will be great to use this -- when it comes out in a few months.

i guess they aren't waiting until its closer to production

</comment><comment><USER54> Great great app :-) Impressive!

</comment><comment><USER55> Will it be open source?</comment>


Elixir Style Guide - <AUTHOR> https://github.com/niftyn8/elixir_style_guide <comment><USER2> A two space indentation level isn't enough for my tired old eyes.

<comment><USER3> That's why I'm a believer in tabs. Set tab length to 2, or 4 :).

<comment><USER4> I'd rather have everyone deal with the same.

Forced consistency.

If some view the code in 4 space mode, and some view it in 2 space mode ---- the style of how they implement stuff will diverge. Those using 2 spaces will be more comfortable with more levels of indent than those using the 4 spaces. Perhaps, or worse.

Also, like 1 less (strange) character in the code seems ... cleaner. I don't know, it's an emotional thing, but I wanted to share the emotional thing.

</comment></comment></comment><comment><USER5> Why people insist in making 2 space tabs. Its just a too small padding and it breaks the left arrow.

<comment><USER4> Left arrow not broken in atom (maybe sublime also?).

Left arrow broken less annoying than left/right scroll introduced early, imho.

I insist on 2 space tabs. Happy to have longer dialog if desired :)</comment></comment>


Civilization's Starter Kit - <AUTHOR> http://www.nytimes.com/2014/03/30/opinion/sunday/civilizations-starter-kit.html

<comment><AUTHOR> I like the direction that this author is going. He's certainly not the only person to be thinking along these lines. The Long Now Foundation in particular seems to be invested in pursuing answers to some of the overarching questions posed by this column.

One recent post on the Foundation's blog caught my eye: "Kevin Kelly's Selected Books for the Manual for Civilization" ([http://blog.longnow.org/02014/03/18/kevin-kelly- books/](http://blog.longnow.org/02014/03/18/kevin-kelly-books/)), in which Kevin Kelly (author of _Cool Tools_ ) offers his additions to the Foundation's growing "corpus which could sustain or rebuild civilization."

</comment><comment><USER2> surprised there wasn't any mention of these guys. [http://opensourceecology.org/wiki/Civilization_Starter_Kit_D...](http://opensourceecology.org/wiki/Civilization_Starter_Kit_DVD_v0.01)</comment>


"Dump Shock" - <AUTHOR> http://c2.com/cgi/wiki/TresSeaver?DumpShock

<comment><USER2> Its funny: I can just barely follow a conversation in three languages but if I'm writing or coding in Japanese/English and you come up to me and speak the other my brain freezes for 5 ~ 10 seconds for the context switch. I won't be able to remember even the general shape of what you said, let alone parse it, and whatever I was just typing typically turns out as gibberish. (Strangely dyslexic gibberish: I've typed things like "tip a gully terms shout gerbil fish" into emails before when accosted in Japanese.)

<comment><USER3> In college, I had the same professor for Spanish and German. (In the same room, too!) Every once in a while, I would accidentally mix up the vocabularies. My professor's mind locked up for a second before he switched gears, realized I was talking in the wrong language, and then switched back.

<comment><USER4> As someone who struggles with this at 25, this is fairly discouraging to hear...

</comment></comment></comment><comment><USER5> What happened to Coleridge wasn't "dump shock" (or DumpShock in the UglyWiki convention that makes every linked term look like something from a made-up language pronounced by Comic Book Guy). He had his mellow harshed.

 _Coleridge claimed that the poem was inspired by an opium-induced dream (implicit in the poem's subtitle A Vision in a Dream) but that the composition was interrupted by a person from Porlock_

<http://en.wikipedia.org/wiki/Kubla_Khan>

<comment><USER6>
      Coleridge received the Person from Porlock
      And ever after called him a curse
      Then why did he hurry to let him in?
      He might have hid in the house.

      It was not right of Coleridge in fact it was wrong
      (But often we all do wrong)
      As the truth is I think, he was already stuck
      With Kubla Khan.

      He was weeping and crying, I am finished, finished
      I shall never write another word of it,
      When along comes the Person from Porlock
      And takes the blame for it.

<http://www.artofeurope.com/smith/smi4.htm>

Oh, and also: <http://www.robertfulford.com/porlock.html>

</comment></comment><comment><USER7> Illustration of the concept: [http://hestia.typepad.com/.a/6a00d8341c5c9b53ef01156f5cd7129...](http://hestia.typepad.com/.a/6a00d8341c5c9b53ef01156f5cd712970c-pi)

<comment><USER8> The one time I wish it wasn't referentially _transparent_...</comment></comment>


Mobile Safari's Performance Is Not the Problem - <AUTHOR> http://tjvantoll.com/2015/07/27/mobile-safari-performance/

<comment><USER2> Forget about mobile, modern web sites suck everywhere, desktop included.

Giant banners that stick along the top of the screen. Infinite scrolling that (1) leaves all elements loaded, severely limiting the amount you can scroll, and performance as you scroll deeper and (2) breaks the back button and (3) breaks bookmarking and link sharing. Click-interceptors that ruin the ability to command click to open in a separate tab. Shitty attempts at navigation transitions that ruin the Safari's built-in Back w/ swipe transition.

Not to even mention the ungodly amount of intrusive ads on many sites.

And God help you if you have flash enabled.

<comment><USER3> I don't advocate using the law to enforce web standards, but if websites all followed disabilities standards it would be pretty straightforward to strip out all of the extra stuff. You could just browse the web painlessly in Lynx.

It could be a lot worse. Misuse of HTML5 and WebGL could leave users wishing for Flash. Publishers are just scratching the surface for how poor web usability could be. Like really fucking bad. Prediction: we will see some hard sell porn sites make breakthroughs in this area first.

There is some humor in hitting a "mobile friendly" website and desperately requesting the desktop version because its such a pile of shit. Many newspapers have fallen in to this trap. Even companies that should know better, like AirBNB have had issues in the past (can't comment now because I haven't looked in a few months.) Ironically if your company is data driven and doing a lot of front end testing, your winning design that converts users in to app installs may be doing just so because it is broken.

As someone who has a decent number of users in developing countries I'll point out these problems compound themselves abroad. Users are on older phones, Android or Blackberry, broadband is limited, and resolutions are much lower. There are publishers and startups who are failing in other markets because their designers only test locally, may be not even on a real phone. You can't make the excuse that eventually everyone will have high DPI iPhones, because by the time they do, the first tier devices will be that much better and you will be developing for them instead.

<comment><USER4> > I don't advocate using the law to enforce web standards, but if websites all > followed disabilities standards it would be pretty straightforward to strip > out all of the extra stuff.

In the U.S, the Department of Justice is responsible for enforcing the Americans with Disabilities Act (ADA). The ADA does include language on web accessibility and the Dept of Justice has repeatedly signalled that it believes that that language applies to basically all publicly accessible websites.

They are working on a new rule to clarify that, but its release has been delayed until April of 2016. But in every case so far, their standard has been the Web Content Accessibility Guidelines (WCAG) 2.0 at Level A or AA. [1] So basically, right now it's looking like the law will in fact begin enforcing a web standard in the next year or two!

[1] [http://www.w3.org/TR/WCAG20/](http://www.w3.org/TR/WCAG20/)

</comment></comment></comment><comment><USER5> As someone pointed out on Twitter, the reason The Verge and others are getting upset about "Mobile Safari" may be Apple's upcoming introduction of Safari Content Blockers, which would deprive them of advertising revenue. By badmouthing Safari (for something which isn't its fault), it can get people to switch to Chrome, which won't have ad-blocking on iOS.

This is hypothetical, of course.

<comment><USER6> I think that argument could be made without the conspiratorial angle, too. The Verge and others are probably grumpy about Safari because of that, and that in turn makes them more eager to bad-mouth it.

</comment></comment><comment><USER7> The mobile browsers aren't the problem, the content (read: advertising) is the problem. Loading tons of ad images and tracking scripts is what makes it shitty.

<comment><USER8> This is, I believe, the more correct answer. There are so many different assets being delivered for every URL that it degrades the performance of desktop browsers, let alone mobile ones. HTTP/2 will help somewhat, but the overarching problem -- megs of cruft for every KB of content -- will remain.

<comment><USER9> I read somewhere that the new Safari will have an adblocker, so that would solve this, I guess.

<comment><USER10> It may not address the underlying issues with ad-based revenue for websites but at least for performance, it does make a big difference. Adblocking extensions have been available on other platforms for a while now and they're one of the main reasons I use Firefox as my primary mobile browser (albeit on Android instead of iOS). I can install the same Adblock Plus/Edge/etc. as the desktop version and immediately my little 5" screen is less cluttered, sites load faster, and I use less of my metered data plan.

Mobile web browsing without an ad blocker is miserable compared to the same thing on desktop. At least on the desktop you've probably got 1920x1080 or 2560x1440 screens, more processing power, more RAM, and a connection that offers more than 5GB of data each month. With mobile it's unbearable.

</comment></comment></comment></comment><comment><USER11> Building ad support into the browser sounds like a great idea, except it's not strategically a good idea for any of the browser vendors. There's a constant struggle between advertisers, publishers and browser/platform developers for data -- not to mention a huge conflict of interest with Google (and to a lesser extent Apple).

The reason ad networks are so bloated is because web advertising as it currently stands has a measurement problem: if I display an ad, I have no way of knowing if a reader even saw it. This is why you rarely see ads displayed below the fold; and when they are, they're wrapped in a bunch of JavaScript or Flash to ensure they're not tracking displays for ads that were never seen. Advertisers literally want pixel-level tracking of page scroll, mouse movement, etc. and they use all this bulky JavaScript to collect it. Do you think it's a good idea to let the browsers report this information? Because if not, the advertisers are going to inject as much JavaScript as they can to use every workaround to collect as much data as possible.

This also ignores the fact that Google is the head honcho of online advertising. Google can (and probably does) collect much of this information from inside Chrome. They would be violently opposed to sharing this data with their competition, because proprietary data like this enables them to charge a premium for ads they place. Advertising is all about proprietary data sources, and the moment something becomes commoditized it loses most of its value. Considering Google makes something like 95% of its revenue from its network of proprietary user data, they would never engage in any sort of browser ad placement unless it funneled money through them (which their competitors would never go for).

<comment><USER12> There is a great chart showing the categories of players involved, as well as the companies: [http://www.lumapartners.com/lumascapes/mobile- lumascape/](http://www.lumapartners.com/lumascapes/mobile-lumascape/)

At the left are the advertisers, and the right is the end user. In between you can see so many boxes with lots of logos. The sheer number of companies is what contributes to so much of the ad "weight".

Even if the browser had some sort of overview, the players before wouldn't just hand over control. For example Verizon would want to control what happens to users on their network (and already do so).

<comment><USER11> This chart is the gold standard for describing the ad tech market, but I actually think it is a bit myopic with regards to the "full-stack" view. You're thinking of a strategic control point, and the networks aren't in as good of a position as you would think. Things like SSL limit their ability to perform segmentation via DPI -- but since browsers are the SSL termination point, it's not nearly as much of an issue. With security becoming more and more important and "SSL everywhere", the networks' ability to collect data from ad networks through DPI is disappearing.

Typically, strategic control points should be thought about in terms of their physical proximity to the user. That is, if it is a device that the user touches, that device and its software stack represents a potential control point. Currently, the devices aren't the control point (thanks to Google's Android strategy), but the OS and by extension the browser is much more promising. If I had to describe a value chain, it would look like this (you can replace "browser" with "app", though with a much more limited scope):

User > Device > OS > Browser > Network > Publisher > Ad tech (most of what is shown in the chart above) > Advertiser

Basically, every company on this chart is trying to disintermediate every other company to the right and left of them. What we're left with is a reasonably efficient advertising marketplace that serves the needs of advertisers and publishers, but the tricks and methods used by advertisers are frustrating to users. The browser vendors have enormous control over what techniques can and can't be used to implement ad tech -- the reason Flash hasn't been removed entirely is because Flash-based tracking cookies offer far more information than the browser, especially with regards to video ads. Google hung on to Flash for a long time because of YouTube, but I think they've recently realized that if they can get Flash off of the web, it would hurt their competition more than it would hurt them.

</comment></comment></comment><comment><USER13> Recently I had to develop a video overlay in html5 - a text that tweens together with a html5 video.

Wasn't a problem with performance - even an aged iPad1 was able to fluently do all the movement, translations etc.

What forced us to choose the ridiculously expensive option of server-side prerendering with After Effects was that iOS Safari is unable to play a HTML5 video inline on iPhones and thus cannot be overlaid with a Canvas.

Fuck you very much, Apple.

<comment><USER14> I ran into the same issue trying to use a video as a texture in WebGL. Worked beautifully on desktop, mobile and even in an iOS UIWebView with inline video allowed. But in Safari? Nope.

I do get the reasoning why it was done when the iPhone 1 came out, but come on. Everyone ends up using animated GIFs instead, which just chew up more bandwidth.

</comment></comment><comment><USER15> How is Google Contributor working? I could use it with an US credit card (even though I live in Brazil), but I am still very afraid of enabling it, disabling my uBlock for Google, being tracked and continuing to see most ads, specially the most obnoxious ones.

However, I believe the idea to be a very good one. If Google guaranteed no ads at all, on their site or in other site, I would compromise giving them this tracking, as the their interests on my personal data interests would likely change if the commercial part of the deal is out of the table. However, this demands no adverts at all, and no selling of personal information at all. Hard to see Google going for it.

<comment><USER16> While Google Contributor is a great first step (currently i'm using it with a $7 a month contribution), it doesn't really help that much.

It only applies to adsense, and they already have pretty strict rules on ads that make them pretty painless (only 3 per page on desktop, 2 per page on mobile, and some pretty strict guidelines on where they can be placed and how they can be shown).

Still, i see the "Thanks for being a contributor" pretty frequently, and the ability to not only see an overview of where and how much of my money is going places, but also to "disable" certain sites from getting any of my contributor money is exactly what i've been wanting for a long time.

So this won't help any websites which already use "excessive" ads as they aren't (or shouldn't be) using adsense, but instead are using more invasive networks.

</comment></comment><comment><USER17> _... reading content on the mobile web can be less than ideal ..._

That must the understatement of the year for the last five years. In fact, my Mobile Safari feels so broken (functionally, not performance-wise), I do mobile browsing only in an emergency.

<comment><USER18> Opera Mobile works, but sadly it's only available for Android. Only mobile browser that can handle full desktop sites without excessive horizontal scrolling, most of the time well enough desktop versions become preferable to "mobile" versions. Not to be confused with rather useless Opera Mini.

<comment><USER19> When I was last on iOS, I actually preferred Opera Mini. This was before Chrome, etc. were options and I have barely used iOS since then, but it was much faster, and had saner zooming.

</comment></comment></comment><comment><USER20> It goes on to say it's the performance of mobile browsing and mobile networks that are a problem. Because ads and other cruft abuse resources which is more noticeable when your browser only holds 30kb cache and your network is 3G.

</comment><comment><USER21> I always wondered, why websites don't deliver ads integrated? Why Google Analystics can't use server-side data? I don't want my user to load any unnecessary JavaScripts, if all data is already available in nginx logs. Why should my user issue additional HTTP requests to Google Ads, when I can issue those requests at server-side (and they'll work faster, because server interconnectivity usually is very good) and deliver the single complete web page to user, with all ads included. Images might load faster from different hosts now, because browsers might restrict connection count to the single host, but in HTTP/2 era single host with single connection will work faster, so loading ad images from website server will be faster too.

The only difference is how easy to integrate ads to your site. Adding <script> tag is certainly easier than tweaking server-side logic or setting up nginx module. But it doesn't matter for big sites, yet they employ the same technique, making their sites unnecessary slow, especially for low-bandwidth users.

<comment><USER22> Google does not trust sites as many will fake their numbers to make more from Ads. If Google directly talks to each user's IP it's much easier for Google to tell that each page load was a real page load.

In your approach they are stuck trusting the webserver and it's far easier to add fake page loads, this is somewhat less of an issue with PPC, but there are still issues.

On top of that advertisers want to track each user which is far simpler when it's a separate HTTP request.

<comment><USER21> > Google does not trust sites not to fake their numbers. If Google directly > talks to each user IP it's much easier for Google to tell that each page > load was a real page load.

If we're talking about Google Analytics, the user wants to view correct data in the first place.

> In your approach they are stuck trusting the webserver and it's far easier > to add fake page loads, this is somewhat less of an issue with PPC, but > there are still issues.

That's true.

> On top of that advertisers want to track a user which is far simpler when > it's a separate HTTP request.

Webserver is supposed to send all necessary user's data to Google server (like IP, UA, Cookies) and Google might ask Webserver to set google-specific Cookie.

Cross-site tracking won't be possible, that's true. Probably some standard could be invented for that (e.g. Google signs global inter-site cookie to deliver to the user and browser should send this cookie to all Google-enabled sites). That'll make easier for user to disable tracking, if user wants that.

My point is that if Google doesn't want to improve their scheme, may be other advertising company will want to improve that scheme. And Google might realize that users will follow that company, that's what competition is about.

And probably Google itself is not the evil here. There are many other ad networks with huge banners and slow loading scripts.

<comment> glass- Google Analytics had a self-hosted version, or more specifically Google Analytics was a self-hosted solution when it was Urchin before Google acquired it.

You could still get the self-hosted version for a price until Google killed it in 2012.

The reason Google doesn't want you to do this is simple: they want the data.

</comment></comment></comment></comment><comment><USER23> I find it interesting that no one picks on the phone being as fast as the laptop. Its not exactly true either and the phones are fast but not that fast.

Its a mix of safari perf, Network latency, memory, cpu/bus... And of course the biggest contender, the website itself.

In the past a slow app would be blamed for being poorly written. Now its as if you cant write poor js.

</comment><comment><USER24> For me the greatest limitation of mobile safari is the lack of WebRTC. Being able to bring and develop communication focused applications via a server side application would be amazing. The web platform has countless advantages to a native only environment.

1\. rapid application deployment

2\. immediate fixes to address real world issues.

3\. easier a/b testing push tests remotely and easily collect these updates.

4\. it's freaking easy to develop html/css/js applications - the browser vendors put a lot of time an energy in testing html/css/js rendering over a huge number of use cases

5\. it's cross platform it runs in more than mobile safari.

IndexedDB is another one - if mobile safari or rather just safari had a working implementation of IndexedDB some interesting offline applications would be possible.

</comment><comment><USER25> Regardless of whether or not most developers are upset about Safari's performance, most users would very strongly welcome a faster web browser. I'm pretty sure speed, stability, and ease of use are the main reasons Chrome is such a popular browser on the desktop. The thing is, it is not really that much faster than other browsers. However, even that small difference feels like a big difference and wins over many users. I'm sure many developers are aware of this. You can't get away from the fact that only allowing one browser rendering engine has some strong disadvantages and is one of if not the biggest disadvantage of using iOS.

<comment><USER26> > I'm pretty sure speed, stability, and ease of use are the main reasons > Chrome is such a popular browser on the desktop.

Unfortunately they don't seem to care about efficiency. I know numerous people who have given up on Chrome (on Mac, don't know if Windows is better) because using Safari keeps the laptop's fans from spinning up and gives them an extra few hours of battery life.

<comment><USER27> That is one of the main reasons that I stick to firefox and safari for my browsing needs. The extra battery goes a long way (and chrome's poor tab handling).

</comment></comment></comment><comment><USER14> Performance of which Safari? My biggest problem is that webviews in Facebook/Twitter use a UIWebView that doesn't have the Nitro JS engine. That absolutely hammers performance. If you have a lot of traffic coming from social and are testing in Safari proper, you're not testing in the environment your users are experiencing your site.

Apple have released the WKWebView but last I checked it has a number of bugs/errors that make it very difficult to use.

<comment><USER26> It's AMAZING what a difference that can make, which really just shows how terribly written the JS on most sites is. It's often faster when pulling up an article in Twitterrific to have it open in Safari than to try to let it finish 'loading' in the web view.

No page should have so much JS (for ads and such) that without a hyper-fast JS engine it feels like it stopped loading.

<comment><USER14> _which really just shows how terribly written the JS on most sites is_

IMO, not necessarily. I was playing around with a D3 visualization that ran terribly within the UIWebView, there was really very little I could do about it.

But I won't argue that plenty of sites are overusing JS for rendering etc when they should be leaving that to static HTML.

<comment><USER26> Visualizations and demos and games and such make sense to me. But when the page has finished loading and looks like every other page of text with some image ads? Yeah you didn't need that JS did you.

</comment></comment></comment></comment><comment><USER28> I think what we need to make the web better are new ways of advertising. Sites like The Verge depend on ads, and currently that means lots of requests and extra js which both hurt the experience, as the author pointed out. Which leads to people browsing with things like ad blockers and Ghostery. I'm no expert on the subject, but there are certainly better ways to advertise than plastering sites with videos and giant banners.

</comment><comment><USER29> Interesting that this article saying pretty much the opposite came across my twitter today in regards to the network: [https://medium.com/@TwinPrime/why- mobile-app-performance-is-...](https://medium.com/@TwinPrime/why-mobile-app- performance-is-unreliable-c7241e458757)

</comment><comment><USER30> I don't remember what the number is, but mobile browser performance is a fraction of that of desktop browsers and the number hasn't changed much in the past 5 years.

This is worrisome to me because if it means we've tapped out on ARM performance then we need to look to a future without ARM on mobile.

<comment><USER31> I disagree. Mobile performance is fine; modern smartphones and tablets provide more than enough power. It's enough power to be able to churn through huge photo libraries and power surprisingly capable video NLEs and multitrack DAWs; why should any website ever need more power than that?

No, what we should pursuing much more fervently is browser engine optimization and more efficient JS. I've always been a strong supporter of baking more functionality found in commonly used JS libraries into JS itself (allowing aggressive optimization and reduction of number of libraries loaded) and while I may be wrong, I suspect that the web could benefit greatly from dependency sharing systems (if [lib] is already loaded from one source, don't try to load it again).

And of course, nothing will have as much impact as thoughtfully written JS. There needs to be a big push in the web community to take responsibility for performance because expecting browser developers and increasing hardware power to magically make everything OK isn't a solution.

</comment></comment><comment><USER32> This article really belongs in a private conversation or a comment.

When I open an article I am really looking for original content, not some "I disagree with this other dude" evangelism.</comment>


The Line Between Aggressive and Crazy - <AUTHOR> https://rhsfinancial.com/2017/06/line-aggressive-crazy/ <comment><USER2> It's worth noting that for a finite number of bets (the number being known to the bettor) the Kelly Criterion is not the optimal strategy. Intuitively, the closer you are to the end the less worried you should be about going bust (as you won't be missing out on more of these great odds).

Gwern details this extensively here: [https://www.gwern.net/Coin- flip](https://www.gwern.net/Coin-flip) well worth checking out.

<comment><USER3> You should be worried about going bust, because life goes on after the exercise ends. Am I missing something?

<comment><USER4> Think of it this way. With one final chance left, you should really bet 100% to maximize your expected value.

<comment><USER5> That seems contrary to the criterion... Expected value dismisses risk and the fact that once someone loses their money, it is much harder to gain it back.

If you have 100 dollars..and you lose 50% of it on a fair coin bet, you now have $50.

Say you play again..You win. Youll only have $75 ($50 times 150%.)

Thats the basis of risk analysis. That losing and winning arent equal for finite bankrolls just because their probabilities are equal.

</comment></comment></comment></comment><comment><USER6> There was a great moment in financial history when only a few people had figured out how to use computers to price things, and they made a lot of money. Thorpe did very well at blackjack because the casinos didn't know that a winning strategy against them was possible.

Now everything financial has been analyzed to death and nobody can make money with technical analysis.

<comment><USER7> Technical analysis is playing heads-up against math PhDs who get paid $250k a year to try to beat you. Yeah, you're not going to be in for a good time.

This article is more about how you manage risk and learning what your _personal_ risk tolerance is. If you take more or less risk than you "should", then all else equal, you'll wind up with less money.

<comment><USER8> 100% correct.

Besides, these are not "just" math PhDs, but math PhDs backed by some of the largest private equity trading firms in the world, armed with multiple datacenters of 5000 blades each, running machine learning algos and playing "what if" scenarios 24 hours a day, to build rulesets and aligned structured positions so they can scrape news feeds and react in milliseconds.

Anyone who thinks they can sit at home and day-trade with these sharks without being fleeced is a fool. But then, anyone who is a fundamentals trader and is still in this outrageously irrational market is also a fool.

One of the first things I learned as a trader: "The market can remain irrational longer than you can remain solvent."

</comment></comment></comment><comment><USER9> This is fascinating, and really makes you consider the volatile nature of markets from a different perspective. That is, it seems to imply that your return is less about the choice of companies to invest in and more about your general exposure, which seems consistent with the rise of index funds and diversification in general.

</comment><comment><USER10> Or in other words, don't pick your stocks, pick your leverage. Interesting read, only thing missing was a deeper dive into the tools used to produce the graphs, or even better, a link to a Github which would reproduce them from the raw data.

<comment><USER11> Most of those graphs are straight out of Excel.

<comment><USER10> Sorry, I meant the calculations, not how to render the line chart!

</comment></comment></comment><comment><USER12> I don't really understand the equation.

Plugging in an average stock market performance (over last 20 years):

Return: 8% Standard Deviation: 17.72% Risk free rate: 3% (guess)

This gives f = 1.59.

This means the optimal strategy is to be putting 159% of your money in an ETF index?

This strategy is in stark contrast with the typical 70%-30% allocation of investments. How do we reconcile this? Intuitively, the function of your age needs to be included in this equation (I think somebody commented on this already).

<comment><USER13> Isn't risk-free currently more like 0%?

Alternatively, where can I get my 3%? No ICOs please ;-)

<comment><USER7> You can find FDIC insured bank accounts at 1.25% nowadays. There's also I-bonds at 1.9% inflation-linked, with a purchase limit of $10k/yr and a 1-year redemption lock-out.

3% is more accurate for the cost of margin loans or the opportunity cost of pre-paying a mortgage.

</comment></comment></comment><comment><USER14> Related concept explained by Nassim Taleb: [https://medium.com/incerto/the- logic-of-risk-taking-107bf410...](https://medium.com/incerto/the-logic-of- risk-taking-107bf41029d3)

</comment><comment><USER15> I'm not sure how applicable to criterion is to investing. The main differences are you typically don't lose your entire 'bet', and bets aren't decided in a single moment but the outcome is slowly revealed over time.

<comment><USER16> I don't think that changes the conclusion, you're just moving from discrete to in theory continuous but in practise modellable as discrete.

<comment><USER15> It prompts very different behavior, to extend the coin flip metaphor: If you could slow down time and see the flip turning bad, you could quickly withdraw your bet. Then you'd be much more likely to bet a higher fraction.

<comment><USER17> I was thinking about this while reading. The Dot Com and Sub Prime mortgage crashes took a lot of people buy surprise, but not everyone. Moving into T-bills, cash, or precious metals at the beginning of those downturns would be enough to make the 2x Kelly and 3x Kelly perform better.

</comment></comment></comment></comment><comment><USER18> _Criterion can tell us what was behind the biggest blowups in finance, why levered ETFs are generally a bad idea, and how aggressive investors can maximize their wealth without risking ruin._

That is not necessarily true regarding leveraged etfs.

Leverged ETFs when used as a substitute for being fully invested can be more safe than being fully invested in the non-leveraged version. The idea being one puts 1/3 of their capital in the 3x S&P 500 ETF and the 2/3 in T-bills. The maximum loss, no matter what, is still only 33%.

Ruin (if it is defined to mean 100% loss of capital) is impossible with a leveraged etf [it just means your wealth asymptotically approaches zero], but it is possible with margin debt.

<comment><USER7> That only helps you if your rebalancing period is less frequent than it should be, letting your leverage drift up on good days and down on bad days. If the market goes down by 16.6%%, your levered ETF goes down by 50%, and your portfolio is now 80% treasuries and 20% 3x levered ETF.

If you rebalance daily in order to maintain your desired stock exposure, you end up owning the S&P 500 as your buy and sell orders of the levered ETF counteract the ETF's buy and sell orders on the underlying index to maintain its leverage. All you're doing is paying higher fees, trading costs, the spread on T-bills vs institutional margin costs, and realizing capital gains and losses pointlessly.

What you want is to buy call options on the S&P 500 index. The market is far more efficient here and way better for you.

</comment></comment><comment><USER19> There seems to be an error in the calculation: b (the net odds) should be 1.5, not 2.5

<comment><USER20> I was really surprised the article overlooked such an elementary mistake. Makes me wonder what else they didn't double-check.

</comment></comment><comment><USER21> > Because my bet is only valuable to you for as long as you have money to keep > making it. But if you bet too much, you will eventually go bust.

Funny how this seems also to work as an argument against Pascal's wager.</comment>


Paypal subscription API problems hurt a lot of small startups - <AUTHOR> http://www.paypaldeveloper.com/pdn/board/message?board.id=basicpayments&thread.id=21367&view=by_date_ascending&page=1

<comment><USER2> Definitely a huge issue as a subscription site I'm helping out with is 100% monetized using paypal subscriptions. We just started testing out trials and it's been a complete failure because NOTHING is showing up in people's paypal accounts and we're not getting any money. FAIL!

<comment><AUTHOR> Same here. It's causing us massive problems and it's not only the money we're not receiving, it's angry customers who are unable to cancel or view their subscriptions. I'm tired of looking, and haven't found, but, is there any good alternative to Paypal for merchants outside the US/UK?</comment></comment>


Google Maps will soon be able to find your parked car - <AUTHOR> http://mashable.com/2017/03/20/google-maps-car-parking-reminder/#MsCR2RfYFOqf <comment><USER2> It's been finding me my car for more than a year (two? Maybe three) based seemingly on how fast I've been moving, and when I switch to slower speed. It usually thinks that busses are 'driving' and tells me where I parked them after I get off

<comment><USER3> Same for me, it is displayed in my Google Now feed. Sometimes false positives, but it works since over a year.

<comment><USER4> Yep. It's one of those things that I've had an ignored for years except for the one time I needed it. I was on vacation and parked the rental, thinking "oh, no biggie, I will just find my way back over when I need it. Worst case I end up wandering for a few minutes while I relocate the right side street."

Well, it took more than a few minutes. It was hot as hell, girlfriend was getting pissed off at all the walking around in the heat and humidity (was in Key West), tensions were rising...and I remembered that stupid parking location thing I never use. Got me back on track within a minute or two and that wasn't the day we split up.

But yeah, seems like a decent extension of this feature for those who don't use Google Now (or whatever it's called now) or want more options.</comment></comment></comment>


Five recent PHP improvements - <AUTHOR> http://geshan.blogspot.com/2014/01/5-php-development-improvements.html

<comment><USER2> I believe what the author is actually trying to imply here is that in 2013 the PHP community got behind a number of different projects (PSR and Composer/Packagist) and unit testing became a defacto part of developing with PHP.

In my opinion as a PHP developer, I feel like PHP grew up a lot last year and we (as a community) ended on a high.

Hopefully 2014 will see developers creating framework-agnostic packages/libraries which the big PHP projects like WordPress and MediaWiki can use to improve their core code (Joomla has already started this). In addition there are movements to get shared hosts to upgrade their PHP installs and get people onto PHP 5.4+ installations.

</comment><comment><USER3> Thanks for the post.</comment>


5 Lessons from CEO Diane Greenes long, slow slog with VMWare - <AUTHOR> http://foundread.com/2007/09/20/5-lessons-from-ceo-diane-greenes-long-slow-slog-with-vmware/ <comment><USER2> An excellent piece. The Mercury News article is also worth reading.</comment>


Why African-American professionals are moving abroad–and staying there - <AUTHOR> https://fortune.com/2020/08/10/black-african-americans-leaving-us-moving-abroad-professionals-race-opportunity-careers/ <comment><USER2> Isn't it apparent? They are actually facing less racism to extent out there.</comment>


Let Chris Crawford teach you to program Atari's 8-bit computers [video] - <AUTHOR> http://www.gamasutra.com/view/news/271277/Let_Chris_Crawford_teach_you_to_program_Ataris_8bit_computers.php <comment><USER2> Here is an example of a contemporary demo on the Atari 8-bits:

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

You might notice that some scenes show more colors onscreen than contemporaries like the C64 - this is all because of the display list interrupt techniques Crawford talks about, combined with clever overlaying of the player/missile sprite system. (The weird term for these hardware sprites is because it's built on the legacy of the 2600's system, which itself was built around the needs of the pack-in games: two players, two projectiles, one ball.)

The A8 series was limited in lifespan in the USA for a number of reasons: poor documentation, platform fragmentation, and price competition. It shipped with very little documentation on how it worked, leaving developers starved for resources for several years(Chris Crawford himself contributed to the unofficial bible, "De Re Atari"). There were the original 8k-upgradeable- to-48k 400/800 models and the newer XL/XE models, which shipped with 64k standard, and additionally, a change partway through the 400 and 800's life to an upgraded graphics chip; although most old software would run on the new machines, the C64 was more straightforward to target and to program, and it led the way in price-cutting the home computer market, which gave it a huge lead in market share. The later life of the A8 was entirely in European markets.

In terms of what the two machines can do when pushed to the limit, though, there's plenty of room for comparison.

<comment><USER3> If you want to check out an amazing example of what was being done by some Atari 8-bit programmers at the time, check out "Alternate Reality: The City", a Datasoft game by Philip Price released in 1985. He used some really novel techniques to create a game that was visually and musically impressive for the time and architecture. Some of the techniques he employed (from an interview on Atariage.com a couple years ago)

>1\. Knowledge of the names of registers was from magazine articles. I was self-taught for the most part. On the tricks with the hardware, that was just me thinking up what cool things I could do with the functionality of the hardware. Cycle counting to determine the position of the television electron beam, using a sliding window and emitting to the front and back of the current visual screen, using interrupts to change the color registers on each scan- line (combined with cycle counting and moving the player missiles to be at two places at once on the scan line),the 3D stuff, security, encryption, texture mapping, music driver, all self taught (no books).

</comment></comment><comment><USER4> I would love it if someone could do something like this for modern GPUs, complete with pipeline stalls as a costumed CPU waits to hear back from a costumed GPU. It seems like there's an unreasonable amount of mystery around how GPUs work, at least in popular understanding, compared to our knowledge of arcane corners of obsolete computers.

<comment><USER5> Isn't there a lot of mystery because the GPU companies keep things very secret? It's been my understanding that GPUs are very much black boxes.

<comment> TD-Linux Most popular desktop GPUs have been pretty well reverse engineered (or implemented from documentation) in Mesa, so you really can go and look at the nitty gritty details, and write assembly language if you so like.

The VC4 is also a fun target, because in addition to being supported in mesa, it is documented very well [1] and in a very popular product (the Raspberry Pi).

[1] [http://www.broadcom.com/docs/support/videocore/VideoCoreIV-A...](http://www.broadcom.com/docs/support/videocore/VideoCoreIV- AG100-R.pdf)

<comment><USER6> Here's dump of public knowledge about various GPUs.

[http://renderingpipeline.com/graphics-literature/low- level-g...](http://renderingpipeline.com/graphics-literature/low-level-gpu- documentation/)

</comment></comment></comment></comment><comment><USER7> If anyone wants to try out programming the a8 then here is a little info:

Best windows emulator: Altirra

Best cross platform emulators: Atari800 and Atari++

Or if you have an FPGA board (MIST,MCC216 etc) then you can try my core available at [http://www.scrameta.net](http://www.scrameta.net)

Or you could buy a real 800XL!

<comment><USER8> I'd recommend Altirra even if you're on Linux, it works well through WINE.

</comment></comment><comment><USER9> I remember good old times when I used ZX Spectrum (actually it was 100% compatible soviet-clone).

I dreamed to create a game. That's why I actually started programming.

I wanted to create animation.

When I started with Basic I noticed that Basic interpreter is way too slow to update video memory (even for fraction of screen).

Then I discovered world of compiled languages with Pascal. It was much more fun than Basic but still too slow to update video memory.

Then I moved to assembly language (actually I only had list of opcodes and I had to put them in memory directly). It was much more fun than Pascal and speed was great but still not enough for animation if you write straight- forward implementation.

Then I discovered that if you put performance-critical code into lower-memory addresses it runs much faster.

Unfortunately, I didn't finish my research because I had no access to internet and books.

<comment><USER10> > Then I discovered that if you put performance-critical code into lower- > memory addresses it runs much faster.

Do you mean higher memory addresses?

Code in the lower 16KB of RAM (addresses 16-32KB) has contended memory access with the ULA, which causes the CPU to pause while the TV raster line is drawn.

Code in the upper 32K does not have this issue.

</comment></comment><comment><USER11> Chris is awesome. He created the Game Developers Conference and an early journal on game development. He encouraged collaboration and sharing in an industry that was very secretive.

</comment><comment><USER12> Well, lets see what I can do to help this effort....

Here is a link to an Atari 2600 emulator with every game. There's also a loader to load in any game or rom. That would allow near-instantaneous game and application creation via this tool

[http://ipfs.io/ipfs/QmacAqRVhJX9eS7YJX1vY3ifFKF9CduDqPEgaCUS...](http://ipfs.io/ipfs/QmacAqRVhJX9eS7YJX1vY3ifFKF9CduDqPEgaCUSa4x5xb)

It's also using something called IPFS, or Inter-Planetary File System. That got a bit of press earlier on with the left-pad situation and package managers regarding npmjs. Effectively, it's a worldwide GIT repo backed by a self- certifying file system, a Bittorrent type transmission between nodes, and Kadmelia and dHT for host detection.

(Edit: Really? I offer something that is relevant, at least orthogonally. And yet, -1's. Cant the ones that downvote provide a reason, even if from a throwaway account? And it's not even a controversial opinion...)

<comment><USER13> The 2600 is _totally_ different from the 8-bit computers, just so folks know. Programming an Atari 800 computer was a walk in the park compared to the living hell on earth that was the 2600.

[I wrote a few Atari 800 game cartridges. I watched one of my cow-orkers mentally deteriorate as he attempted to write a simple 2600 game over maybe four months -- not kidding. He gave up and was a happier person for it].

<comment><USER14> At APh (the consulting firm that designed the Mattel Intellivision, wrote its system software, and most of the early games for it) the biggest insult you could give to a programmer was to tell them their Intellivision game looked like an Atari game.

This was NOT a slam against the Atari programmers. It was a reference to the graphics hardware limitations of the 2600, which made it ridiculously difficult to do things that were easy on Intellivision.

Not that Intellivision was a walk on the park...the mode most games used for the colors of things that were not sprites was demented, but at least the hardware sprites and their collision detection, along with the system software that automatically handled animating a sprite and moving it at a fixed velocity, saved us from many nightmares that 2600 programmers had to endure.

The 2600 had sprites, but they had limitations. I don't recall with absolute certainty what they were (when Mattel decided to do Atari games and some of that work was contracted to APh, I was not involved--I was working on games for what would have been the next generation Intellivision if the industry had not collapsed and laid me off, so my 2600 details are mostly what I remember Hal Finney and the others involved in the Atari games telling me), but my recollection is that there were limits on how many sprites could occupy overlapping vertical positions, and getting their horizontal position right involved software timing, so you had to do things like make sure different code paths took the same number of clock cycles. That is not fun.

<comment><USER15> I'm finishing up this book - [https://en.wikipedia.org/wiki/Racing_the_Beam](https://en.wikipedia.org/wiki/Racing_the_Beam) \- which goes in to a lot more detail - really interesting reading :)

<comment><USER16> If you enjoyed that, you might also enjoy It's Behind You ([http://bizzley.imbahost.com/](http://bizzley.imbahost.com/)). It talks about porting R-Type (side-scrolling space shooter) to the ZX Spectrum... and similar fun around squeezing down high-end (for the time) arcade games to run on hardware that shouldn't really support it - a great read!

</comment></comment></comment></comment></comment><comment><USER17> I loved my Atari 800XL, and while I had a few computers before it, this is the one I cut my teeth on learning how to program. Its hardware was really interesting and forced you to be quite inventive to get the most out of it.

<comment><USER18> I started with the Atari 400. It was quite fun to program, and I was a bit disappointed when the school finally got Apple IIe and I couldn't figure out why they were "better" than an Atari 800. They certainly weren't as fun to program. I gotta admit that I do miss 6502 assembly.

</comment></comment><comment><USER19> It looks like a cross between Klaus Nomi [1] and the Three Stooges [2]!

[1] [http://40.media.tumblr.com/cfb98ae2e453a1402aaab4a676a4da16/...](http://40.media.tumblr.com/cfb98ae2e453a1402aaab4a676a4da16/tumblr_mibzom1vfw1qcn8iqo1_400.jpg)

[2] [http://www.frieze.com/sites/default/files/Editorial/Bowie3.j...](http://www.frieze.com/sites/default/files/Editorial/Bowie3.jpg)

</comment><comment><USER20> Talking of Chris Crawford he has an interesting Patreon: [https://www.patreon.com/ChrisCrawford](https://www.patreon.com/ChrisCrawford)</comment>