Show HN: Take It Apart - <AUTHOR> https://www.takeitapart.com <comment><AUTHOR> If anyone is interested in the tech stack, it's based on Django under uWSGI, and all of the services run within Docker containers. Pillow wasn't fast enough for us to resize and crop images, so we have some faster custom code there, and we run all images through jpegtran for lossless compression. [I particularly like being able to crop all of the images within a guide on one page, with an easy scroll between images.] Guide images are pushed to S3 by Celery, and we're using MySQL as the database (though we will likely move to PostgreSQL in the future). Logging is centralized by sending log messages to rsyslog on each container via named pipes rather than log files (primarily so we can use the community version of nginx). The container rsyslog instances then redirect to a central rsyslog container and finally to loggly. We use memcached.

We do dev on VMs, but the actual app runs on high-memory machines we picked up from eBay that according to Dell phone support are second-hand Facebook memcached boxes.

<comment><USER2> For images, we used to do it ourselves but then moved to hosted images (cloudinary). Much better, and allows stateless web servers.

<comment><USER3> The guide pages (e.g. [1]) are continually reloading for me. Maybe it's refreshing once per image load, or something, but I don't have the patience to wait. It did not reload continuously until I allowed JS on the page, which I did because JS is required to load images. Something seems broken.

Firefox 29.0.1 on Linux.

