The little ssh that (sometimes) couldn't - <AUTHOR> http://mina.naguib.ca/blog/2012/10/22/the-little-ssh-that-sometimes-couldnt.html <comment><USER2> Well, while we're at it, here's my crazy MTU-related war story, although not as crazy as that one!

I was troubleshooting with a user of an audio streaming application running over a LAN. The user could stream classical music but not rock music. Seriously. Classical was fine, but when streaming rock, the connection would drop after a few minutes.

The application took chunks of audio, compressed them with a lossless codec, and then sent each chunk in a separate UDP packet to the other end. It tried to use IPv6 whenever possible because it was generally more reliable in the LAN environment, although it would happily use IPv4 if need be.

After a _huge_ amount of boring troubleshooting going back and forth with this guy, I finally figured it out. Somehow, he had set his network interface's MTU to 1200 bytes. IPv6 won't perform automatic IP-level fragmentation for MTUs below 1280 bytes, so larger packets simply could not be sent at all. The streaming application would try to send an audio packet larger than 1200 bytes, get an error, and bail out of the connection.

Why did it only happen with rock music? Turns out to be pretty simple. Lossless codecs are necessarily variable bitrate, and classical music compresses better than rock music. When streaming classical, each chunk of audio consistently compressed to less than 1200 bytes, but rock music produced occasional packets over the threshold.

The user didn't know why his MTU was turned down and didn't need it, so we turned it back up and everything worked just fine.

<comment><USER3> I love this sort of insane-sounding problem descriptions. Here's one that happened to me: WiFi disconnects when I visit Gmail, and doesn't reconnect until I reboot Linux. Cause: Gmail's chat thingy uses Flash, which for some reason does some webcam initialization, which triggers a bug (in combination with crappy hardware) in the uvcvideo kernel module which leads to a timeout which leads to the whole USB bus going down. Which includes the WiFi chip.

<comment><USER2> How long did that take you to figure out? I imagine that would drive me completely mad.

</comment></comment></comment><comment><USER4> This is insane. The closest scenarios to this I've seen in my career:

1) A private frame relay network that one day stopped passing packets over a certain size. Worked around by lowering the MTU at both ends till I was able to convince the frame relay provider that yes, the problem was in their network. This was relatively straight-forward to diagnose, but it was still odd being able to ssh into a box, then have the connection hang once I did something that sent a full-size packet (cat a large file, ls -l in a big directory, etc).

2) A paging gateway program I wrote (email to SMS) that worked fine when testing on my Mac, but couldn't establish connections to a particular Verizon web site when I ran it from a Linux box. Turned out that the Linux TCP stack had ECN enabled and at the time the Verizon website was behind a buggy firewall that blocked any packets with ECN bits set.

3) A Solaris box that could randomly be connected to, but not always. Turned out someone had deleted its own MAC address from its ARP table (yes, you can do this with Solaris) so it wasn't replying to ARP packets for itself. As I recall, it could make outbound connections, and then you could connect to it from that same peer until the peer timed out the ARP entry. Then the peer couldn't reach the Solaris box again.

None of these are nearly as complex as the scenario in this story.

<comment><USER5> > someone had deleted its own MAC address from its ARP table

 _blink_

Two questions:

\- Is there _ever_ a valid reason to do this?

\- How do you attain the skills required to do this while not also learning _not_ to?

<comment><USER6> So, I was working at a very small internet service provider in a rural area in the mid-nineties. For the lack of affordable hardware, we were using Linux machines for routing, and a lot of "unconventional" solutions were necessary due to insufficient hardware being used. Tunelling, and other virtual interfaces of any kind were used often.

I remember one particular case were we running both routed IP and bridged ethernet over a single frame-relay link, and there we had to resort to fixed ethernet-to-ip mapping (turning off ARP) on the bridged link for some reason I really can no longer remember.

</comment></comment></comment><comment><USER7> Reminds me of a problem I had with a T1 circuit corrupting packets.

Shortly after bringing up a second T1 into a remote location we discovered that some web pages would show broken JPG images at the remote site.

Some troubleshooting revealed that this only happened when traffic was routed over the new T1. The old T1 worked just fine. Pings, and other IP traffic seemed to work over either line but we kept seeing the broken image icon for some reason when traffic came over the new T1.

We tried several times to confirm with the telco that the T1 was provisioned correctly and that our equipment matched those telco parameters. Still had some mangled bits going over that new T1.

Finally had the telco check the parameters over every span in the new (long- distance) T1 circuit and they eventually found one segment that was configured for AMI instead of B8ZS (if I can remember correctly, certainly it was a misconfigured segment though).

The net result is that certain user-data patterns that didn't include sufficient 0/1 transitions would lead to loss of clock synchronization over that segment and corrupted packets. Those patterns were most likely to occur in JPGs.

Once they corrected the parameters on that segment, everything worked as expected.

Quite a bit of head scratching with that one and lots of frustration as the layer-1 telco culture just couldn't comprehend that layer-2/3 Internet folks could accurately diagnose problems with their layer-1 network.

<comment><USER8> One of my fellow ISP admins (silicon.net, I was elite.net) had the same problem around 1995. GIFs would load on web pages but not JPEGs. They'd load for some amount of time and then hang.

The way he diagnosed it was to do a transfer of /dev/zero out one link. It worked. But it stopped almost immediately out the problem link. It turned out to be the same problem -- no zero bit stuffing configured on the line.

By the way, this same technique, known as "weak bits", was used as a floppy and CD/DVD copy protection scheme.

</comment></comment><comment><USER9> That is an awesome story. If you're in devops I would suggest you look at the sequence of events, especially the debugging decision tree. You can't always get access to all of the machines but you can create 'views' by going through them. Sort of like astronomers using a gravitational lens.

We had a similar issue at Blekko where a 10G switch we were using would not pass a certain bit pattern in a UDP packet fragment. Just vanished. Annoying as heck, the fix was to add random data to the packet on retries so that at least one datagram made it through intact.

<comment><USER10> Sounds more like a workaround, less of a fix :P. Weird stuff!

</comment></comment><comment><USER11> On a related note I used to be the person who got to go see customers who had problems with our software that the support desk couldn't solve. This often meant one or two day trips to glamourous industrial estates on the edge of various cities all around the world.

About 3 visits in a row I went to look at problems (core dumps or errors) that the customer could reproduce at will, only for them to be unable to replicate the problem with me present on site.