[1] [https://www.takeitapart.com/guide/72](https://www.takeitapart.com/guide/72)

<comment><AUTHOR> Thanks for the report. It should definitely not be reloading continually, but only on window resize to rescale the photo containers. We'll look into it. I've disabled the functionality for anonymous users for now. It remains a profile option for authenticated users.

Images are lazily loaded, but that should be triggering a rescale. We are working to rethink the rescale functionality, so fixes and changes are coming (after this weekend's Maker Faire).

</comment></comment></comment></comment><comment><USER4> It's probably standard legalese, but I find it funny that in the TOS ([https://www.takeitapart.com/terms-of-use](https://www.takeitapart.com/terms- of-use)) there is

        You acknowledge that (i) you own and are solely
        responsible for the content that you submit, post, or
        transmit

And

        You grant TakeItApart a non-exclusive, royalty-free,
        transferable, sublicensable, worldwide license to use,
        store, display, delete, reproduce, modify, create
        derivative works from, perform, and distribute your
        user content for the purposes of operating, developing,
        providing, promoting, and using our Site. Nothing in
        these Terms shall restrict our legal rights to user
        content.

Pretty much a "we own the content you submit, but if this bother someone, it's your fault and you'll face the aftermatch".

That said, it looks like a nice site, a crowdsourced iFixIt. Maybe the next time I take something apart I'll remember to take some photos (I'd me more willing to contribute if the TOS wasn't so restrictive, but since I still own my content I don't mind so much").

<comment><AUTHOR> One of the TakeItAparts here. We're certainly open to refining our Terms if others have been down a similar path before and have advice. My personal belief is to grant the user permissive rights, but we still need to worry about liability. We're certainly open to revisions.

<comment><USER5> Could you use a Creative Commons licensing scheme like Stack Exchange?

<comment><AUTHOR> It may be worthwhile for us to look into it, but everyone has their own favorite creative commons license so we risk offending people if we choose just one, and choosing multiple would likely complicate things for us in the future. IANAL, but some CC licenses, like one prohibiting commercial use are difficult to use/enforce since usage is difficult to define. Another issue is that if a creator wishes to regain control of a work, CC makes it difficult since the license is (as far as it was explained to me) perpetual over the term of copyright protection.

We have plans to add guide forking and merging in the future, so the licensing will need to allow derivative works. Our current license allows that while trying to still be reasonably fair to content creators (in particular due to the non-exclusivity). Since many car guides may begin by lifting the hood and removing the dust cover, they should be able to all fork from the same starting images, for example. There's also thumbnail generation, marketing screenshots of pages with guide images, etc.

<comment><USER6> So what if the original creator of a guide that has been forked and edited multiple times decides to revoke the license? Wouldn't you have to delete all forks and edits?

That's why FOSS and CC licenses are perpetual; to avoid building on potentially shifting sands.

<comment><AUTHOR> Great question. We'll be in touch with our lawyer.

</comment></comment></comment></comment></comment></comment><comment><USER7> "Welcome to TakeItApart.com False"

<comment><USER8> came here just to say this. looks like someone's binding is off?

</comment></comment><comment><USER9> To quote a blog post I wrote in 2006 [1]:

"To be fair to my parents, they did supply a vast supply of love, encouragement with my more sensible interests, pushed me in school (that was a lot of work and would have been much easier if I'd understood my personality type and learning style at the time) and provided an endless supply of items that I could take apart in an effort to satisfy my curiousity of "How this works" (they were especially happy when I became skilled enough to successfully reassemble these items)."

Perhaps it would be a good idea to show how to reassemble the more expensive items. Future parents would be grateful.

[1] - [http://codesnipers.com/?q=microivs-making-dreams-come- true](http://codesnipers.com/?q=microivs-making-dreams-come-true)

<comment><USER10> I still remember the first VCR I actually managed to get back together and working in all its dark wood panelled glory. I moved onto software a few years later to the excitement of my mother since I was a forgetful child with a lot of burn marks on the floor where I'd forgotten or dropped a soldering iron. Computer parts everywhere and a busy phone line were better than the risk of a burnt down house.

</comment></comment><comment><USER11> Everytime I see electronics like [https://www.takeitapart.com/guide/81](https://www.takeitapart.com/guide/81), I feel like "shit, how incredibly precise have robots become".

Those resistors on the last image, attached to the 3.5mm jack, are 0.3mm wide and 0.5mm high, and spaced together with next-to-zero distance. And yet, the pick+place process was exact enough that the components didn't just melt together.

Awesome.

<comment><USER12> Most of the magic doesn't come from the robots, it comes from the soldermask. Surface tension from molten solder will move misaligned parts by a surprising amount:

[http://youtu.be/N_195d7bP9M?t=3m10s](http://youtu.be/N_195d7bP9M?t=3m10s)

<comment><USER13> That solder mask is cool, but placing epoxy dots before placing the component works pretty good, especially if a reflow oven is used anyways. Misaligned components at high-tolerance has been an issue with solder masks, and not all silicon based solder masks are CE-compliant. The time it takes to drop epoxy dots is less than the time to retouch and realign the component.

I used to program PNP and CNC machines back in the heyday of Cray, then moved up to developing the software to program PNPs and CNCs (shit, I've come a long way since then but still miss the sweet smell of lead in the morning from the wave solderers) improving "fiduciary" operations and increasing speed, accuracy, and feeding.

</comment></comment></comment><comment><USER14> Why does it say "Welcome to TakeItApart.com False" on the banner? Is it false that I am welcome? ;)

(I'm assuming it's a bug...consider this a bug report)

Very cool site. I've needed something like this for a while. I'll bookmark it, and when I have more time I'll be glad to contribute information about Logitech trackballs and some Asus Eee PCs which gave me disassembly trouble a while back!

<comment><AUTHOR> Ha, that's embarrassing. That boolean was a test statement that slipped through; it's fixed now. :)

Having guides on trackballs and Eee PCs would be wonderful, and I'm sure they would be helpful to others!

If you do submit guides, we'd also welcome feedback on the guide creation process and any suggestions you may have to improve it.

</comment></comment><comment><USER15> It would be cool if it had some sort of exchange for the individual parts after tear down. For instance I have an old smart phone with a broken lcd, but I'm sure the other parts are working. If I could use this site to document the teardown and sell or trade the individual components afterward for something I need on current project, that'd be epic.

<comment><AUTHOR> That's a great idea. Fulfillment could be a problem, but maybe we could just connect people who have parts with those who need them? The best we do currently is create Octopart links for hover-over notes that are marked as components.

<comment><USER16> Email us at contact at octopart.com! Let's see if we can do something even better together.

</comment></comment></comment><comment><USER17> Do none of the teardowns include text? Descriptions of how to do specific steps are super useful if any of the steps are tricky or hard to show visually.

<comment><AUTHOR> I'm one or the TakeItAparts. I definitely agree that text descriptions are essential. The site is just getting going and we wanted to have some content on the site, but we haven't had a chance to fully annotate the guides. That said, the guide creation process allows you to add Markdown text blocks to each image (or video) as well as the guide itself, and images can be annotated with hover-over photo notes. The photo notes themselves can optionally be tagged as "components" (for part numbers), making salvageable or repairable components easy to search for and enumerate.

</comment></comment><comment><USER18> Secure connection: fatal error (1066)

[https://www.takeitapart.com/](https://www.takeitapart.com/)

Unable to verify the website's identity (OCSP error).

The response from the online certificate validation (OCSP) server was too old.

<comment><AUTHOR> One of the TakeItAparts here. We've seen this in browsers where the OCSP request fails (on the Comodo side), but the browser does not fall back to a CRL check. What browser were you using when saw the error?

<comment><USER18> Opera 12.16

<comment><AUTHOR> It looks like this is a known problem with Opera 12.16[1][2]. According to the linked thread, a workaround is to disable opera:config#SecurityPrefs|OCSPValidateCertificates (obviously not ideal).

You might see if it is fixed in 12.17.

I do get an OCSP response if I run:

        openssl s_client -connect takeitapart.com:443 -tls1_2 -tlsextdebug -status

Qualys also shows OCSP is working (though seemingly not part of the A+ rating)[3].

1\. [http://forums.opera.com/discussion/1773932/broken- websites-t...](http://forums.opera.com/discussion/1773932/broken-websites- twitter-tumblr/p1)

2\. [https://www.google.com/search?{google:acceptedSuggestion}oq=...](https://www.google.com/search?{google:acceptedSuggestion}oq=opera+12.16+The+response+from+the+online+certificate+validation+\(OCSP\)+server+was+too+old&sourceid=chrome&ie=UTF-8&q=opera+12.16+The+response+from+the+online+certificate+validation+\(OCSP\)+server+was+too+old)

3\. [https://www.ssllabs.com/ssltest/analyze.html?d=takeitapart.c...](https://www.ssllabs.com/ssltest/analyze.html?d=takeitapart.com)

<comment><USER18> Ah, thank you for your time on this. :) I'm sorry to hear it's a browser end problem.

</comment></comment></comment></comment></comment><comment><USER19> I'd rather want putitbacktogether.com.

Disassembling something I can usually figure out easily, but putting it back together is not that straight forward.

</comment><comment><USER20> I learned of a similar site yesterday, [http://www.ifixit.com/](http://www.ifixit.com/)

<comment><USER15> A computer repair shop I worked for used ifixit everyday. Big pictures, warnings when you can easily break stuff( I severed many a flex cable when a started), and clear instructions. The only setback is the range of devices well documented. Once you get outside of mainstream devices, or something made a year or two ago, the docs get skimpy.

</comment></comment><comment><USER21> Why does it keep refreshing the page?!

0.7082894736842106 f39efb125de9.js:922 "scaled container width: 566.6315789473684"

<comment><AUTHOR> OP here. If you saw that on a guide page, that's an experimental script we're trying to rescale image containers to the viewport. A window resize would trigger a refresh. It's not clear if we'll keep the behavior. If you make an account, there is a profile option to turn it off (as well as the always-on hover over notes).

<comment><USER22> It would probably make sense to disable that effect on mobile--the constant address bar disappearing and reappearing mobile browsers do triggers a lot of refreshing. Maybe just listen for orientation-change events instead?

Very cool site otherwise, keep it up!

<comment><AUTHOR> Great tip, thanks. It's been added to our To-Dos. We're reworking that functionality in general so it may be a little while before the fix is included, especially with all of us on deck for the Maker Faire this weekend.

</comment></comment></comment></comment><comment><USER23> Hey Chris! I wonder if you remember me. I wrote the post on the Compaq Presario R3000 back in 2006.

I'm glad to see you still have the website going and even got the .com for it.

<comment><AUTHOR> Nice to be back in touch, here and out of band.

</comment></comment><comment><USER24> Very nice. I don't have to dig through youtube anymore to fix stuff. Good choice on pictures vs videos btw. I don't have to trace back.

</comment><comment><USER25> As someone said, a crowdsourced version of iFixit. I will definitely keep this bookmarked because I usually try to fix my phones, gadgets myself.

<comment><USER26> iFixit is all user-contributed / crowd-sourced. [http://www.ifixit.com/Contribute](http://www.ifixit.com/Contribute)

</comment></comment><comment><USER27> If you're interested in informational and entertaining videos of someone taking things apart, check out the EEVblog teardown series: [http://www.eevblog.com/episodes/](http://www.eevblog.com/episodes/)

Allowing video guides (linking to them, if you can't handle the bandwidth of serving them locally) on your site would also be a good idea.

<comment><AUTHOR> Dave Jones' video blog is fantastic. I love it.

We can handle a mixture of videos and images in our guides. Any video files selected during guide creation are uploaded directly to a user's youtube account via oauth, without leaving our site.

None on our team are great at video editing, so we haven't emphasized that capability of the site. There are a few videos in this guide to give an idea of how it _could_ work (as a potential alternative to singular lengthy videos):

[https://www.takeitapart.com/guide/40](https://www.takeitapart.com/guide/40)

</comment></comment><comment><USER28> Secure connection: fatal error (1066)

[https://www.takeitapart.com/](https://www.takeitapart.com/)

Unable to verify the website's identity (OCSP error).

The response from the online certificate validation (OCSP) server was too old.

<comment><AUTHOR> Are you on Opera?

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

</comment></comment><comment><USER29> I love this website. I like the variety of products.

<comment><USER29> It would be cool if you also had someone explain a little about the internals of the product. I really enjoy watching these khan academy videos. Check them out for an idea of what I am talking about:

[https://www.khanacademy.org/science/discoveries- projects/Rev...](https://www.khanacademy.org/science/discoveries- projects/Reverse-Eng)

<comment><AUTHOR> We want to create a culture on the site that explains the engineering and industrial design concepts behind the items on the site. How to inculcate that imperative isn't clear, but we're starting with community outreach and then hope to lead by example (the Roku guide is a step in that direction).

We were at the World Maker Faire in New York last fall, and we'll be at the Bay Area Maker Faire in San Mateo this weekend [come visit us! :-) ]. At each Maker Faire we brought a supply of e-waste items that faire goers could take apart themselves. As they turned screws and pried access panels we explained what components do, and some of the design decisions that went in to the products. The reception was phenomenal, particularly among school kids (with a roughly even breakdown of interest between the genders). We are also reaching out to Makerspaces to spread awareness.

We're hoping that the site will evolve to provide a similar virtual experience to the one Faire goers experienced at the Maker Faires. Essentially, we want the site to show that it is okay to take things apart, whether to repair, to salvage components, or to learn. The hope is that the guides on the site, submitted by users, will allow anyone to "take something apart" without having to pick up a screwdriver.

Creating a new guide is as easy as uploading a bulk selection of images, and clicking "Continue" a few times. Basic image editing like rotation and cropping can be done on the site, and it's easy to include image annotations and tool lists.

<comment><USER29> My quora question relates to this, please answer if you can:

[http://www.quora.com/What-are-some-good-books-or-classes- abo...](http://www.quora.com/What-are-some-good-books-or-classes-about- product-design-for-manufacturing?__snids__=444547391&__nsrc__=1)</comment></comment></comment></comment>


Hydrogen turned into metal in stunning act of alchemy - <AUTHOR> http://www.independent.co.uk/news/science/hydrogen-metal-revolution-technology-space-rockets-superconductor-harvard-university-a7548221.html <comment><USER2> Does anyone know if it is meta-stable, or is that just where the research is heading?

<comment><USER3> Looks like it'll be a few months before we know if it's metastable at ambient pressure; they're planning to do the pressure release experiments at one of the national labs [0].

Here's the preprint [1] of the Science paper [2], and the HN discussion [3].

[0]: [http://harvardmagazine.com/2017/01/metallic- hydrogenhttp://h...](http://harvardmagazine.com/2017/01/metallic- hydrogenhttp://harvardmagazine.com/2017/01/metallic-hydrogen)

[1]: [https://arxiv.org/abs/1610.01634https://arxiv.org/abs/1610.0...](https://arxiv.org/abs/1610.01634https://arxiv.org/abs/1610.01634)

[2]: [http://science.sciencemag.org/content/early/2017/01/25/scien...](http://science.sciencemag.org/content/early/2017/01/25/science.aal1579http://science.sciencemag.org/content/early/2017/01/25/science.aal1579)

[3]: [https://news.ycombinator.com/item?id=12875868https://news.yc...](https://news.ycombinator.com/item?id=12875868https://news.ycombinator.com/item?id=12875868)</comment></comment>


MIT NSE Nuclear Information Hub  - <AUTHOR> http://mitnse.com/

<comment><USER2> The wikipedia "Timeline of the Fukushima Nuclear accidents" is the most up to date source I have been following - [http://en.wikipedia.org/wiki/Timeline_of_the_Fukushima_nucle...](http://en.wikipedia.org/wiki/Timeline_of_the_Fukushima_nuclear_accidents)

<comment><USER3> Another frequently updated source: <http://iaea.org/newscenter/news/tsunamiupdate01.html>

<comment><USER4> Thanks for that link, that is the best source of facts without unnecessary blabber that I've seen so far.

The IAEA site also confirms the radiation level that I heard in various places: _As reported earlier, a 400 millisieverts (mSv) per hour radiation dose observed at Fukushima Daiichi occurred between Units 3 and 4._

Just so that we're clear: 400mSv/h is a _serious_ amount of radiation. A short-term exposure of 1Sv is a ballpark value for acute radiation sickness, and you'd get that in 2.5h.

Like the IAEA says, that's a point value right in the plant, but if the workers were exposed to that sort of radiation level, saying that "no one will die from radiation here" is not justifiable.

</comment></comment></comment><comment><USER5> I find it extremely interesting (and by that I mean suspicious) that the Siemens astroturf post "Why I am not worried about Japan's Nuclear Reactors" has been migrated from a quote-unquote "personal" WordPress blog onto a quasi- official MIT website that was suspiciously purchased Sunday evening. Not only that, the text of the post has been so dramatically altered that it no longer says anything about not being worried, or how the concrete containment will prevent anything from possibly going wrong.

This entire thing smells like a huge PR stunt from a company (Siemens) that recently donated money to MIT and has a huge economic interest in preventing any bad publicity about nuclear power from appearing in the media.

I actually find it shameful that HN can be so easily duped by this obviously doctored information.

See my comment here: <http://news.ycombinator.com/item?id=2319278> when this "news" was posted Sunday.

<comment><USER6> If you have reason to believe that the information is doctored, it would be a better idea to explain why. Attacking the messenger is fine for scoring points in a debate, but it isn't going to bring anything valuable to the discussion. We should be thinking about the people who are confused and scared right now, not Siemens and their bottom line.

<comment><USER7> He did explain why.

<comment><USER6> Because the guy made an incorrect assumption before he had the proper data, or something else? Most people did that, it's obviously not an unfixable problem. Also, can't we just ask some guy who was working at the plant if there is a third stage? How does this guy know that it hasn't been upgraded?

</comment></comment></comment></comment><comment><USER8> Siemens astroturfing [http://geniusnow.com/2011/03/15/the-strange-case-of- josef-oe...](http://geniusnow.com/2011/03/15/the-strange-case-of-josef- oehmen/)

<comment><USER9> FWIW, Josef Oehman has posted some explanation on the original blog post: [http://morgsatlarge.wordpress.com/2011/03/13/why-i-am-not- wo...](http://morgsatlarge.wordpress.com/2011/03/13/why-i-am-not-worried- about-japans-nuclear-reactors/)

I think the primary problems here are insufficient concrete information, and also masses of confirmation bias in both directions (leading people to essentially find whatever they want to find in a mass of conflicting information.) At least the information should become increasingly clear over the next month or two, which should cut down somewhat on the second problem.

</comment></comment><comment><USER10> This is a good site. And our prayers are with the quake survivors in Japan and the responders who are working to contain the problem during this horrible disaster.

Any model of nuclear power reliability would have a high degree of uncertainty (due to intractability) and would need to account for arbitrary faults in design, siting, construction, operation, and monitoring. In CS there's a concept of "byzantine fault tolerance" where every processor in a network can fail in arbitrary ways.

The minimum reliability rate predicted by the safety model would need to be on the order of 1-10^-8 to have assurance that major catastrophic events would not be likely to occur within some reasonable time span.

How much confidence can you have that a model is consistent with reality to within 8 or 9 decimal places in order to overcome the minimum acceptable reliability level? We cannot come close to this in a complex, realistic system analysis. This is not like other problems we normally encounter, where the minimum acceptable reliability to prevent an immediate global catastrophe is orders of magnitude lower.

Due to high model uncertainty and low acceptable failure rate, it is difficult in principle to come up with a convincing pro-nuclear argument whose lower interval didn't have a high expected death rate.

In this case, the heroism of the emergency responders was the difference between an immediate catastrophe and the current situation. Logistical problems and equipment failures impeded the response. Had the delays been exacerbated or had there been other complications (such as aftershocks that weakened the system), it's easy to see the delays could've been extended to the point where intervention wouldn't have been as effective.

Solar thermal power generation and wind are safe alternatives that can provide all 474 exajoules of earth's global energy demand. It's cheaper than the alternatives when externalities are properly accounted for and the initial investment would be a reasonable fraction of global GDP (certainly much less than the global financial crisis cost and it would actually stimulate the economy). Technology is ready. However, there are primarily sociological hurdles now (how do we get powerful polluters to change course?)

Why should anyone have to die for electricity? Renewable energy is safe. Emergency responders and residents are all at serious risk.

[http://news.stanford.edu/news/2011/january/jacobson-world- en...](http://news.stanford.edu/news/2011/january/jacobson-world- energy-012611.html)

<comment><USER11> <http://en.wikipedia.org/wiki/Nuclear_and_radiation_accidents>

Look at how many accidents there have been since 1961. That's in the world, total. Only a few of those actually resulted in radiation being released to the environment. Nuclear power is unbelievably safe. Think about what it would take to replace the amount of nuclear energy being produced in the world now. Just a guess of course, but I think the butterfly effects of getting rid of nuclear power would be even worse than if there were some sort of catastrophic failure in Japan right now. It's not as simple as "nuclear energy in an accident would be catastrophic, let's replace it with clean alternatives". There are many many other factors at play.

<comment><USER10> Historical analysis doesn't have enough comparable data points and there are significant failures on record. How many times has a reactor been hit with an 8.9 magnitude earthquake and a tsunami? There's only 1 data point.

Historical and simulation models both have large negative expected value (unless you can rule out a black swan event with a miniscule probability at around 10^-8 - unattainable certainty with current analysis).

</comment></comment></comment><comment><USER12> Does anybody know what time this was posted? I don't think it was 4:51 PM (if so, what time zone would that be? It's now 2:42pm US EDT).

<comment><USER4> system_clock_uses_UTC ? ;-)

<comment><USER12> Ah, with the "PM" I didn't think UTC-- I always use 24 hr. Thanks.

</comment></comment></comment><comment><USER13> So far, the best layman source on these events.</comment>


30 Years of Operating Systems in the Movies - <AUTHOR> http://accessmaincomputerfile.net/

<comment><USER2> This is a great collections of computer interfaces. Thanks

</comment><comment><USER3> the Wall Street one looks like a real app.

<comment><AUTHOR> I agree, it looked like the workstation was running standard Windows with very basic UI settings.

<comment><USER3> Oh, I meant it looked vaguely familiar, like a real trading app. Maybe old Fidessa or something?

The left hand screen, lower right corner is running Bloomberg.</comment></comment></comment>


Why You Should Always Use === and Other Bad Practices - <AUTHOR> http://fifod.com/why-you-should-always-use-and-other-bad-practices/

<comment><USER2> This illustrates way better what is wrong with that piece of code: [http://stackoverflow.com/a/500531/2570866](http://stackoverflow.com/a/500531/2570866)

The speed shouldn't be the issue. If it is, please start using a library like Lo-Dash [1], a faster version of Underscore.js. Actually, please just do that in general so you won't make mistakes like this.

[1] [http://lodash.com/](http://lodash.com/)

</comment><comment><USER3> I'd draw an entirely different lesson from this -- namely, killing time by doing "100 other minor cleanup changes to a bunch of different files" on a 40,000 LOC legacy production system that (apparently?) has no tests sounds like a Really Bad Idea(tm). Don't mess with code you don't understand if you don't have even the basic safety net of decent unit tests in place.

</comment><comment><USER4> I am scratching my head at how someone can write a blog post correcting code and leaving such egregious code as a revision. The last snippet of code is still busted and very cringeworthy

The proper way to do alternate behavior for the first iteration, would be this... It's O(n) versus the authors O(2n)

        if(attributeArray instanceof Array) {
            if (attributeArray.length >= 1){
                // do something with attributeArray[0]
                for (var i = 1; i < attributeArray.length; ++i)
                    // do something different with attributeArray[index]
            }
        }

<comment><USER5> Not to mention the anti pattern of doing this in the first place.

When manipulating collections - you almost always want .map .filter .reduce .some .all or a variation of thereof and not a plain old for loop for this sort of thing, doing this a million or a billion times a second theoretically shouldn't matter. (explained in : [http://stackoverflow.com/a/17253577/1348195](http://stackoverflow.com/a/17253577/1348195))

Also, checking for instanceof Array is a JS anti pattern to begin with and makes code a lot less generic.

<comment><USER4> I agree that the Array methods are extremely useful other than their ugly performance-sacrificing function scope. In this case though, when you need alternate behavior for the first index, it is much clearer to read a standard for loop with some precursor code behind it, than to read a forEach loop with an if-else.

<comment><USER5> Really? You find the above loop more readable than:

        if(array.length > 0) doFunction(array[0]);
        array.slice(1).forEach(doOtherFunction);

<comment><USER4> You're kind of cheating because you're using slice which will create a copy of the Array, and that's not cheap if the array is large.

<comment><USER5> People use arrays for things like queues and stacks all the time in JavaScript - they're _much_ slower than hand rolled collection (eg. [http://jsperf.com/deque-vs-array-2](http://jsperf.com/deque-vs-array-2) ) - why not micro optimize that as well?

If you have a very large array of course optimization can/should be considered but that's simply not the average case.

<comment><USER4> I actually like the slice code for it's ease of readability. Functional methods are extremely nice and I hope they get faster and faster with the optimization of JS JITs.

I never heard of Dequeue [1], that is mighty cool. I agree that premature optimization is not good - but when it can be done cleanly without hurt to the readability of the code, I'd say to keep it in ones' repertoire, to effectively write more performant code, more often, on average.

[1] [http://code.stephenmorley.org/javascript/queues/](http://code.stephenmorley.org/javascript/queues/)

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> That code snippet is also using a faulty technique for identifying an Array. Although it will work for the majority of cases, if you're using an array from a different iframe, the instanceof check will fail since the Array constructors are not the same.

You should be using Array.isArray ( ES5 compatible browsers ), or Object.prototype.toString.call( obj ) === '[object Array].

Lodash, Underscore, and jQuery all provide utility methods to do that comparison for you.

<comment><USER5> Should probably do `.length` to detect it's iterable and not do a type check since that's an anti pattern anyway.

<comment><USER7> That would happily accept and iterate over a string, which wouldn't be desirable.

</comment></comment></comment><comment><USER8> Also, putting 'var' in a loop header is debatable because it gives the false impression that the variable "i"'s scope is confined to the for loop, when in reality it will be alive throughout the containing function. JSLint would bark.

<comment><USER9> I don't think it gives that impression at all.

In JavaScript the rules for scope are clear—it's lexical scoping nested at the function level. Loops, conditionals, etc... have no bearing on scope.

</comment></comment><comment><USER10> Better title: "Why Javascript's for/in loop is more useless than a sack of busted assholes".

<comment><USER5> Also, Object.keys is much nicer and doesn't have a lot of the same issues.

</comment></comment><comment><USER11> The only problem here was that a for/in loop was being used. Iterating the array, rather than its properties, was clearly what was actually wanted. However, the author uses the opportunity to take a strong stance in favour of always using strict equals, even though it was never a bug here anyway. As far as I can see, the only argument this article produces against double equals is that overzealous developers might accidentally break your code trying to be proactive.

Strict equals is something I only use when necessary in javascript. Despite the "taboo" surrounding double equals, I rarely face situations where its use adds brittleness to the code. Is there some horrible danger that I am just not seeing?

<comment><USER12> Well in this case, the original author was relying on '0' == 0 for their code to work. Even if you were dead set against using strict equality (which is silly, but whatever), the code is still disingenuous and should have tested index == '0' to make its intent clear. There's no other value that they could have being relying on it to coerce without some other very nasty things going on.

> _overzealous developers might accidentally break your code trying to be > proactive_

It's not just people changing your code, it's people trying to read your code (including you, months later).

</comment></comment><comment><USER5> That's stupid, the reason you should not use `for... in` isn't because it's slow, it's because it's reflective.

It's using reflection over object keys to iterate an array. This just happens to work because JavaScript arrays are also objects.

`myArr.forEach(function(el){ // do things here });`

Is perfectly fine.

<comment><USER5> Also, [http://stackoverflow.com/a/17253577/1348195](http://stackoverflow.com/a/17253577/1348195)

</comment></comment><comment><USER13> I'd recommend putting comments around code that appears like it may be wrong, or just avoiding such code as proposed. For instance, if I must do assignment within a conditional, I would at least put a comment the line before saying that assignment was intentional. But it's worth writing the assignment on its own line for clarity.

</comment><comment><USER14> Why you should not use "should" or any other imperative in your HN contributions if you don't want to be downvoted to hell and back.

</comment><comment><USER15> garbage in, garbage out.

<comment><USER4> JCVM sure has some issues (Javascript Coder Virtual Machine)

</comment></comment><comment><USER16> Is it me or the title seems to suggest the use of '===' considered as a bad practice ?</comment>


Vexing exceptions - <AUTHOR> http://blogs.msdn.com/ericlippert/archive/2008/09/10/vexing-exceptions.aspx <comment><USER2> This is good food for thought. When doing service design, I came up with three levels that have some similarities - however - the main focus I had was on if the client code can/should be expected to recover from the exception/error condition.

1\. Execution of the method _failed_. The calling client code can't do anything about it. For example, some system failed.

2\. Execution of the method _failed_ , but it's the fault of the calling client. Again, at runtime the client can't be expected to recover.

3\. Execution of the method _succeeded_ , but not on the primary path. For example, you asked for some data using and ID that no longer exists (e.g. someone else transacted whilst you were). The calling client code could be expected to take action to recover.

</comment><comment><USER3> I think many developers believe they must avoid crashes at all costs and add try/catch blocks to catch the Exception base class, which initially sounds like a good idea but usually just hides subtle bugs which are 10x harder to fix later.

This article does a great job of classifying exceptions and explaining when you should, and shouldn't, add try/catch blocks.</comment>


WASM as a Platform for Abstraction - <AUTHOR> http://adventures.michaelfbryan.com/posts/wasm-as-a-platform-for-abstraction/ <comment><USER2> WASM advocates keep rediscovering the benefits from bytecodes as portable execution format, while presenting them as something great made possible only by WASM.

Reading a bit of mainframe history would do some good it seems.

<comment><USER3> > Reading a bit of mainframe history would do some good it seems.

I wonder if anyone has a list of awesome mainframe features so that we know what modern computing is going to "invent" next? :P

(See also: hot-swappable parts, virtualisation, containers, etc... I never got to work with mainframes myself, just each time I dig into some new "industry game-changer" tech, I learn that mainframes had it in the 60's)

<comment><USER4> Someone was circulating the IBM 360 "principles of operation" recently, which sounds like a good way to start.

The trick is identifying which parts were abandoned by mistake, and which parts were abandoned because they were genuinely bad. Nobody wants 21st century JCL. [https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/...](https://www.ibm.com/support/knowledgecenter/en/SSLTBW_2.1.0/com.ibm.zos.v2r1.ieab200/iea3b2__Examples_of_JCL.htm)

<comment><USER5> We already have a 21st century JCL: Kubernetes.

</comment></comment></comment></comment><comment><USER6> While I do agree WASM makes a lot of sense for the Web, I personally am having doubts regarding treating WASM as a general abstractions for native code as used in the post. For this case, it might suit the job better to have a bytecode that resembles more of underlying machine architecture, rather than a still highly abstracted model like WASM. Please don't get me wrong, I do agree WASM is already one step ahead of, say, JavaScript, but we can do better than that.

The problem with WASM here, is that it really is a bloated model like JVM in its early days, huge amount of work is needed to make it closer to native speed, which is contradictory to the original slogan. What's more, people are still planning to add tons of new features to it: [https://webassembly.org/docs/future- features/](https://webassembly.org/docs/future-features/). Before you tell me those are opt-in features, the question I want to raise is: for an abstraction of general platform, you would definitely want to have a widely accepted standard so people know what features will be expected, one example is that people know SSE will be available for 64-bit x86 code.

With all those opt-in features, I doubt if we can have a proper layer that adapts well to different implementations with different supported features. We might end up with the situation like Rust, where you can claim a secondary compiler could exist, but in practice people are all using the same compiler/implementation.

<comment><USER7> Besides, doesn't LLVM already have an IR which servers as one such higher- level abstraction?

<comment><USER8> Google created pretty much this, called it PNaCl and shipped it in Chrome. It now has been retired in favor of WASM.

<comment><USER2> Because Mozilla went political and came up with asm.js as counter technology.

<comment><USER9> Or as some other (like, eg Google itself) would say:

> Because Mozilla went political and came up with asm.js as better technology.

<comment><USER2> I am pretty sure that asm.js would not happened if Chrome already had the market share it enjoys nowadays.

WASM is still catching up to PNaCL in performance, hardly better.

</comment></comment></comment></comment></comment></comment><comment><USER10> The author has rediscovered the need for software fault isolation (SFI). Bytecodes or IRs like WASM can also provide SFI but are overkill because they provide more than just SFI.

If I were him, I'd have used this as an excuse to play with NativeClient.

\--

The original paper on SFI was by Robert Wahbe and colleagues: [https://cs155.stanford.edu/papers/sfi.pdf](https://cs155.stanford.edu/papers/sfi.pdf).

Google's NativeClient is a modern take on SFI for x86: [https://static.googleusercontent.com/media/research.google.c...](https://static.googleusercontent.com/media/research.google.com/en//pubs/archive/34913.pdf).

<comment><USER11> Unfortunately, NativeClient has been abandoned.

</comment></comment><comment><USER12> Yo dawg we herd you like abstractions so we put a VM in a container-runtime in a hypervisor in your CPU so you can use JIT compilation while you use other JIT compilation

</comment><comment><USER13> The requirements

1\. People need to be able to upload new code while the system is still running 2\. This application will be interacting with the real world (think robots and automation), and we really don't want a crash in user-provided code to make the entire system stop responding

is suspiciously close to Erlang, except for the user-provided part.

</comment><comment><USER14> Lots of wasm questions:

In what sense can a wasm program "crash?" What sort of backtraces are available in that event? How's the debugging story?

Is there a fast wasm runtime available for non-JIT platforms? Is there big- endian support (still hanging on)?

<comment><USER15> Wasm programs can only crash by triggering a "trap", which has the well defined semantic of aborting the entire (wasm) function stack at that point. It depends on the embedding host how much backtrace or debugging support you get for this.

I'm not sure exactly what you mean with non-JIT platforms, As far as I know, most wasm hosts that generate native code just compile the entire wasm module at once, so its less like a JIT runtime and more like a regular compiler.

If you mean not compiling to native code at all, then you just have the performance of a plain old stack machine bytecode interpreter. Not sure how many there are currently and how well optimized they are though.

About big-endian - afaik little-endian is just the spec for storing to wasm's linear memory - the actual representation of stack values can be arbitrary (since you can not inspect their bytes directly).

</comment></comment><comment><USER16> You could also bring back genetic algorithms/genetic programming on top of WASM ;-)

</comment><comment><USER17> Strange. Something like node.js for running server side WASM programs, maybe. But hard real time? That's a strange application for this. Why add the additional layer?

<comment><USER18> Where does it say hard real time?

<comment><USER17> Where it says: "While this section will be fairly specific to my use case (creating some sort of programmable logic controller that people can upload code to), it should be fairly easy to adapt to suit your application."</comment></comment></comment>


Wallets that Metamorphose Depending on Your Financial Situation - <AUTHOR> http://www.good.is/post/proverbial-wallets-wallets-that-metamorphose-depending-on-your-financial-situation/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+good%2Flbvp+%28GOOD+Main+RSS+Feed%29&utm_content=Google+Reader <comment><USER2> Hmmm, I would short this idea.

The trend will be away from wallets to phones. No need for a wallet to carry your credit card in, if your phone uses near field communication to be a credit card itself.

A widget on your phone that can display a picture of a full/empty wallet would be more in line with where the world is going, in my opinion, then an actual wallet that I have to charge batteries, bluetooth pair to my phone, etc.

<comment><USER3> I'm pretty careful nowadays about carrying the bare minimum of stuff in my wallet, so I've rationalized down to the stuff I really need. But in addition to debit and credit cards, my wallet has a driver's licence, an employee ID card, a couple of health insurance cards, a stored-value smartcard for public transport, and a random "free movie ticket" voucher that I'm gonna get around to using one of these days. Oh, and some cash.

Even if I gave up using cash and rolled all my credit cards into my phone, I'm still carrying around a bunch of cards from random bureaucratic organizations which don't have much interest in changing their systems to enable me to avoid carrying around their little card. I'm not sure how a phone-based driver's licence would work (considering that I mostly use my driver's license to as proof of age to get into bars). Besides, my wallet is a convenient place to keep stuff, like that movie ticket I mentioned earlier.

Besides, damn near every time I try to buy something the clerk is obliged to try to convince me to acquire one of the loyalty cards for whatever store I'm at. Ohh, little plastic cards aren't going anywhere any time soon.

Oh, and my phone battery goes flat often enough as it is. If this left me not only _incommunicado_ but also moneyless, this would be a serious problem.

<comment><USER2> I suspect I will also continue to carry a wallet. (a cloth one, not one with bluetooth in it)

The point of the bluetooth wallet is to remind you of your bank balance since you're using electronic payment. My point was that, when you go to buy something with electronic payment, it will be with your phone ... and so you won't be opening your wallet in the first place, even if you do still have it in your pocket to carry your pizza coupons.

</comment></comment></comment><comment><USER4> _The Mother Bear [wallet] (pictured) has a hinge that makes it harder to open if you are approaching monthly budgets._

Seriously, that is funny.

</comment><comment><USER5> I like the concept of these wallets, but the idea of having to plug my wallet in every night to charge a battery is less than appealing. I think the simplicity of the wallet, especially in today's world of smart phones, is one of its most attractive features.

<comment><USER6> Wireless charging stations will probably prevail eventually. If they went that way, all you'd have to do is stick it next to your phone on a charging pad - you probably already have them near each other frequently.</comment></comment>


Mun-lang v0.2 – hot reloadable structs - <AUTHOR> https://mun-lang.org/blog/2020/05/16/release-mun-v0-2-0/ <comment><USER2> How does it compare to Dyon?

<comment><USER2> Okay, I read it myself.

Mun is AOT compiled and uses garbage collection.

Dyon isn't AOT compiled and uses lifetimes.</comment></comment>


Reality distortion field - <AUTHOR> https://en.wikipedia.org/wiki/Reality_distortion_field <comment><USER2> Is there any connection between this and "The Trouble With Tribbles" (Star Trek episode written by David Gerrold of "When H.A.R.L.I.E. Was One" fame)? It's an unlikely coincidence at the very least.</comment>


JPL C Coding Standard [pdf] - <AUTHOR> http://lars-lab.jpl.nasa.gov/JPL_Coding_Standard_C.pdf <comment><USER2> > There shall be no direct or indirect use of recursive function calls.

> [The] absence of recursion prevents runaway code, and helps to secure > predictable performance for all tasks.

I can see the reasoning here, but wow, banning recursion..

<comment><USER3> That sorta goes hand-in-hand with "There shall be no use of dynamic memory allocation after task initialization." Which in my experience is the harder rule to deal with. It's not that often that you really truly need recursion. It happens, just not often. But no allocations, that radically changes how one codes.

But, these rules are for safety on embedded systems with very small amounts of memory. These represent the best lessons learned, the best ways to guarantee your function will finish in finite time and not run out of memory.

<comment><USER4> "But no allocations, that radically changes how one codes."

But this does not forbid implementing ones own memory manager that uses blocks from a huge continuous buffer.

<comment><USER3> True. Though I don't work at JPL or speak to what they would allow or forbid, but if you did implement your own memory manager, I imagine that you'd still need to write code that guarantees it will never run out, which might be harder to do if you have this abstraction. The spirit of these rules is to be enable code writing that is obviously correct and finite in time and space, at a glance.

So I'm in pure speculation land here, but I could see JPL frowning on rolling your own memory manager. Though I also imagine many applications of these rules happen on hardware that is small enough to make writing a memory manager overkill anyway.

</comment></comment></comment></comment><comment><USER5> [https://news.ycombinator.com/item?id=4339999](https://news.ycombinator.com/item?id=4339999)

</comment><comment><AUTHOR> Here's a great video with a bit more background about why you'd want to adopt such a standard.

[https://www.usenix.org/conference/hotdep12/workshop- program/...](https://www.usenix.org/conference/hotdep12/workshop- program/presentation/holzmann)

</comment><comment><USER6> > The goto statement shall not be used...

> ...often results in improved code clarity

Um not really, if goto is used _right_ it clarifies code immensely.

<comment><USER5> They're avoiding the "not used right" problem in flight control software.

The full quote is "Simpler control flow translates into stronger capabilities for both human and tool-based analysis and often results in improved code clarity. Mission critical code should not just be arguably, but trivially correct."

So there are reasons beyond code clarity.

Seems reasonable to me.

<comment><USER7> Gotos _are_ trivial. They map directly to unconditional jumps at the assembly level.

They're one of the best ways to implement exception handling in C (look at how the Linux kernel uses them).

It's also not unusual to have conditionals that don't nest. Of course, if you really want to avoid using a goto, you have the option of duplicating a lot of code in order to satisfy all the code paths, decreasing readability and making it harder to maintain. Or you can just use a goto and not worry about it.

I do understand _why_ people want to avoid 'goto', but Dijkstra wasn't always right...

<comment><USER8> I was at JPL when we were developing these standards. C was still pretty new there, they used FORTRAN almost exclusively before that.

In practice, this rule had little impact. The only time you could justify using a goto was for cleanup, and you could always end-run around the rule.

        ... blah blah ...
        if (error)
           goto fail;
        ... blah blah ...
        if (error)
           goto fail;
        ... blah blah ...

      fail:
        ... cleanup ...

just gets turned into

      do {
        ... blah blah ...
        if (error)
            break;
        ... blah blah ...
        if (error)
            break;
        ... etc...
      } while (0);
      if (error) {
        ... cleanup ...
      }

</comment></comment></comment></comment><comment><USER9> >The JPL recommended static analyzers are fast, and produce sparse and accurate messages.

I'm interested in what analyzers they may be recommending. I think this is a field that's come a long way since 2009.

A lot of these standards could actually be implemented as rules in modern products, which would assist with using them.

<comment><USER10> The lead author of this standard is Gerard Holzmann, a Fellow of the ACM and a member of the NAE. He works at JPL, and has been instrumental in introducing code analysis to flight software (e.g., [http://lars- lab.jpl.nasa.gov](http://lars-lab.jpl.nasa.gov)).

The analyzers JPL currently uses are Coverity, Semmle, CodeSonar, and Klocwork. Coverity seems most common.

Of course, Gerard was an author of Spin ([http://spinroot.com/spin/whatispin.html](http://spinroot.com/spin/whatispin.html)).

</comment></comment><comment><USER3> It's lovely reading a coding standards document that is 100% focused on code safety, and has zero stylistic argument.

These rules are a good reminder for me, too. A lot of them were habit when I was doing C/C++ on game consoles. Using more dynamic scripting languages on machines with more and more memory over the years has helped me forget. But most, if not all, of these rules have valid analogues in any language that can be aspired to.

</comment><comment><USER11> Why were parts of the standard omitted? Money, national security, or both?

<comment><USER12> According to the document itself - copyright. LOC-5 and LOC-6 can't be reproduced because they are copyright MISRA, and Appendix A can't be reproduced because it is copyright ISO. Both documents are publicly available to anyone willing to pay for them. So national security / government secrecy doesn't appear to be a reason here.

</comment></comment><comment><USER13> I was hoping there would be a mention of always using metric units.

</comment><comment><USER14> Anyone happens to have a link to MISRA-C PDF ? :)

<comment><USER15> I hope you realize your asking people to publicly commit a crime. Not making any value judgements, I just wanted to make sure you're aware.

<comment><USER16> Breaking the law, sure, but crime? Simple copyright infrineent tends not to be criminal. Other stuff is meeded - like selling the copyright material.

<comment><USER15> The colloquial use of the word crime means an action that breaks a law.

<comment><USER16> No, the colloquial use doesn't include stuff for which you can't be punished by the state. It's not a colloquialism, it's just an error.</comment></comment></comment></comment></comment>


Good Eyesight? Thank Snakes (Longer article) - <AUTHOR> http://abcnews.go.com/Technology/DyeHard/story?id=2371692&page=1

<comment><USER2> I've heard the name "Snakes" before but I don't remember where.

<comment><USER3> You're talking about the game?

</comment></comment><comment><USER4> (The article isn't very long). But wait. How did primates get to South America?</comment>


Normalize Android: Turning off HTC Sense UI on the HTC EVO 4G, Incredible, etc. - <AUTHOR> http://www.buildcontext.com/blog/2010/05/23/turning-off-htc-sense-ui-senseui-htc-evo-4g-incredible-android-phones/

<comment><USER2> I got an Evo at I/O and I'm new to Android. Is there any way to install a stock Google Android distribution on this phone? So far my impression is that the UI is awful, but I'm not sure how much of it is due to "HTC Sense" and how much is just Android.

I don't particularly care about losing the ability to upgrade from one version of Android to the next; a wipe is fine.

<comment><USER3> I've been using Android phones since December 2008 and I also hate HTC's Sense UI. Let me tell you that the standard Android UI is much much better. I'm also looking for a way to completely kill the existing os and do a clean install of vanila Android, but I haven't found anything yet.

<comment><USER2> Hmm, the freedom to hack the phone without jumping through hoops was, for me, one of the major attractions of Android over the iPhone. An effective vendor OS lock-in makes Android a lot less appealing to me, especially when the usability of the vendor OS is markedly worse than iPhone OS.

<comment><USER3> Indeed, it is disappointing that carriers are doing this. I suppose Google has the power to stop them if it wishes, but that might require a rewriting of the Android license agreement. I don't know, I'm not an expert on this stuff.

I currently have four Android phones, but I only really use my N1 since Sense is basically unusable compared to standard Android in my opinion. If only the UI were configurable, I might use all four.

<comment><USER4> Google could rewrite the android license agreement, but that would make the platform less appealing. HTC would stay in the game but it's questionable whether the slackers like Sony Ericsson would. The awful truth about Android is that while Apple and Google know software, none of the people Google is partnering with, handset makers or telecoms, do. None of them understand what it takes to make high-quality, defect free software, or what 3rd party developers need from a platform, or what end-users expect from software. I can tell you that having sold to and consulted for them, and having family members who've worked for them, the telecoms are particularly clueless about these things. Hence we have them selling _new_ smartphone with Android 1.5, in spite of the damage this does to the android development world.

</comment></comment></comment></comment></comment><comment><USER5> Is the fractioning of Android a problem? A person has to go through a fairly non-intuitive process to turn of sense, requiring a guide to figure it out. It will not occur to most people that this is even an option.

The new phone sounds pretty amazing, but is it a problem that people are going to have to relearn how to use their phone?

I'm speaking from an average consumer point of view, not us hacker geeks here on HN. Most people are not as adaptable to new technology as the audience is here.

Apple is now lagging in terms of features, but the user experience is consistent across devices. I know when I buy my new iPhone next month, the transition process will be seamless. Nothing will have to be re-figured out or relearned. I will know exactly how to do everything I need to do. This quality user experience is hard to quantify on a feature list, but I believe is very valuable nonetheless.

<comment><USER6> "Nothing will have to be re-figured out or relearned."

Phew, sounds like the iPhone must be hard to learn to use; a lot of investment? Every time I buy a new make of phone I need to learn how that make (and sometimes model) works. I just suck it up in the knowledge that learning is part of life. I've only used one Android phone (with Sense UI) so I can't comment on how different it is from vanilla Android. But I managed to pick it up fairly quickly, to the extent that the differences from iPhone OS that initially annoyed me, I started to prefer in a few days.

<comment><USER7> It's not necessarily a matter of it being hard in a "I can't figure out how to do this!" way, but just in the amount of cognitive effort that's required to learn how to do things a new way. Including _unlearning_ the muscle memory of doing them the old way.

So it's a matter of comfort and ease, things that are especially important on such personal devices.

</comment></comment></comment><comment><USER8> This only gets you part of the way there. Icons, some menu options, the built- in browser, and I believe even the keyboard are still 'Sense-ified'.

<comment><USER9> Seriously? Thank you for letting me know; I was going to get an Evo on the 4th but not after learning this. I'm glad I didn't find this out after purchasing.

<comment><USER10> you should try out sense, many people consider it an improvement over stock android.

<comment><USER9> I have, and I hate it. Here is a good article I share the same thoughts with: <http://news.ycombinator.com/item?id=1330600>

</comment></comment></comment></comment><comment><USER11> What would be awesome is to be able to revert your UI from HTC Sense to the stock Android that is easily upgradeable to new versions of Android.

I got the Evo and I'm not keeping it mainly because I won't get the latest and greatest version of Android right away.

<comment><USER12> While not likely to happen, a dual-boot system would be ideal.

</comment></comment><comment><USER13> It puzzles me why phone vendors would invest money into writing and maintaining a layer of marketing-heavy UI when most people would probably be perfectly happy with standard Android.

This was a great and useful tip.

</comment><comment><USER14> I really don't get why people don't like the Sense UI? I've had the G1 and now the N1, but i think the Sense UI i've tested on the G1 with some Hero-ROM was awesome.. it just was far too slow for the G1.

<comment><USER15> There are lots of little things I dislike:

\-- The icons are confusing. They all look the same. After 6 months of using the HTC Hero I still have to just guess what most icons do

\-- The media player is terrible (doesn't play video, does a poor job showing music, very slow if you happen to have more than a few albums)

\-- To search your contacts in the dialer app you have to type the name using a T9 keyboard. This is ridiculous.

\-- The contacts app is _very_ slow. Could be the hardware but it takes at least 15 seconds to show my contacts and scrolling is not smooth.

Unfortunately these instructions did not work on my HTC Hero. It just relaunches Sense when I hit home.

<comment><USER16> Have to agree with you, what I don't get from a UI perspective is the plus sign on the bottom bar of your homescreen. It's there to add icons/apps to your homescreens but how often is that going to happen that you need a button for the purpose all of the time. Long-touching an app or blank space gives you the same options. It's just a waste of space.

Alternate UI's should be optional,if only for faster OS upgrades.</comment></comment></comment>


Gboard: A Keyboard Just for Gmail Users - <AUTHOR> http://mashable.com/2009/12/04/gboard/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+Mashable+%28Mashable%29&utm_content=Google+Reader <comment><USER2> This is really cool. I'm not even a huge Gmail user, but if I had one of these I think I'd use it more often. Maybe something like the Optimus Maximus keyboard (<http://en.wikipedia.org/wiki/Optimus_Maximus_keyboard>) could be made in this form factor to allow layouts to be made for keyboard shortcuts of many different websites?

</comment><comment><USER3> That "faux-to" at the bottom is a HORRIBLE photoshop perspective hack. It's obviously a 2D image that's been skewed and hacked to look 3D with the buttons moved to look like they overlap. I call shenanigans.</comment>


Quest Diagnostics is dismissing temporary, contract workers - <AUTHOR> https://www.reuters.com/article/brief-quest-diagnostics-inc-is-dismissin/brief-quest-diagnostics-inc-is-dismissing-temporary-contract-workers-idUSFWN2C10SY <comment><AUTHOR> Letter from CEO Steve Rusckowski [https://www.sec.gov/Archives/edgar/data/1022079/000094787120...](https://www.sec.gov/Archives/edgar/data/1022079/000094787120000380/ss171507_ex9901.htm)</comment>


Ask HN: How did you find an audience for your startup or project? - <AUTHOR> How did you find the audience of initial users for your startup or side project? <comment><USER2> In my experience, your expectations shouldn't be as optimistic as success stories like that of Slack, which had 8000 companies signed up before they launched their product. It's wise to assume that your customer acquisition would be wearyingly slower. You don't have to start with 20-30 customers but just 1-5, who get the value out of your product.

For the last product, which I shut down due to lack of traction, the most valuable leads I received was when my product got featured in a newsletter without being asked. I had posted a comment on a Blog post which described a complicated GA setup to achieve something that my product could do without effort and the author forwarded it to his subscribers.

I think that sums it up quite well: look for people who have the same problem as you're solving and pitch them your product. Any other marketing effort: paid ads, blogging, events require too much investment and I don't think they should be recommended if you're bootstrapping a small product.

<comment><USER3> Wow, I didn't know that slack did that, any idea how they did that?

</comment></comment><comment><USER4> My advice is B2B-type centric, but the principles likely apply in other contexts.

I've used and seen this approach used to both validate, grow and shut down projects.

Build a list of people. Should be your target audience, but if you can't do that, find people that are adjacent or gatekeepers. Ideally this would be ~10 people, but if it's 3, start there anyway.

Go with a specific question/ask. Interview them. Then get them to ask you questions back. Answer as honestly as you can ("I don't know" is fine, but follow up with your suggested process).

At the end, ask who else you should speak with. If you're on the right track, your network and opportunities will grow. If you're not, it'll shrink to nothing. Repeat.

Good luck!

</comment><comment><USER5> From your competitors! I'm not kidding.

If there's a market for your product, there will be an alternative product for it. Like for me, I had a recipe app. My competitors were recipe blogs, Facebook pages, and groups. If you're building something SaaS, there might be a WordPress plugin doing the same thing.

Your product should be 10x better than the solution they hacked together. If no solution was hacked together, it's possible there's no market for it or that you haven't done enough research before building the product.

There might be some exceptions though, like a note taking app, where the competitor is a piece of paper with no community.

</comment><comment><USER6> In a former life, I was a product developer, I now consult other pre-rev/pre- money/broke product developers on features, ux, and marketing.

I wrote up a nice narrative a while back [1] on my two "first" products I built. The first "first" was on accident, and the second "first" was... kind of still on accident.

[1] [http://jeremyaboyd.com/my-first-product- launches/](http://jeremyaboyd.com/my-first-product-launches/)

</comment><comment><USER7> Before building any project or startup find where your focused audience are at and try to get closer to them through social networks. So when you build the product, you could ping them back to be your early users.

<comment><AUTHOR> where would you start to look for the focused audience?

<comment><USER8> Check Amy Hoy's sales safari. Jonathan Stark has mentioned looking for conferences and publications/newsletters that cater to your target market.

<comment><AUTHOR> This reminds me a lot of the Market Map from Pat Flynn's book. Its the same idea. Maybe he picked it up from her.

</comment></comment></comment></comment><comment><USER9> By networking with people who could potentially benefit from using it. This takes time.

</comment><comment><USER10> Or how did you find the people your product would innately appeal to.</comment>


TSA tweets a pic of the money they steal - <AUTHOR> http://www.washingtonpost.com/blogs/wonkblog/wp/2015/06/30/why-the-tsa-posted-a-photo-of-cash-filled-luggage-on-twitter/

<comment><USER2> Please do not use the titles of HN submissions to editorialize.

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

<comment><AUTHOR> The title I used does not violate the rules you linked to.

<comment><USER2> "Please use the original title, unless it is misleading or linkbait."

Your title broke that rule both by not being the original and by being more linkbaity.

In general, we want to minimize editorial spin in titles. I wrote about this yesterday if you're interested: [https://news.ycombinator.com/item?id=9816242](https://news.ycombinator.com/item?id=9816242).

</comment></comment></comment><comment><USER3> This crap is really sickening.

Not this story in particular, but the fact that you can have all your cash seized with no legal recourse is plain ridiculous in a first-world country.</comment>


Ask HN: How do you manage your PINs? - <AUTHOR> I don't keep them in my password manager because pulling out a pwmng for a quick entry seems wasteful. Also, in some places pin's are shortcuts for passwords (like Windows 10) so keeping them in the password manager doesn't feel right/safe...<p>How do you guys manage your PINs? <comment><USER2> If it's a numeric PIN I don't use very often, I save as a phone contact. For example, in my country our phone number have 9 digits, so if my PIN is 1234 I save it as: 985061234 under a relative or fake name.

</comment><comment><USER3> its only a 4 or 6 digit number and you rarely have that many of them unlike passwords so i just remember them. its not actually that much of a stretch for most people to do, if you think back to the days before you carried a mobile with you at all times you likely knew at least 10 peoples phone numbers by memory so memorizing pins is easy</comment>


Ask HN: Did the HN ranking algo give more weight to 'Show HN' submissions? - <AUTHOR>

So, it seems for most of today about 70-80% of the front page have been "Show HN" submissions... nothing wrong with that, I enjoy seeing what people have built and am more-than-happy with the new 'Show' link and page in the header.<p>But did the algo change to give more weight/life to Show HN submissions? Or is this extra exposure purely down to how easy the Show HN submissions are to find now? (And that the announcement drew attention to that fact?) <comment><USER2> No - just the announcement triggering a lot of amazing people to share and support.

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

<comment><USER3> This is correct. If you look at the vote counts you'll see they're there because people voted for them.

</comment></comment><comment><USER4> I don't think so, but in my opinion it would be better if they're weighed down (instead of up). That way anyone interested can go to /show and the good stuff still makes it to the front page.

Or like muppetman suggested yesterday ([https://news.ycombinator.com/item?id=7986578](https://news.ycombinator.com/item?id=7986578)), make it a profile option whether to show them on the front page. Or perhaps add a weight field as a profile option? That should make everyone happy I think.

<comment><USER5> Not that all entries of Show HN are shining, but I'd rather read about people's creations, rather than "Can we guess which teenagers will binge drink" and some of the other popular garbage that shows up on HN.

We need more news that connects us and lets us know how we can help each other via our creations.

<comment><USER4> Isn't that what /show is for? I personally just don't have the time to play with and use all the products that people around here make, I'm on Hacker News for the general (hacker) news; not hacker productions. I agree that the drinking teenagers link isn't too interesting and I haven't read it (but I saw it too), but it still is closer to the kind of news I'm looking for than all the Show HN's.

I see what you mean and there sure is an audience for connecting hackers/makers with each other, but I think /show does that better than the front page. Of course if I'm wrong, the show stories will be upvoted enough and I'll need to find another website for my news. Nothing wrong with that. I just think that the current amount of Show HN's is a bit too much and, since we have /show now, _maybe_ we should weigh them down or make it an option field (even if the current volume is only due to the announcement).

<comment><USER5> For this to work, it has to have at least a specific community volume, and it won't have that volume if it's buried as a link in that obscure menu up there, while the homepage of HN is "regular" news.

Power of defaults, and so on.

A better deal would be a portal home page showing some news, some Show HN entries, and maybe other sections that can be added.

<comment><USER6> How about an option to not show them at all then?

I mean, I enjoy seeing a few of them a day show up on the front page, but when more than half the front page is nothing but Show HN that detracts from _my_ experience, though it may not have the same impact for you.

If the default is to show them and to allow them to whiteout the front page, I would rather have an option to not see them at all personally, which I do think is unfortunate but that's how I feel. I enjoy HN for the news and light sprinkling of Show HN, not the other way around.

Edit: fixed typo

<comment><USER7> Give it some time, it'll pass.

There's the Erlang days sometimes or whenever Apple releases something I don't want to read HN for a couple of days either.

</comment></comment></comment></comment></comment></comment><comment><USER8> The combination of this being a new feature and the "Show HN" posts now having a dedicated page simply gave them a big boost in exposure.

I doubt it has anything to do with the algorithms. I will, however, be interested to see how things settle once it is no longer a _NEW_ feature.

<comment><USER9> With dedicated pages, it's giving the appearance of "subreddits" in a way. What I'd really like to see in those terms:

1\. News 2\. Technical 3\. Show HN 4\. Ask HN (maybe)

<comment><USER10> There is already /ask, which shows stories that don't have a URL.

</comment></comment></comment><comment><USER11> I think more people created show hn posts to capitalize on the novelty of showing up on the new list.

<comment><USER12> And also the increased visibility on the new list may have made them gather more upvotes?

</comment></comment><comment><USER13> From an engineer's point of view, it was probably either change the algorithm or increase exposure. I don't think they've done both, so I would say it's just the extra exposure.

</comment><comment><USER14> An increase in "Show HN" could be partially explained by the recent closure of Freshmeat (Freecode).</comment>


Ask HN: Helping non-tech people to increase online security/privacy? - <AUTHOR> Josh T. Jordan (https://plus.google.com/u/0/+JoshTJordan) posted this in a private thread on Google+:
Friends who are internet security experts, A bunch of us non-CS majors are highly motivated to start using VPNs, end-to-end encryption, and other privacy-related best practices. But some of us don't know how to do that. What are some specific services or apps that you recommend for improved privacy that don't require a huge amount of technical expertise? For example. I use Protonmail for encrypted email and I use Signal for SMS. I haven't figured out how to set up a VPN on my PC, let alone my Android phone, but I'd be happy to do so if someone pointed me in the right direction. The problem I've experienced is that someone will explain that I need to start doing a thing, then tell me that the only program that does that thing is either A. expensive or B. hard for beginners to set up. That's not helpful. Imagine if I said to you, this job requires that you write an essay, but essay writing classes cost $300 dollars and all of the DIY essay writing videos on Youtube are in Esperanto. That would be discouraging. So, can you name some specific apps or best practices that, say, someone who knows how to use Google+ can figure out?
I got his permission to share this here, hoping the HN community can provide pointers to resources suitable for people with limited tech knowledge. <comment><USER2> Check out the guides at [https://ssd.eff.org/](https://ssd.eff.org/). They've been written to be easy to follow for a general audience.</comment>


Ask HN: What are the data-sources for Google Maps ? - <AUTHOR>

What are the sources of excellent geo-location data possessed by Google Maps ? I am wondering that, even with large amount of volunteer work involved, why is OSM data not comparable to theirs in terms of quality ? <comment><USER2> They used to buy it all in, but seem to be sourcing more and more internally and algorithmically derived from public sources. This is good because it gives them more control and licencing flexibility, but has led to a (temporary?) decline in quality and some very odd errors e.g. fictitious villages based on typos and roads in the UK having french names.

I wouldn't judge OSM by US data by the way. Each country has different levels, partly based on what their Governments have released and what the community is like. Which is partly true of Google as they rely on volunteers to contribute in some nations.

</comment><comment><USER3> what is your metric for quality?

<comment><AUTHOR> 1 > Wide Coverage.

2 > Accuracy.</comment></comment>


Living abroad gives you a creative edge - <AUTHOR> http://www.economist.com/science/displaystory.cfm?story_id=13643981 <comment><USER2> Duplicate submission.

<http://news.ycombinator.com/item?id=612033></comment>