I sat at one customer (in sunny Minneapolis) for 2 hours in the morning with the customer getting increasingly baffled as to why he couldn't get it to fail; it had been happily failing for him the previous evening when I was talking to him on the 'phone. We gave up and went for lunch (mmm, Khan's Mongolian Barbeque). A colleague of his called him midway through lunch to tell him that the software was failing again. Excellent I thought, we'll finally get to the bottom of it. Back to their office and ... no replication; it was working fine.

As a joke I said I should leave a clump of my hair taped to the side of the E450 it was running on. The customer took me up on that offer and, as far as I know (definitely for a few years at least), the software ran flawlessly at that customer.

It's the closest I've got to a "'more magic' switch" story of my own.

</comment><comment><USER12> This is why good DevOps people are worth their weight in platinum. As a developer who has done just enough administration to be dangerous, I can easily say that my job is always far more enjoyable when there are good DevOps folks around to keep my systems happy and shield me from the crazy place that is the Internet's wiring.

</comment><comment><USER13> The striking thing about this story is that even after the problem was solved by re-routing traffic around the bad hardware, the author continued to investigate until the ultimate cause was tracked down. This almost obsessive desire to understand the true causes of problems (whether they be related to operations, software development, or whatever) is one of the things that makes people really good at what they do.

</comment><comment><USER14> Reminded me of this:

<http://www.ibiblio.org/harris/500milemail.html>

<comment><USER15> The numbers in this story do not add up. For a connection to be made within 3ms, there needs to be a round-trip within that time, which reduces the maximum possible radius by half.

<comment><USER16> Also, don't both photons in fiber and electrons in copper wire travel around 60% of the speed of light?

<comment><USER11> In most fiber optic cable photons travel at about ~65% of c. The exact number depends on the refractive index of the fiber.

For electricity: Paraphrasing <https://en.wikipedia.org/wiki/Speed_of_electricity>

The 'Current' travels along a wire at anything between 97% and 60% of c (depending on insulation; more insulation == slower).

Individual electrons in copper wire travel much more slowly. The 'drift velocity' is roughly proportional to the voltage; for low voltage DC it is the order of millimeters per hour.

For AC voltage individual electrons don't have any net movement since they're oscillating back and forth with the alternating current.

</comment></comment></comment></comment><comment><USER17> I love reading weird bug stories like this. Is there a place where lots of these types of stories are aggregated? Maybe a book about them?

<comment><USER18> Does it count if they're weird misconfigurations which may or may not have been set by a human?

<http://rachelbythebay.com/w/2011/08/16/window/> <http://rachelbythebay.com/w/2011/07/02/ninja/> <http://rachelbythebay.com/w/2012/01/08/blackhole/> <http://rachelbythebay.com/w/2012/01/18/alertstorm/>

There are many more. Unless specifically noted, they all happened to me at some point.

<comment><USER17> Thanks!

</comment></comment></comment><comment><USER19> A dev submitted code and broke our build once, when we looked at what he submitted there appear to random syntax errors in it. On his workstation the code was correct however.

We tracked it down to a switch that was corrupting packets enough that the TCP checksum wasn't sufficient protection, and the packets would simply pass their checksum despite having been altered.

The out come was that we always use compression, or encryption, as an added layer of protection.

</comment><comment><USER20> Hey, I had this problem! Exactly the same symptoms, although I never got as far as dumping actual packet contents. But I did verify that packet loss (of various sizes) was not the culprit. It was SSH (and some monitoring TCP connections) that failed (hung), always precisely at the same moment.

I suspected the VM code at the time, but it is very likely that my packets had to go through the same router (geography would support this).

I'm so glad somebody debugged this problem. Also, I'm quite glad that at least this time I'm not the only person with a weird issue (I have a knack for breaking things).

</comment><comment><USER21> Off-topic: can someone provide a good reason why SSH w/ the HPN patches is not the default for every SSH install on every platform?

Today, people are relying on SSH for binary transfer more than ever. SFTP and SCP are the new defacto file transfer standards between machine to machine over a secured connection. Source control like GIT (or even SVN) make heavy use of binary transfers over SSH. The performance benefit to the entire world is immeasurable. Yet unless you explicitly go out of your way to manually compile and install SSH-HPN, you don't get it.

That said, given how slow SSH is on Windows (GIT pushes and pulls are exponentially slower than on *nix or OS X), does anyone have a good link to a Putty HPN build?

<comment><USER22> I have to admit I felt pretty ignorant for not knowing what you were talking about. So, for anyone else in a similar situation: <http://www.psc.edu/index.php/hpn-ssh>

<comment><USER21> Don't. It's a very esoteric topic. Hence my frustration - I wish it weren't so!

</comment></comment></comment><comment><USER23> Can anybody think of an explanation why the 'bug' happened only after the 576th byte?

<comment><USER24> I loves me some speculation! Here goes:

576 decimal looks like this in other common bases:

      binary: 0000 00010  0100 0000
      octal: 1100
      hexadecimal: 240

My first inclination would be a firmware problem: was it upgraded recently? Are there any known problems with the version that was installed? Did you build it yourself? If we have access to the code, the information about the 'shape' of 576 may come in handy. Or maybe we just need to look at your build environment.

Assuming the firmware had not changed recently (very likely in gear that sits quietly doing its job without human intervention for long periods of time), then failing hardware becomes the suspect. Maybe a memory module is going bad and this particular byte is normally avoided (see intermittent failures in OP.) Maybe it's using flash to store transitory data and a particular cell is going bad. Maybe the unit has suffered vibration damage and a solder point related to memory has come loose.

Some of these are far less likely than others. I think of all these, I'd put money on a bad memory stick.

<comment><USER25> 576 bytes is the minimum datagram size that must be accepted by all nodes in an IPv4 internet.

In practice, on the modern Internet, you'll see tons of packets larger. So who knows; perhaps some massively outdated optimization in an ASIC somewhere resulted in different hardware paths for >576 bytes.

</comment></comment></comment><comment><USER26> I'd be pissed at a transit provider who mangled packets like this.

The more ambiguous situation is that early Juniper routers would fairly frequently re-order packets. That's nominally allowed, but a lot of protocols didn't like it.

There are way weirder things on satellite or other networks (spoofing acks, etc.).

</comment><comment><USER27> Great story - I've had MTU and firewall fun before but nothing so subtly treacherous.

I've been wondering about something not entirely unrelated we see sporadically from a small but widespread number of users. We serve deep zoom images and the client appears to run normally but sends malformed image tile requests - e.g. in the URLs "service" is consistently garbled as "s/rvice", "dzi" as "d/i". I've seen this from IPs on every continent and user agents for most common browsers as well as both iOS and Android. My current theory is that it's some sort of tampering net filter as a fair number of the IPs have reverse DNS / Whois info suggesting educational institutions but have thus far failed to confirm this, particularly since none of the users have contacted us.

</comment><comment><USER28> Awesome story.

<comment><USER29> it's nice to read something like this that's been written recently. it often seems like such war stories come from some golden past...

</comment></comment><comment><USER30> Nice analysis.

I had a similar problem, less hairy, involving a bad bit in a disk drive's cache RAM. Took a day or so to figure out a solid repro.

Stuff like this does happen. Handling bit errors in consumer electronics storage systems is an interesting problem, and one that I'd love to see more attention paid to.

</comment><comment><USER31> I'm curious how the kernel was able to diagnose that a single one bit always being fixed on the 15th of 16th bytes in the packet was corruption. That sounds like some intense algorithmic profiling especially if its being applied to every packet.

<comment><USER32> The kernel is rejecting packets that fail the checksum verification. It just happens that the source of the bit errors was behaving in this predictable way.

</comment></comment><comment><USER33> I felt a weird thrill as I read through your troubleshooting saga. Great job on finding the faulty node and nice work on documenting it.

</comment><comment><USER34> So this is one of those times that I find myself torn between labels.

A little background... I was brought up in the network ranks, I worked as a network / sys admin in high school, ended up working for an ISP as a junior network engineer in college (while I went to college at one of the first Cisco NetAcad baccalaureate programs - which was a combo of network study and Cisco curriculum and certifications) and have gone on to work in every major vertical since then for the past 10+ years; government, finance, healthcare, retail, telecomm, etc. I always tell clients and potential employers that having a network background generally gives me somewhat of an edge in the industry I primarily focus on: security, and I generally will study and take Juniper & Cisco tests and work on labs just to stay current. Most software devs and security folks I've run into (keep in mind there are a lot of really _good_ folks who have a better grasp on network than a lot of seasoned engineers do) are generally overzealous in the thought that they truly do understand IP from a debugging and troubleshooting standpoint.

Case in point: I interviewed for a "Network Architect" position with a very well known online backup company (think top 4). The interview was the most bizarre I've ever had, not that it spanned more than 5 interviews, but that every time they positioned a complex network problem it was generally solvable within 5 to 10 minutes of pointed questions. The software dev who was interviewing me was baffled by how I came to a reasonable solution that took them over a week, in some cases, that quickly - and it was pretty simple in the fact that 1) I've seen something similar and 2) that's what I studied and still have a passion for over the course of 20+ years (when I found the Internet in 1991).

Most of the time when I run across a "magical" problem it's because someone hasn't looked at it from L1 up. As this article showcases you generally have two generic stack angles to approach it from - application back down to physical, or the inverse. Having been in network support - by the time you get a problem like this it's often so distorted with crazy outliers that really have nothing to do with the problem your best bet is to start from that L1 and go back up through the stack. Reading into the problem the author describes I think there were some key data that was missed and/or misinterpreted. There most surely would have been key indicators in TCP checksum errors and it was glossed over pretty lightly in the explanation - but it's interesting that those items of interest are often cast aside when digging into something like this. Nobody in this thread has indicated where a bit error test or even something as simple as iperf, or similar, would have been able to more accurately showcase/reproduce the problematic network condition.

But back to the labels remark - I don't believe, as some people have said, that this is a DevOps role largely. I don't mean to cut down on DevOps folks because I think, at some level, if you're a jack-of-all in any org then that's your role, it is what it is. However, this would be a problem most suited towards a professional network engineer - and you don't see much of that need in the startup space until people get into dealing with actual colo / DC type environments, otherwise it's often very simple and not architected with significant depth or specific use cases.

Long story short: network professionals are worth the money in the case of design, build, fix of potentially issues that may seem complex to others, but can be solved or found in minutes when you know what you're looking at. That being said, I'm impressed that the OP dug into it to get to a point where he could ask a specific person (who was probably a network engineer / tech of some level) to validate/fix his claim.

</comment><comment><USER35> Wonderful! Thank you, author and submitter both!

</comment><comment><USER36> This is brilliant work. Thanks for sharing

</comment><comment><USER37> Weird connection problems like that sound like tcp timestamps breaking things. You can try turning it off across the board and see if your problems immediately clear up: [http://prowiki.isc.upenn.edu/wiki/TCP_tuning_for_broken_fire...](http://prowiki.isc.upenn.edu/wiki/TCP_tuning_for_broken_firewalls#Disabling_RFC1323_options)

<comment><USER28> This was demonstrably link-level corruption, though, so that's irrelevant, right? That's about higher-level failures.</comment></comment>


Code that everyone should know how to write - <AUTHOR> http://www.cyrusstoller.com/2015/10/27/code-that-everyone-should-know-how-to-write/ <comment><USER2> Exactly. There is really profound computer illiteracy in this country (the US), and this kind of mundane, practical scripting is both the most common sort of programming that people should do, and also the biggest hole in computer education. And yet most people probably think the way to learn programming is to take a course on iOS app design rather than batch file rename or how to automate the boring stuff with Python. [https://automatetheboringstuff.com/](https://automatetheboringstuff.com/)

<comment><AUTHOR> I've been doing my best to teach non-technical friends how to start scripting. This'll be a great resource. Thanks for sharing.

</comment></comment><comment><USER3> I think Mathematica would be the simplest way to automate all of those things. Wolfram even supports built-in data collection from various sources now.

</comment><comment><USER4> or "utilities we need for the average people"</comment>


How long is the perfect book? - <AUTHOR> https://www.1843magazine.com/data-graphic/what-the-numbers-say/how-long-is-the-perfect-book <comment><USER2> However you find more people buying and reading shorter works on Kindle, once no one can see the size of the book it seems the content is more important than the length when talking about digital versys paper books.

</comment><comment><USER3> Yup!! content is more important than size of the book.</comment>


SSL certificate dashboard - <AUTHOR> https://github.com/JensDebergh/certificate-dashboard <comment><USER2> If it meets the guidelines, this might make a good "Show HN". Guidelines: [https://news.ycombinator.com/showhn.html](https://news.ycombinator.com/showhn.html)

Curious if it is being used in production.

<comment><AUTHOR> Thanks, I'm new to ycombinator and I find the interface pretty confusing.

<comment><USER2> For an internet community, Hacker News has a rather unique cultural profile, and "Show HN" is not only a relatively recent feature but also one that attracts significantly less eyeballs than the front page of "News".

It exists primarily to deal with the problem of things users hacked up [e.g. your project] trying to compete for attention with big news generated by professionals and established organizations etc.

Anyway, I hope you find value in the site.

Good luck.</comment></comment></comment>


College Students Can Now Rent Textbooks Electronically From Amazon - <AUTHOR> http://mashable.com/2011/07/18/amazon-textbook-kindle/ <comment><USER2> Speaking as a student, I'm still confused as to why we need the textbook industry _at all_ for certain subjects. Is it really necessary to make an annual book for subjects that don't change significantly from year to year?

I've personally seen new editions feature nothing but shuffling of the contents. They've even started selling "loose-leaf" editions, meaning that it's just a collection of binder-punched pages. Why? No new textbooks = no used textbooks = no competition from third party vendors selling used textbooks. No one wants to buy a bunch of pages in a binder.

Seems to me that an open-source textbook should be written once and updated incrementally as needed. Up-to-date information could be available online for those with slightly dated textbooks. Of course, the universities, McGraw Hill, Chegg, Amazon, and numberless other interests wouldn't gain much from this situation.

<comment><USER3> Speaking as a student, I'm confused as to why you think your predecessors will give you their textbooks in good condition, or even at all!

Some students mark up their textbooks. Others (like me) have a lot of books that will be valuable long after I graduate.

The problem isn't that we don't need new textbooks every year, it's that we don't need new editions every 3 years with updated numbers for the homework problems and a new picture on the front. That system invalidates used books that are in perfectly good shape, and should be abolished by professors who will stand up to the bookstore and let them know that they don't want the new edition.

<comment><USER4> As a former student, I don't think I've _ever_ acquired a single textbook that _wasn't_ used. The vast majority of them were in flawless condition, the others just had some highlighting that I found actually quite nice.

</comment></comment></comment><comment><USER5> As a college student, I see a few problems with switching purely to electronic textbooks. 1) I would have to verify in every class that it's okay to be using a laptop or tablet - that's been the case in most of the classes I've had, so it's unlikely to be a huge problem, but still. 2) It is extremely unlikely that a laptop or tablet would be permitted in open-book tests (which, while uncommon, do occasionally show up, and are invariably more difficult than close-book tests). I would have to rent a textbook during the test, or arrange to borrow one from another student taking the same class at a different time. 3) Physical textbooks are really, really good at random-access. This has often been very useful when looking for constants without losing track of the pages equations are on. While electronic textbooks do let you skip randomly between pages, it would end up being a mixture of memorizing page numbers and looking at the table of contents.

EDIT: removed issue four, because I completely missed that this is an addition to the current kindle system. (Text was "4) Renting. There doesn't seem to be an option to buy the electronic copy and have it forever. I might be unusual in that I'm keeping several of my textbooks that are either directly related to my major or very good, but still.")

On the other hand, there are some classes where I've hardly used the required textbooks, or where I know I'm not going to need to review them, so electronic textbooks could be useful for those. The problem is knowing in advance which classes are which.

(I just checked how much my textbooks for the next semester will cost. Around $700, used. Ouch.)

<comment><USER6> _I just checked how much my textbooks for the next semester will cost. Around $700, used. Ouch_

No kidding!

Years back, in college, I hunted around and bought a copy of the textbook required for a course on discreet math. It was small and very expensive. Later I learned that some enterprising students had gotten a copy from the school library and, at $0.10/page, photocopied it (or at least the parts needed) and saved an ass-load of money.

I have no idea if an open-book test would allow for bringing in a stack of photocopied pages, but ...

<comment><USER7> A friend of mine once brought a photocopied version of a 500p book to the open book final exam. The prof was the author of the book and went up to the student during the final exam.

"You photocopied my book???", and the student was "Yes, that is exactly what I did." Then they had a bit of skirmish.

In the end, the prof backed off -- and that is a good thing. He made us buy his 100$ book and, essentially, do proofreading for him. He was also a visiting prof, so none of this 100$ was going to be recoverable next year...

</comment></comment></comment><comment><USER8> Nice idea, but the problem for me would be the screen. I used to spend hours staring at my textbook back in the day. Hours spent staring at a backlit screen like a laptop would give me a headache (and does today, when I spend hours programming). But the e-ink offerings aren't there yet in terms of usability for textbooks. They're great for novels, where progress is linear, and bookmarks are search are rarely needed. But for a textbook, where I'm often flipping to the index, back and forth between subsequent pages rapidly, need color diagrams or big tables and diagrams (600x800 is often not enough room for a large table or diagram), or flipping to one of the hundreds of bookmarks that I've color-coded, e-ink and specifically the Kindle UI just can't do it. Tablet-type hardware might have a better chance, but at the cost of the backlight.

So if I was back in college, even though today I do all of my pleasure reading on a Nook Simple Touch, I would still buy paper textbooks.

<comment><USER9> My problem is the exact opposite. I can't see to read _unless_ I'm looking at a back-lit screen. For this reason, all of my books for the past year and a half have been ebooks, read on an iPad.

I'm not sure what I would have done in college had I had the problems reading then that I do now. At the time, my only option would have been a book on tape, which is an absolute nightmare for random access and complex subjects, or braille, which I don't know (though, admittedly, should probably learn).

Not that any of that is to discount what you're saying at all. I guess more than anything i just wanted to share my experience. I can certainly see the appeal of having a physical book over a digital copy, and that may well be the preferred choice for the average person, but for a certain demographic, just having the option of a digital version can be an almost life-changing experience.

I remember the first night I got my iPad, after a year of not being able to read a book unless I was tied to my computer/desk. I sat comfortably on the couch and read a novel. I cried, I was so happy.

</comment></comment><comment><USER10> An even better idea that's starting to gather momentum is free, open source textbooks:

<http://creativecommons.org/tag/open-source-textbook>

The textbook industry definitely deserves to be put out of business for their sleazy practices, like publishing new editions of basic textbooks every couple of years so that students can't resell the old ones. (Are there really new developments in basic calculus every couple of years?)

</comment><comment><USER11> As a leach, I don't like it. This could be the beginning of the end of cheap obsolete used textbooks. For years I've enjoyed going through bookstores, especially in college towns, just to pick up interesting looking textbooks dirt cheap.

<comment><USER12> One has to wonder how much longer the typical bookstore (in it's current form factor) will be around. The large book retailers are already retrenching, but hopefully a market still exists for the small, independent, bookstores that add so much character to Main Street.

</comment></comment><comment><USER13> This is a really strong back-to-school campaign. I can see this really improving the sale of Kindles and igniting Amazon's Q3 results. Under ideal scenarios, this could save a college student hundreds of dollars each semester.

</comment><comment><USER14> I think it's a great idea, but at the same time, I'm wary to start jumping on eTextbook renting simply because of my tech ADD - and because it's easier to use a regular textbook. Sure, your textbook might be heavy, but you don't need to be connected to a power source/be dependent upon an electronic device for your materials.

<comment><USER15> I had to charge my Kindle one night every couple weeks with heavy usage. It was never a problem at all.

</comment></comment><comment><USER16> I'm not very sympathetic towards the rental of DRM-locked text books. It just seems wrong. Yes, I understand it takes money and effort to write and compile a book, but since currently the prices of ebooks are way too high (after all print, shipping and retail are mostly left out) I feel that the publishing industry is moving towards what the music industry is today.

Everyone that has specialized knowledge, enthusiasts, professionals, professors etc. should write their own books and articles and sell them cheaply or give them out for free. Cut out the middle-man that is a publishing company. They are no, longer, needed. They just aren't.

</comment><comment><USER17> This seems like a great program. One friction point for e-textbooks seemed to be the inability to sell them back at the end of the semester like normal books. The reduced cost of a rental should help assuage that.

</comment><comment><USER18> Chegg, for many students, is still a better option. Great customer service. Simple Process. Wide-spread adoption and availability of titles. Granted, I'm a chegg user, but Amazon surely has a run for its money.

</comment><comment><USER19> If they can undercut CourseSmart's prices, this would be huge. I just paid CourseSmart over $100 for a semester virtual rental of a textbook, and that's way too expensive for an eBook. I don't mind paying for quality content, and purchase apps and eBooks. But $100, and I don't even own the book, when the paper copy costs only 20% more and you could keep it forever or resell it? That doesn't make sense.

</comment><comment><USER20> I expect we will also be seeing more cloud-based ebooks in the future, such as those the bottom of the article indicates McGraw Hill has introduced. The same way that gaming companies increasingly push a subscription-based service over a singular single-player experience, a continual subscription to a cloud-based ebook service would help avoid the inevitable mass piracy of the materials.

</comment><comment><USER21> I think this is brilliant! I wonder how many textbooks are available. Something like this can really displace chegg.com, bookrenter et. al.

</comment><comment><USER22> STARTUP GODS: Deliver a solution that will smash the evil exploitative textbook industry, whilst rewarding the authors and teachers.

</comment><comment><USER22> Protip: Buy from India. It's illegal, but you get a paper copy of a textbook at about 10% of the price.

</comment><comment><USER23> Thank you so much. Now, if only people begin releasing .mobi versions of their books along with .pdfs

</comment><comment><USER24> I don't own a Kindle yet.

But this may be the last straw that will drive me to buy one.

</comment><comment><USER25> Would this work on Kindle 3, or is Kindle DX the best for viewing such textbooks?

</comment><comment><USER26> This is a good sign of Amazon gearing up the Kindle store before the release of their rumored tablet lineup.</comment>


Protest tonight at Apple Store SF. We can't let governments backdoor the iPhone - <AUTHOR> https://www.dontbreakourphones.org/sf <comment><USER2> Why protest at an Apple store? Apple has already come out saying they wouldn't create a backdoor. Go protest the FBI HQ or something.

<comment><AUTHOR> Protesting backdoors in solidarity with Apple :)

<comment><USER2> But protesting by definition is objecting what someone has done. So it doesn't really make sense.</comment></comment></comment>


Roadmap – nginx - <AUTHOR> http://trac.nginx.org/nginx/roadmap <comment><USER2> Pardon my ignorance, but what exactly should I be looking for that warrants a frontpage of HN for this link ?

<comment><USER3> Official support for WebSockets and SPDY in nginx is big news. WebSocket support especially, as previously it was impossible to do long-polling / WebSocket type work in nginx without resorting to unreliable 3rd party modules.

</comment></comment><comment><USER4> Hellloooooo, websockets. A nice reverse proxy to Node will be so welcome.

</comment><comment><USER5> I am more excited about ETags support than SPDY & Websockets. Etags (when used correctly) are extremely handy.

<comment><USER6> Please elaborate...

<comment><USER7> There's a great example/explanation on the Facebook Developer blog:

<https://developers.facebook.com/blog/post/627/>

Basically, it's Last-Modified on steroids.

<comment><USER8> In the link that you mentioned, ETags are produced and handled by application. There are no special needs in web-server support.

<comment><USER7> Right... I was assuming that the OP wanted to know what ETags are, rather than their specific implementation in nginx.

<comment><USER5> Etags are useful for static assets as well.

</comment></comment></comment></comment></comment></comment><comment><USER9> Can't wait! But until then...

Has anyone been using nginx <1.3 to proxy WebSockets using the TCP proxy module (nginx_tcp_proxy_module)? Anyone know from experience if it's a workable solution?

<comment><USER10> Not if you want to use port 80 for your websockets and http on the same server. We are using haproxy to support both Node and nginx on port 80.

</comment></comment><comment><USER11> Looking forward to websocket reverse proxying in 1.3

</comment><comment><USER12> I always found any information coming from the nginx website a bit too laconic. Am I the only one?

WebSocket support is welcome.

<comment><USER13> Now you mention it, yes. Don't forget that English isn't the core developers' native language though.</comment></comment>


Optimizing website images using bandwidth - <AUTHOR> https://www.npmjs.com/package/jsbandwidth <comment><AUTHOR> I know that Facebook's Android app uses bandwidth as the primary indicator for what resources to load, but I haven't seen this approach mentioned much for optimizing website assets.</comment>


Tell HN:  YouTube apparently now has live streaming...  - <AUTHOR> http://www.youtube.com/outsidelands

<comment><USER2> alas, alack. Not in Canada - as always.

<comment><USER3> Does the stream only work in the US?</comment></comment>


Secret Lives of Wild Animals Captured by 1 Million Camera-Trap Images - <AUTHOR> http://www.wired.com/wiredscience/2013/02/camera-trap-gallery/

<comment><USER2> Interesting. This opens up a whole new realm of nature documentary film-making based around unobtrusive cameras. I don't see animal behavior differing very much, but a human presence certainly is not something the animals can ignore.

That said, some of the animals in the pictures saw the camera -- not exactly discreet.

<comment><USER3> Yeah, they're on a motion sensor, and usually flash, which is pretty hard to ignore. We've been using them for years to spot whitetails in the woods.

</comment></comment><comment><USER4> Are there any in-expensive game cameras that you guys would recommend. Everything seemed really expensive on Amazon.

<comment><USER5> Build your own?

I 'hacked' together a FOSCAM IP camera to capture wildlife in my backyard. Was about $70 for the camera. There's a newer IP cam out from them that costs about $150 and has a much higher resolution.

Getting power to the cam was easy as I ran a really long power cord. It is cheaper to run Power Over Ethernet if you have longer distances (just buy an injector and splitter). If I move the cam further into the woods, I will do PoE (although bought the equipment).

If I go any further into the woods, I will use a solar panel, battery, and inverter.

FOSCAM has motion detection software on-board, so it would also work great at bird feeders around your house.

<http://deercam.tumblr.com/about>

</comment></comment><comment><USER6> My friends have used game cameras for a number of years now. They give video to the game wardens to document the number of wild hogs and their travel patterns on their property in the river bottom. The number of hogs around here is mind boggling, they are encroaching farther and farther into large cities.

</comment><comment><USER7> They work equally well for observing higher primates. :D

We, (local crime watch), use the same types of cameras to keep an eye on vacant houses in the neighborhood. So far we've assisted the police in tracking vandals and drug dealers. (Not to mention countless non-criminal animals...)</comment>


Show HN: Tmpchat – minimal text chat over WebRTC - <AUTHOR> https://tmpch.at <comment><AUTHOR> Source for the curious:

server [https://github.com/nmyk/nmyk.io/blob/master/pkg/tmpchat.go](https://github.com/nmyk/nmyk.io/blob/master/pkg/tmpchat.go)

client [https://github.com/nmyk/nmyk.io/blob/master/web/assets/tmpch...](https://github.com/nmyk/nmyk.io/blob/master/web/assets/tmpchat.js)

</comment><comment><USER2> I would like to try this out. [https://tmpch.at/y1pq4hQLSpeEE3JL-e3x2w](https://tmpch.at/y1pq4hQLSpeEE3JL-e3x2w)

<comment><AUTHOR> Dunno if it was you or someone else who clicked your link but it was nice chatting with a couple folks just now :)</comment></comment>


ODROID - <AUTHOR> http://www.hardkernel.com/index.html <comment> loup-vaillant I also like this competitor: <http://www.openpandora.org/>

OpenPandora made many different choices, though, so it may fill a different market segment.

Does anyone know of yet another competitor? I would love to see a real growth free software friendly hand-held computing.

<comment><USER2> Whats the deal with Open Pandora. It seems like one of those projects that is never going to materialize. They took pre-orders over a year a go now and the final device still hasn't been produced even though they seem to claim at various points that it is only 'months' away.

<comment><USER3> Users just started receiving the first final units yesterday! The last hurdle was the injection-molded cases.

</comment></comment></comment><comment><USER4> Is the lag time between the movement of the device and the movement of the controlled 'object' just due to the HDMI out? If not it seems mostly like a recipe for frustrating to play a racing game where your controller has such a lag-time.

<comment><USER5> It's the game. It's tough to get used to. It's called Speed Forge 3D if you want to try it out - there's a lite version in the Android Market.

</comment></comment><comment><USER6> The site says "Developer-focused portable game device" Can someone explain?

Does it mean thats it's a cross platform game dev device for developing and testing PS/Wii/Xbox apps? or is it just a hackable and portable comp with fewer keys made specifically gaming?

I took a look at the "Platform" dev section of Odroid site and only found projects.

P.S: This kinda device is entirely new to me. Just took a look at OpenPandora and Zii. these sound very cool.

[EDIT: I figured out. Its a hackable/portable device]</comment>


Strategies to better understand the world in 2016 - <AUTHOR> http://meshedsociety.com/understanding-the-world-in-2016/ <comment><USER2> Wonderful!</comment>


Model Explainability is The Next Data Science Superpower - <AUTHOR> https://towardsdatascience.com/why-model-explainability-is-the-next-data-science-superpower-b11b6102a5e0 <comment><USER3> This is interesting:

A Kaggle competition to predict loan defaults gives an extreme example. This competition had 100s of raw features. For privacy reasons, the features had names like f1, f2, f3 rather than common English names. This simulated a scenario where you have little intuition about the raw data.

One competitor found that the difference between two of the features, specifically f527 — f528, created a very powerful new feature. Models including that difference as a feature were far better than models without it. But how might you think of creating this variable when you start with hundreds of variables?

The techniques you'll learn in [OP's cours] would make it transparent that f527 and f528 are important features, and that their role is tightly entangled. This will direct you to consider transformations of these two variables, and likely find the "golden feature" of f527 — f528.

<comment><USER4> One thing I have often found is that data context matters for a lot of modelling work. It's all well and good to throw 1000 inputs named F_1...F_1000 into a model and see what gets spat out but I question how valid that is going to be.

To give a recent example from my workplace: There is an online gas chromatograph hooked up to a reactor - external modelling (of the throw 1000+ variables at the wall and see what sticks variety) showed the percentage of nitrogen, as measured by chromatograph was strongly correlated to something we'd asked them to investigate.

The people doing the modelling who had no experience with basic chemistry latched onto this and started to get really excited they wrote a large report full of recommendations about nitrogen.

When my manager saw this he burst out laughing - nitrogen is an inert gas it plays no role in the reaction what the data was actually showing is that nitrogen content varies in response to the concentration of other gasses (H2, Oxygen and CO/CO2) changing - if you recall air is typically 78% nitrogen. We don't control Nitrogen at all it's value is determined based on the other gasses in the reactor.

I think this demonstrates pretty well how easily people can see something in the data and jump to some conclusions that while well meaning lack a fundamental understanding.

Model explainability is good but input explainability is just as important - important question to ask are often.

-What am I feeding into this model? -What is the expected behavior of this input? (I don't know is a valid answer here) -Did the input behave as I expected it to in the model? -If Not why? (This is the interesting and potentially valuable part)

<comment><USER5> So if I am understanding this story, some people found a correlation and mistook it for causation. An obvious no-no, albeit a easy trap to fall into. That's assuming what you were looking for was a handle on how you could get more or less of whatever it was you wanted.

But if you just wanted a diagnostic, then the data is telling you that the nitrogen content is (in practice) such a diagnostic. Depending on what you already knew, that might or might not be interesting or useful, but it is hardly nonsense.

<comment><USER4> Yes that's essentially correct the N2 means something just not what the analysts thought it meant. Their recommendations were misleading and could have saved some time if they'd discussed it with someone familiar with process.

</comment></comment></comment></comment><comment><USER6> I mentor individuals looking to transition into data science. I can say without a doubt that those who do the best (get the best jobs) are those with _domain expertise_ and who are able to leverage that expertise in a data science realm.

Of course, domain expertise is hard to come by and takes years to develop. I look forward to data science leaving far behind the notion that "you too can become a data scientist with 3 weeks of Python + scikit-learn".

<comment><USER7> > _" you too can become a data scientist with 3 weeks of Python + scikit- > learn"..._

I don't think any serious practitioners were out there thinking in this manner. But there is a gold rush right now, and any gold rush will attract its share of charlatans.

<comment><USER8> In fact, many quantatitive researchers in their domain are already data scientists without using modern tools like machine learning. Being able to use these tools is only the beginning of a new practicing and advancing.

I consider it the responsibility of computer scientists and engineers to make the tools better and easier. But unfortunately, it's that one has to become a good computer scientist first then a domain expert.

We are not doing enough on innovations of tooling.

<comment><USER9> Computing people in general seem to have forgotten the whole reason our field exists is to build tools for other people, the ones who do the "real work". With the possible exception of video games nothing we do with computers is useful or interesting on its own, its only point is to assist other fields. So we can have all the advances in the world but if we cant make them into useful tools, what was the point.

</comment></comment></comment></comment><comment><USER10> Sensitivity analysis is the next data science buzzword rewrite of classically important skills in model building.

<comment><USER11> Just you wait until someone redefines hysterisis, too!

</comment></comment><comment><USER12> >"What features in the data did the model think are most important?"

This is going to be more misleading than informative, since the feature importance hierarchy can change drastically based on what other features are included.

> "For any single prediction from a model, how did each feature in the data > affect that particular prediction"

Ok, but I don't see how this will be comprehended as anything other than a black box for the typical ML model.

> "What interactions between features have the biggest effects on a model's > predictions"

If there are still big "interaction" effects that means you should have done better feature generation/selection.

<comment><USER13> > since the feature importance hierarchy can change drastically based on what > other features are included

This sentence describes a disturbingly large proportion of social science papers. After controlling for X,Y,Z (naturally!) then we find that A is the leading case of B.

<comment><USER12> Yes, precisely. It is a common practice in medical research as well.

</comment></comment></comment><comment><USER14> Oddly this post doesn't bring up linear/logistic regressions, which are still used extremely often today despite the rise of ML/DL _because_ the models are 100% explainable, and can therefore make business decisions as a result. Sure, it may not win you Kaggle competitions, but there are more important things in life.

Another "compromise" is using variable importance outputs from tree-based models (e.g. xgboost), which IMO is a crutch; it says which variables are _important_ , but not whether it's a positive or negative impact.

<comment><USER12> > "the models are 100% explainable"

In my experience this is largely illusory. People think they understand what the model is saying but forget that everything is based on assuming the model is a correct description of reality.

Your typical case of linear regression isn't even close to a correct description of reality, what gets included is largely arbitrary and due to convenience. As a result, different people with different types of data can get very different estimates for any features common to both models.

Also, stuff like this:

"I don't even think simple linear models are actually explainable. They just seem to be. Eg, try this in R:

      set.seed(12345)
      treatment = c(rep(1, 4), rep(0, 4))
      gender1   = rep(c(1, 0), 4)
      gender2   = rep(c(0, 1), 4)
      result    = rnorm(8)

      summary(lm(result ~ treatment*gender1))
      summary(lm(result ~ treatment*gender2))

Your average user will think coefficient for treatment tells you something like "the effect of the treatment on the result in this population when controlling for gender". I get a treatment effect of 1.17 in the first case, but -0.38 in the second case, just by switching whether male = 0 and female = 1 or vice versa." [https://news.ycombinator.com/item?id=16719754](https://news.ycombinator.com/item?id=16719754)

<comment><USER14> That's fair. Explainable yet, but making sure the regression follows statistical assumptions is another can of worms, and one ignored by the rise of "easier" ML/DL.

<comment><USER12> The thing is the ML models don't try to be interpretable. Instead people try to find models that make correct predictions.

AFAICT, that is also the appropriate role for simpler methods like linear regression, unless you have reason to believe your model is robust to any missing "unknown" features and any included "spurious" ones. In that case you are probably dealing with a model based on domain knowledge and not even running a standard linear regression.

People (over-)interpret the coefficients all the time though, I actually think this is a huge problem.

</comment></comment></comment></comment><comment><USER15> I think it's more exciting than author admits. Sure, it'll increase confidence and adoption, but it will really mean that the machine can be queried like an expert on whatever corpus it was trained on.

</comment><comment><USER16> ..and the convergence of Data Science to Statistics continues.

<comment><USER17> In a similar vein, it looks like there will be a resurgence of complex systems science and explaining "emergent" properties of complex systems.

<comment><USER18> That would be interesting, I wonder if that will build new nonlinear theories.

</comment></comment></comment><comment><USER18> I wonder if data scientists engage in a triangulation* of their sources and models to explain things?

*I refer to this sense of triangulation: [https://en.wikipedia.org/wiki/Triangulation_(social_science)](https://en.wikipedia.org/wiki/Triangulation_\(social_science\))

<comment><USER19> Look into the provenance research that has come out of the semantic web community. They have developed a model where triple statements behave like short english sentences:

      :subject :object :predicate .

ex:

      :alice :loves :bob .

This statement by itself tells you nothing, did Alice say she loves Bob, or was it Bob who said it is Alice who loves him, or did Carol see the way Alice looked at Bob and concluded that she must love him, and what exactly is the quantitive difference between this love she feels for Bob and my love for chocolate.

To support this kind of information each term is annotated with meta-data like document of origin, author, time and place.

ex:

      :s1 rdfs:type rdfs:Statement ;
          rdf:subject :alice ;
          rdf:object :loves ;
          rdf:predicate :bob .

      :a1 rdfs:type prov:Activity
          prov:wasAssociatedWith :alice ;
          prov:hadMember s1 .

      :alice rdfs:type prov:Agent .

In computer science they call this process reification and it could be the first step into creating a model that takes the source into account.

<comment><USER18> This is very useful. I'll check out this vocabulary, wrnr, thank you!

</comment></comment></comment><comment><USER20> Its also model justification and defense. And even unprotected variables can be shown to synthesize protected variables. If I was in the legal profession , that's how I'd attack that.

Again, data is toxic. Even if you think you're doing something safe, there's a chance youre not.

</comment><comment><USER21> Correlation is not the causation is the common wisdom.

But this is exactly we do in DL. Yet this is exactly DL techniques seems to be doing. I am amazed that it works so well.

I am not the expert. Can someone explain like ELI5?

<comment><USER22> Well the thing is that correlations can be used but they need a correction in the loop somewhere. The job of the human is to laugh and correct it. One example was teaching computers to draw cats based on reference images - <USER2> were lolcats of varying languages and it associated the floating fonts with cat features resulting in a blurry eerie gibberish mess.

[https://mobile.twitter.com/goodfellow_ian/status/93740653074...](https://mobile.twitter.com/goodfellow_ian/status/937406530743287808?lang=en)

The two fixes are to either exclude the captioned examples from the set or to add in a filter "this is caption text - ignore it".</comment></comment>


CSS Animated 3D Greeting Card - <AUTHOR> http://markroland.com/portfolio/css-greeting-card My wife has crafted beautiful handmade Christmas cards for the last 2 years. We would love to send them to all of our family and friends, but the supplies are expensive and they require a lot of time to make. I've seen nice animations of greeting cards on sites like punchbowl.com, but they are usually done in Flash, and we all know the problems with Flash, right? So I set out to make my own CSS-animated version. <comment><USER2> I'm curious why Firefox isn't supported. I don't see anything that was done that Firefox wouldn't be able to do. Very cool demo though and something I will have to consider for future holidays!

<comment><AUTHOR> I'm glad you liked it. I didn't support for Firefox for the sake of simplicity and because I wanted to get the demo out as a starting point.</comment></comment>


Dafny: a verification-aware programming language - <AUTHOR> https://github.com/Microsoft/dafny <comment><USER2> How odd, I was mentioning Dafny in a comment [https://news.ycombinator.com/item?id=11930661](https://news.ycombinator.com/item?id=11930661) just an hour ago, I'm glad they open sourced it Today!

You can try it out at [http://rise4fun.com/dafny/Hello](http://rise4fun.com/dafny/Hello)

EDIT: They did not open sourced it today, they just moved it from Codeplex to Github today...

[http://dafny.codeplex.com/wikipage/history](http://dafny.codeplex.com/wikipage/history)

</comment><comment> nv-vn Interesting, looks like this could even be used as a competitor for Swift (considering the large overlap in features). I'm surprised Microsoft didn't open it up earlier and use it for .NET/Xamarin.

</comment><comment><USER3> Discussed at [https://news.ycombinator.com/item?id=10842714](https://news.ycombinator.com/item?id=10842714)</comment>


Ask HN: When should you look for a mentor? - <AUTHOR>

I'm trying to find a mentor for my side project, which isn't yet a startup: it's an idea and some code.
I want to approach a professor I had in undergrad to be my mentor, but I'm not sure if I have enough to approach him yet and generate interest in helping me develop. He's the foremost expert in the area of my side-project, and he's very in demand/probably doesn't have much time.
At what stage should one approach mentors? Idea/Basic Implementation/MVP/Product Release? <comment><USER2> I don't think it's ever too early to have advisors, which is what I would call them. Especially if the project is in their area of expertise, very few people will turn down the opportunity to be an adviser to a brand new effort if you are truly serious about it.

The only real danger is expectations. You should talk about how much time the adviser can really spend on helping you. I've spoken with a number of professors and professionals that are advisers to companies that started to take advantage of their time and spoiled the relationship.

Also keep in mind that advisors are not employees. Unless you pay them someway (stock options, money) they are doing you a favor. If you think you'll need a lot of their time then plan to compensate them some way up front, even if you have to make good on it later.

<comment><AUTHOR> Thanks for the advice.. I'll be sure to be clear on expectations, but I'm not sure how I can compensate him- I'm bootstrapping, and don't intend to raise funding.

</comment></comment><comment><USER3> In my personal experience, if you approach someone and tell them about what you are doing, you'll be able to gauge their interest level. If they are interested, it all starts from there.

I wrote about it in more detail on my blog:

[http://startupsanddowns.blogspot.com/2011/04/only-n00bs- ask-...](http://startupsanddowns.blogspot.com/2011/04/only-n00bs-ask-for- advisors-investors.html)

As previously mentioned, make sure you limit the asks to reasonable, low-touch things, especially at first.

Also, most people won't say, "I'll give you advice, but it'll cost you X." If they do, run!!!

</comment><comment><USER4> If you feel the need, just do it and ask him what do you need to get his help/mentoring.

<comment><AUTHOR> I like this. I think he will too.</comment></comment>


Using free products for lead generation - <AUTHOR> http://blog.clearbit.com/how-were-using-free-tools-to-engage-developers <comment><USER2> The advice here is sage. If you run a platform-type SaaS business (not necessarily PaaS but more like SaaS with multiple functional use cases, which the OP calls the API business), make sure to read the OP.

To me, this one resonated best:

"APIs have a particularly tough marketing challenge in that the product can have a ton of varying use cases. You need different messaging to multiple customer segments each with their own use cases and needs."

In terms of "doing things that don't scale early on", this is _the_ thing API- as-a-Service companies ought to do. Your users won't build reference apps for you. You need to build them for your customers and make them very easy to use. This amounts to what enterprise software marketers call "solution selling."

Disclosure: I lead marketing at Treasure Data, an early Clearbit customer.

<comment><AUTHOR> Hey, I have nothing to do with this company. I just kept article as an interesting case to attract users. I use some of the examples given in this case myself. So why not to save for the future are some more tips?

</comment></comment><comment><USER3> It generalizes even further.

[https://itunes.apple.com/us/app/sitorsquat-restroom- finder/i...](https://itunes.apple.com/us/app/sitorsquat-restroom- finder/id511855507) [https://play.google.com/store/apps/details?id=com.charmin.si...](https://play.google.com/store/apps/details?id=com.charmin.sitorsquat)

There's plenty of simple tools that won't make a business by themselves, but will draw plenty of attention to the company that makes them.

</comment><comment><USER4> I think a great example of this is the Photomath app (photomath.net). These guys are really a mobile vision/OCR API startup and they released Photomath as a free showcase app, which went on to achieve global media coverage and topped the iOS app store for a while.

</comment><comment><USER5> So, the opposite of alchemy then. Cool. Will now read the article to see how they did it. Oh.

</comment><comment><USER6> Is Sharelock[0] mentioned in the article HIPAA compliant[1]? It seems that there is a systemic problem of small doctor's offices and insurance lawyers sharing private medical information insecurely. Security is overlooked and not enforced.

[0] [https://sharelock.io/](https://sharelock.io/)

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

</comment><comment><USER7> Thanks a lot! I love this article! :)

<comment><AUTHOR> My pleasure)</comment></comment>


Io.js 1.5 released – with Buffer#indexOf and various enhancements - <AUTHOR> https://github.com/iojs/io.js/blob/v1.5.0/CHANGELOG.md

<comment><USER2> I'm switched from node to io few weeks ago and very excited of new features and speed of io! Keep on moving!</comment>


Snowden warnt vor Industriespionage durch Geheimdienste - <AUTHOR> http://www.spiegel.de/politik/deutschland/edward-snowden-warnt-vor-geheimdienst-industriespionage-a-1032858.html

<comment><USER2> Bitte, wir sprechen nicht Deutsche!

<comment><USER3> Kein _

<comment><USER4> Sie sind ein Angel.

</comment></comment></comment><comment><AUTHOR> Snowden says that NSA analysts underlie no oversight. They can search after what they want, without any oversight or assesment. He says that industrial espionage from NSA is a reality.

<comment><USER5> unfortunately there is a wealth of substantiated and credible history that shows just about all state-level espionage outfits engage in, if not focus on, industrial espionage.

the US certainly didn't put a man on the moon with a clean room implementation...

<comment><USER6> "They all do it" is not a compelling argument. The Latvian state surveillance potato is about as much a match for the NSA as Latvian air power (two unarmed helicopters) is for the USAF. There are places that have very low levels of surveillance simply because their governments, no matter how perfidious their intentions, haven't got the gear.

They're not using those helicopters to fly Stingrays over Riga. That would burn the whole spying budget in a week. Compare that to the number of PDs in the US that have multiple aircraft that, in fact, are flying Stingrays around collecting our whereabouts.

We are objectively less free, and have vastly less privacy, than many other countries. And for what?</comment></comment></comment>


Ask HN: Best way to remotely demo your software? - <AUTHOR>

What software or services do you use when remotely demoing your software to press or potential investors? Webex seems kind of overkill, and Adobe Connect is expensive. Or, are there any start-ups that have solved this problem really well? <comment><USER2> Use Microsoft Shared View if you're using Windows. <http://connect.microsoft.com/site94></comment>


The Once and Future IBM Platform - <AUTHOR> http://www.nextplatform.com/2016/04/26/future-ibm-platform/ <comment><USER2> I'd buy Power-based laptops and desktops, especially if they were free of spyware like Intel boards.

I really think there's a market there, especially if they embrace/partner with a user-friendly linux distro. People are/will slowly come around to the fact that Microsoft is holding desktop computing back.</comment>


How do physicians and non-physicians want to die? - <AUTHOR> http://thesocietypages.org/socimages/2013/06/24/how-do-physicians-and-non-physicians-want-to-die/

<comment><USER2> This subject was discussed extensively some time ago. You may be interested in the things the HN community said then:

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


Ask HN: Are there any visual workflow or low-code tools that output JavaScript? - <AUTHOR> Ideally a polished GUI tool that allows you to define simple logic branches, loops, variables and create re-usable code snippets that represent a function with incoming vars and outputting vars.<p>Should also be able to receive http requests and call external http services. If it can generate code from an OpenAPI spec even better. <comment><USER2> There you go:

[https://noflojs.org/](https://noflojs.org/)

[https://nodered.org/](https://nodered.org/)

<comment><AUTHOR> Thanks these looks somewhat promising specially being open source and all.

</comment></comment><comment><USER3> You may want to try OpenAPI Generator ([https://github.com/OpenAPITools/openapi- generator](https://github.com/OpenAPITools/openapi-generator)), which supports JS client/server, TS, JS Flow and many other languages for code generation.

There're many IDE plug-ins that integrate with OpenAPI Generator: [https://github.com/OpenAPITools/openapi-generator#35--- ide-i...](https://github.com/OpenAPITools/openapi-generator#35---ide- integration).</comment>


Denied: Afghanistan's All-Girl Robotics Team Can't Get Visas to the US - <AUTHOR> https://www.forbes.com/sites/hilarybrueck/2017/06/29/denied-afghanistans-all-girl-robotics-team-cant-get-visas-to-the-u-s/#56408b27367f <comment><USER2> I saw this when it was first posted. I was sure it would be on the front page by now. This is just so wrong it makes my stomach hurt.... Any ideas on how the hacker community could positively affect this??</comment>


YOTAPHONE 2: The phone with two fronts - <AUTHOR> http://yotaphone.com/gb-en/# <comment><USER2> I could swear this idea already existed at one point...

EDIT: after digging around, all I found was the YotaPhone 1, which is probably what I was thinking of.</comment>


Professionals: How do you make sure your computer hasn't been hacked? - <AUTHOR> <comment><USER2> TL;DR Security done this way is expensive, using four physical devices: A gaming desktop, a secure workstation, a NAS, an ESXi server. The hardest part at first was the discipline to use each workstation for its intended purpose and breaking bad habits, IE not browsing the web from the gaming machine etc.

As a pentester, here are some of the things that I use and do to reduce my personal attack surface. I separate out functions by device. Note that, other than the windows 10 section, this isn't cheap and isn't for most people. I've invested a large number of hours into this setup to get it to a place where I feel its "trustworthy enough."

If I were a regular user and had to use Windows 10, most of the following guide would be helpful ([https://hackernoon.com/the-2017-pentester-guide-to- windows-1...](https://hackernoon.com/the-2017-pentester-guide-to- windows-10-privacy-security-cf734c510b8d)). I went with a hybrid approach and incorporated elements from Sean Metcalfe's (Trimarc Security) guide on developing a secure baseline ([https://adsecurity.org/?p=3299](https://adsecurity.org/?p=3299)). I've done most of this to my gaming computer. I only play games and use VOIP programs on this machine. Other programs I use on this system (not in the guides) are: glasswire, herdprotect, immunet. I set up win10 to take a full system backup once a week, and this gets auto backed up to a NAS.

I use QubesOS for all non-gaming functions. This can be a painful OS to learn, but I like its "containerization" of information and the workflows for using it. Encrypted, password protected copies of my various VMs are backed up to the NAS.

I log some specific event types from every device on my network, and send it to a SIEM in a VM on a ESXi system. I have custom splunk dashboards to sort through this data and only show me what I think is important.

<comment><USER3> It must be nice to feel at home.

There is still the cheaper alternative to pack light and move often, although it also requires exercising some level of good practices, everyone feels a bit better using a freshly installed OS.

Build your own live-CD distro, use file-system snapshots, segregate data susceptible of containing malware, or buy new stuff in random shops you deem trustworthy, use it and throw it away.

On a side note, as we've seen recently, using untrustworthy sources of software like npm will without a doubt affect your level of security.

There is no complete and simple solution, AFAIK.

</comment></comment><comment><USER4> The first step you should take is conducting a complex threat assessment.

Question 1: "Am I someone a sophisticated actor (e.g. nation states) would target?"

If the answer is yes, then congratulations—you're probably already compromised and will never know it.

If the answer is no, then you've very little to worry about as long as you practice good security habits.

<comment><USER5> >If the answer is no, then you've very little to worry about as long as you practice good security habits.

This is very hard to define. I have all my servers on cloud locked down and can only ssh with keys (No passwords) and everytime I look at the access log, it just makes me sweat seeing all the "drive by" ssh access attempts using standard usernames (which I don't use) and even unstandard user names (like "mother", "suser" etc).

Almost like returning home and seeing unknown footprints outside your home door. You know the door is secure, the window is bolted and you have an alarm. But still it's unnerving.

Basic practices I follow:

Don't run services with a user that has root access.

SSH only with keys

Open up ports on Azure portal only for required services.

Check "last", "uptime" "htop" everytime I login.

<comment><USER6> Have you tried/are you interested in setting a different port number on the server? Setting a different port number and using ssh_config on your clients (so you don't have to keep specifying the different port) helps a ton. I've done this with a Google 2FA solution[1] and honestly haven't seen a single rogue attempt.

\----- [1] [https://www.digitalocean.com/community/tutorials/how-to- set-...](https://www.digitalocean.com/community/tutorials/how-to-set-up-multi- factor-authentication-for-ssh-on-ubuntu-16-04)

<comment><USER7> While most guides/books on initial setting up sshd explain the usual stuff - e.g.: allow only key auth, no root ...etc.

Changing ssh port from standard (I literally forgot, is it 22?) to something else is one of those things you pick up in the field.

Usually only once you actually had to maintain production servers. And hopefully before some of the fancy things (e.g.: port-knockers) failed and locked you out :)

Changing port is super simple to configure and yet it cuts out 99.9% of noise (if not 100%) from brute-force attempts that otherwise might make you ignore alarms ...

</comment></comment></comment></comment><comment><USER8> On a Fedora Linux laptop, I occasionally boot from USB and verify the RPM package database.

On servers, try to have secure remote logs. Use a different administration SSH key for the log server so that even if your user account and ssh-agent was compromised the attacker can't use it to edit the logs.

Have your firewall log new connections that aren't part of normal, regular service. Especially outgoing connections from servers. If a web server suddenly starts sending email on port 25 to France, it's probably hacked.

Audit the logs for anomalies such as SSH connections from new remote IPs, etc. Or known user accounts at weird times. Why is your sysadmin coworker suddenly logging in at 4 am? Etc.

</comment><comment><USER9> I'm not going to answer how I go about detecting infestations, because I don't want my techniques to become useless. However, I'll depart some knowledge on how to better protect yourself.

1\. Get familiar with your router. \- Find it's logs and look for anything weird incoming or outgoing that you know isn't you. \- Keep your firmware updated. \- Learn how to configure the firewall.

2\. Get the most powerful machine you can afford and run a from the metal hyper visor. Make all your everyday OS installs be virtual machines or containers and be vigilant about keeping an eye on what's running on them.

4\. On Linux \- Learn the "top", "ps", and "netstat" commands. \- After initial install of the OS, setup Tripwire. \- Pay attention to CERT alerts and try not to be one of the suckers that installs the various honeypot malware. \- Be concerned more with patches then Uptime (If the OS tells you it needs to be rebooted when you login, reboot the damn thing ASAP with respect to your maintenance windows).

4- OS X. \- Same as Linux, except OS X doesn't really virtualize so great. Apple really hasn't taken the time to stream line their code base when it's being run virtualized. Maybe performance will be okay on the new iMac Pro just as an effect of the Hardware overkill. Your milage may vary.

5- On Windows. Windows is an entirely different level of complexity. However, it does virtualize very well and Microsoft has made many optimizations for it especially if you use Hyper-V. The key here is backups. Seriously. You need to create snapshots after the initial install and if you really need to run some kind of shady freeware application, or scammy application to get your music onto your iPhone without iTunes, spin up a completely new windows VM, install all that crap in there, and when you are finished, trash that VM. \- Keep the windows defender updated and run a full scan weekly. \- Learn Task Manager \- Install SysInternals and learn what is going on in your system. [https://technet.microsoft.com/en- us/sysinternals/bb842062.as...](https://technet.microsoft.com/en- us/sysinternals/bb842062.aspx)

<comment><USER10> Samhain is less well-known but superior to TW, AIDE and OSSEC. (I've deployed both FOSS and commercial TW.)

[http://www.la-samhna.de/library/scanners.html](http://www.la- samhna.de/library/scanners.html)

[http://www.la-samhna.de/samhain/s_faq.html](http://www.la- samhna.de/samhain/s_faq.html)

</comment></comment><comment><USER11> I just assume my system is hacked at all times and act accordingly.

That is the only truly secure practice.

<comment><USER12> You're being downvoted - maybe because it sounds like a snarky answer? I've thought about your response and after some thinking, I feel that it's a legitimate answer. I reflected for a moment and have decided that I am starting to do the same - using the computer with the expectation that I am not the only user. It's paranoid, but it also helps me sleep at night.

Maybe working at a large insurance company, where every keystroke could be replayed by a perfect stranger, has rubbed off on my home usage. But I come from a networking field and know perfectly well that our little home routers are not things we should rely on to be on our side. Maybe they are, but I think there's a bit of luck. A lot of planning and a bit of luck.

<comment><USER11> I was being serious even if it came off flippant.

There is no way to be 100% certain of your security with a system as complex as a computer so if you need 100% certainty then you have to assume you are compromised, even if that is a very low probability.

<comment><USER13> Now that I think about it, that's the same reasoning Batman used to justify attacking Superman in the movie.

<comment><USER11> "preemptive self-defense" ftw

</comment></comment></comment></comment></comment><comment><USER14> You can't.

You can only make sure you limit any potential damage and reduce your attack surface as much as possible.

Limiting damage...

\- Regular backups. \- Be careful what you store on your hard drive.

Reducing attack surface.

\- Latest version of operating system. \- Try not to install anything.

</comment><comment><USER15> I use a Chromebook which prevents me from getting 99.9% of viruses or malware. I love the fact that I load it and it loads quick and I know whats running. The thing that probably slows it down the most is that I tend to open a dozen or more tabs, so it does experience crashing when it runs out of memory. That's about it.

</comment><comment><USER16> Somewhat related, does anyone use Moxie's knocknock [0] or a similar procedure to secure ports?

Since I learned about it I thought it was a very interesting idea. Even tried it out a couple of times but not sure if anyone else is using it. It doesn't seem maintained and I'm not aware of more recent implementations of this.

Does anyone else use it for their setups? is it worth/not worth it?

[0][https://moxie.org/software/knockknock/](https://moxie.org/software/knockknock/)

</comment><comment><USER17> Are you asking about my personal machine (ie - the laptop that I'm writing this on) or about a server? The answers are slightly different.

</comment><comment><USER18> for windows, I follow this:

[https://decentsecurity.com/#/holiday- tasks/](https://decentsecurity.com/#/holiday-tasks/)

It pretty much keeps me out of any and all infestations. also a great site in general.

</comment><comment><USER19> Define hacked, what does that mean to you?

<comment><USER15> Just as important, define "professional".

<comment><USER20> It's obvious he means a hit man :)

</comment></comment></comment><comment><USER21> reinstall.

</comment><comment><USER22> God(s) love(s) a try-er!</comment>


Ask HN: Anyone willing to trade Python/Linux help for JavaScript/react.js help? - <AUTHOR>

I'm confident with Python and Linux/AWS systems admin and learning JavaScript/react.js
Anyone out there willing to trade knowledge?
I often need help to understand problems that I'm hitting with JavaScript.react.js
What I can offer back is some fairly strong knowledge in Linux/AWS/Python.
Anyone interested? <comment><USER2> That'd be pretty cool actually. I write quite a bit of Ansible, and having someone to talk to about Python could be really useful. I'm a ruby/js guy myself and have started writing react-primer-draft on github. Feel free to reach out via my email in my profile.</comment>


Ask HN: What is your greatest life accomplishment? - <AUTHOR> <comment><USER2> Hands down it is raising great kids who have become productive, caring and compassionate adults. They care about the world and the people in the world. As far as accomplishments go they are truly the best, the most difficult and the most rewarding.</comment>


The shockingly obsolete code of bash - <AUTHOR> https://blog.erratasec.com/2014/09/the-shockingly-bad-code-of-bash.html <comment><USER2> "If it works, don't fix it."

On the other hand, if it pains you so much that it uses old-style K&R, feel free to take a couple of weeks and fix it. The world will be thankful to you.

</comment><comment><USER3> "The shockingly obsolete submission of an undated 2014 vintage blog post"

</comment><comment><USER4> Shellshock pun implied, I believe.</comment>


Ask HN: Best Approach to transition from Engineer to PM? - <AUTHOR> I'm a senior engineer (10+ years) but have found that I have a much bigger interest in doing product work. Is it better to try to transition in current company, try to get an entry level AP job (even if I do have past experience?) Or something else? <comment><USER2> Like the sibling comment suggests, moving internally is probably the best bet. An alternative strategy would be to apply for PdM positions on highly technical products where your engineering background will outweigh the fact that it's your first product gig.

</comment><comment><USER3> Best option is to transition internally. You can do that gradually, and you already have the tribal knowledge, reputation, and internal connections to make things easier. If there's no internal path you can try to make the leap elsewhere but this will be harder to land.</comment>


Axiom Space: Privately Going Where No One Has Gone Before - <AUTHOR> https://lawless.tech/axiom-space-privately-going-where-no-one-has-gone-before/ <comment><AUTHOR> Commercial use of the outer space is quite popular these days. Still, the list of privately run companies that reach beyond the Earth's atmosphere isn't limited to the big three of SpaceX, Blue Origin, and Virgin Galactica.

There are companies like Axiom Space that plan to launch their own space station once the ISS is no longer operational. For now, they are using the station to start building their facility, which they promise will be nearly 70 times as cheap compared to the ISS. Sounds nice, right?

In this feature, lawless.tech explores the case of Axiom Space and take a look at the laws and agreements that regulate private space exploration.</comment>


Techno-Fundamentalism Can't Save You, Mark Zuckerberg - <AUTHOR> https://www.newyorker.com/tech/elements/techno-fundamentalism-cant-save-you-mark-zuckerberg <comment><USER2> Crux: "Zuckerberg isn't a cynic; he's a techno-fundamentalist, and that's an equally unhealthy habit of mind. It creates the impression that technology exists outside, beyond, even above messy human decisions and relations, when the truth is that no such gap exists. Society is technological. Technology is social. Tools, as Marshall McLuhan told us more than fifty years ago, are extensions of ourselves. They amplify and distort our strengths and our flaws. That's why we must design them with care from the start."

Seems more than a little out of context to not mention the deep surveillance of FB.

</comment><comment><USER3> The New Yorker is focused on being verbose and speaking at a more abstract level, so it makes sense there's no concrete recommendations to counter Zuckerberg's current route.

Nonetheless, this article seems to have rather minimal information per paragraph, and I'd also at least appreciate learning the opposite of techno- fundamentalism. Maybe an example of perceived benefits in an area where we haven't been 'techno-fundamentalists'? Overall, not impressed.

<comment><USER4> > Maybe an example of perceived benefits in an area where we haven't been > 'techno-fundamentalists'

End-of-life care is one area where the thinking is changing from techno- fundamentalism to something more...human(e)

</comment></comment><comment><USER5> From the article:

>"But, more crucial, it's also an expression of techno-fundamentalism, the unshakable belief that one can and must invent the next technology to fix the problem caused by the last technology. Techno-fundamentalism is what has landed us in this trouble. And it's the wrong way to get us out."

Platforms like Facebook are just exposing these innate human biases that have existed since the birth of our species.

The congressional hearings showed that even for some really smart people it's hard to understand the annals of technology and the broader dynamics.

In my view Mr. Zuckerberg's points on AI were more about identifying bots, and bad actor campaigns and not focused on censorship of individual ideas.

</comment><comment><USER6> So they're pissed off that Facebook does not censor its users as they'd like. Zuckerberg says the AI will. They don't agree but they don't offer any other solution in exchange either.

Wtf?!

</comment><comment><USER7> Zuck is worth $80b+. He doesn't need to be "saved". He's going to be all right, believe me.

<comment><USER8> Money won't save him either, dude

<comment><USER7> I beg to differ. If you had $80b you could shoot someone in broad daylight in the middle of Manhattan and you'd still be alright.

<comment><USER8> What do you mean by "alright"? Like internally? Would you be sitting well with yourself? Would you be deeply satisfied with what you've done with your life?

I imagine you'd be troubled, and no amount of money can alleviate that kind of troubled feeling, ever.

<comment><USER7> Zuck is a robot. He doesn't have feelings.

</comment></comment></comment></comment></comment><comment><USER9> They should rename Facebook's address.</comment>


Elop himself leaks Nokia's first Windows Phone - <AUTHOR> http://www.engadget.com/2011/06/23/nokias-first-windows-phone-images-and-video/

<comment><USER2> I'm extremely excited for Nokia + Windows Phone. Recently upgraded from an iPhone 3GS to a 4 and it just didn't feel like an upgrade. I'll admit that I haven't had the chance to try out a Windows Phone 7 device personally, but I've watched A LOT of videos. The interface smoothness and holistic integration of various services and information makes a hell of a lot more sense than silo'd individual apps.

The only downside about Windows Phone now is the lack of tethering. I find it a very important feature, so I'm really hoping that gets included in Mango or soon after.

<comment><USER3> I've been on WP7 now for a couple months (HTC HD7 on T-Mobile) and overall I'm _very_ happy with it. However, it has its issues.

First and foremost is the lack of background services. I'm an avid Rdio (<http://rdio.com/>) user, and while the app works well, it can't play in the background. Want to listen to it and check a text message? Sorry, no dice. I'm assuming this is coming with multitasking in Mango, but we'll see.

While the browser works damn well (really, why can't IE on the desktop not suck, if they can pull this off?), there are a few things that irritate me. There are two big ones: wide comments on HN (e.g. in a code block) completely break the zooming of the page, so you have to scroll back and forth to read any comment; if you're on, say, a HN thread, then go check an email and come back by clicking the IE tile rather than hitting the back button, hitting the back button then brings you back to the home screen, with no way of actually going to the previous page (history seems to only exist in the back button functionality).

And since my only test hardware has been the HD7, I should point out that it likes to reboot. A lot. I think this is related to the poor microSD slot, which allows the card to slip out and cause things to not be accessible and causes crashes -- unfortunately, it's behind a warranty-voiding-seal panel, and if it comes out for good, you're SOL. This happened to my first HD7 about a week after I got it, but thankfully hasn't happened to that extent yet.

Outside of these things, I really haven't looked back since switching from Android. The interface is beautiful and intuitive, the apps are _damn_ fast, and overall I'm very happy with it.

<comment><USER4> I believe Mango is going to bring background tasks and IE9. For what it's worth I find that the back/start button combo on Windows Phone 7 beats the app switching on iPhone, even though Windows Phone lacks true multitasking. The music scenario is the one exception. I swore I had at least one third party music app that did background playing but I must have been mistaken.

I find my Windows Phone (LG Optimus) is more stable than the iPhone too. Overall I think Windows Phone 7 is really solid OS. It gets all the basic functionality right and is often better than iOS. However it does lacks the polish and apps that make iOS great.

</comment></comment></comment><comment><USER5> Seems like a very typical MS style publicity stunt, where they know full well someone was going to leak it out, but they dont want to be seen as publicly announcing it. I mean its filmed in very high quality for goodness sake and there's no shake on the camera, so a dedicated tripod-mounted camera? I think so.

<comment><USER6> At the same time, it could also be someone with access to the footage which maybe was intended to remain for company use only who leaked it illegitimately.

</comment></comment><comment><USER7> I just don't believe it "leaked". Probably pro MS fraction inside Nokia let it go in order to diminish N9 success. It looks to me like some people there don't want non Windows phone to succeed.

</comment><comment><USER8> Feels like an intentional leak, probably wanted to deflect some heat from people saying they should have stuck with the N9.

<comment><USER9> I thought the same thing. It would be a huge slap in the face if the N9 turns out to be very popular. This leak feels like "damage control". Which seems silly, there is no reason you can't release phones with WP7 and MeeGo.

The release of the N9 and demo videos really brings Elop and Co's statements about the emperor having no clothes with regards to MeeGo into question. Looking back that appears to be negative marketing to justify the ms partnership.

<comment><USER10> No one said MeeGo was a bad OS. Nokia just didn't have the money to follow through. They ran out of runway.

</comment></comment></comment><comment><USER11> That is an attractive device, but so is the N9. Too bad the unlocked versions will be $850+.

<comment><USER12> It's a high end phone, after all.

Nokia should aim lower. Cheaper Androids are there already

<comment><USER11> In what way is it high end? I know that Nokias usually have excellent cameras, but other than that, what?

<comment><USER12> Big touchscreen, multi-tasking smartphone with Nokia quality? Doesn't look like they have many fancier models.

<comment><USER11> Sure, but a high end phone isn't over $800 (isn't that what you were responding to?). iPhone 4 unlocked is $750 on Amazon, Androids are usually in the $600-$700 range for their high end devices. But Nokias are always in the high 800s and into the 900s.

<comment><USER13> Isn't this just the usual Nokia Europe-like pricing in North America effect? How competitive are the prices in Europe?

<comment><USER14> Nokia prices are usually very competitive in in the UK at least.

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> Nokia should go all in on Windows Phone.

<comment><USER16> They pretty much are. At least they're killing off their own smart phone OS.

But, you've given no reason why you think they should do so, and the market has, so far, said that Windows Phone is unexciting. I'm gonna believe the market over a random guy on the Internet, unless you've got a pretty good reason to think two losers will combine to make a winner.

<comment><USER11> I'm not sure the market has said this so much as it's said "I'm scared to buy anything but Android and iPhone". I have no doubt Microsoft will be able to strong-arm their way into this market the same way they were able to do in search.

<comment><USER16> Microsoft has a search product?

</comment></comment></comment></comment><comment><USER17> Dual boot WP7 and MeeGo!

</comment><comment><USER18> Looks horrid. The mockups they did initially were much nicer looking phones:

[http://www.blogcdn.com/www.engadget.com/media/2011/02/11x021...](http://www.blogcdn.com/www.engadget.com/media/2011/02/11x0211nokiaconcept.jpg)</comment>


Top 10 Best Practices for Production ASP.NET Applications - <AUTHOR> http://daptivate.com/archive/2008/02/12/top-10-best-practices-for-production-asp-net-applications.aspx <comment><USER2> There is only one thing on the list that I take exception to: \- build and release in release mode.

I can't even begin to enumerate the number of times that having a line number (provided by a debug build with a .pdb file) would have saved hours, if not days, of troubleshooting and debugging.

The 1% (or less) extra processing needed by having a debug build/pdb release is insignificant compared to my time finding and fixing bugs that are hard or impossible to reproduce in the development environment... especially when the customer is breathing down my neck :)

</comment><comment><USER3> 8\. Develop a repeatable deployment process and automate it

This should apply to everyone. Don't forget to include unit and selenium tests in the automation if you can and hok it up to svn commits. The ability to know if something you've commited has broken the build is a big time saver

</comment><comment><USER4> Thanks! Going to put these tips into practice with our newly deployed site.</comment>