You are being followed: The business of social media surveillance - <AUTHOR> http://littlesis.org/news/2016/05/18/you-are-being-followed-the-business-of-social-media-surveillance/ <comment><USER3> Recently I helped a friend tracking the robber of his skrill account. It's scary the amount of info that you can get from somebody that has been slightly sloppy. A tiny trace in google was enough to get sufficient info to lock him up.

<comment><USER4> Need a how to on how to do this please

<comment><USER5> Unfortunately that will just teach them to do it better. The important thing is that they are usually sloppy so if you are resourceful you will be able to take care of yourself.

<comment><USER3> Unfortunately you are right. But the difficult part is not even getting the info, making the police to catch the usually 'petty thief that lives abroad' is. On small robberies burocracy will defeat you before you get your money back.

</comment></comment></comment></comment><comment> jim-greer I suspect some of these companies also do surveillance on non-public social media posts. It's about the only explanation I can think of for the volume of friend requests I get from fake profiles of attractive women...

<comment><USER5> I get those as well but it's because we actually have a bunch of things in common.

</comment></comment><comment><USER6> I've been tracking ARK players on Steam for a few months.[0] It's remarkably easy, as Steam servers give out their player Steam names and play duration to anyone who asks. Connecting this to other documents isn't easy.

It depends on a PHP application but that is easy to find on Github too.[1] I've been porting this PHP application to Powershell too, work in progress. Next step is moving to Elastic Search for data storage.

[0][https://github.com/Gilgamech/ARKScrape](https://github.com/Gilgamech/ARKScrape)

[1][https://github.com/xPaw/PHP-Source-Query](https://github.com/xPaw/PHP- Source-Query)

</comment><comment><USER7> Perhaps because I was around before the net and have known people who have done wicked things. Whenever I hear "social media" I think well thats a good way to get stalked and killed,but thats just me.

<comment><USER8> But nearly everyone uses social media. It's like saying you're at risk because the phone book lists your name and address. It lists nearly everyone's name and address. What makes you so special?

<comment><USER7> The first thing I notice about your post is your made up implication that my post speaks of me being special. That sort of rhetoric is the exact thing I try to avoid in hacker news. My life experience has shown me how dangerous social media can be. I choose not to put my information in social media and in fact I cant be found in the phonebook, that is just personal preference. I could care less what nearly everyone is doing.

</comment></comment></comment><comment><USER9> It's being used for more than just police surveillance. Entelo watches for your LinkedIn and other profiles to update then tells recruiters that you might be looking for a job. [https://www.entelo.com/](https://www.entelo.com/)

<comment><USER10> That's not really the same thing though. Surveillance is State --> Civilian, but recruitment is Civilian --> Civilian. Different power dynamic, different laws apply, and different consequences.

</comment></comment><comment><USER11> A lot of these companies do surveillance beyond social media. Welcome to the Internet. Where everyone is tracking everything.

</comment><comment><USER12> BTW is there any company out there which helps individuals completely get rid of their online presence ?

<comment><USER13> I've thought it would be cool to make a virus that doesn't do the usual but a specific person.

You the programmer get a request to target John K Smith you make a virus specifically for that person. Then the virus is released where infects anything it can and if it finds John K Smith it deletes or permanently encrypts the info.

<comment><USER14> Metal Gear Solid 2: Sons of Liberty. It is a fun problem to think about - <USER2> don't want to reveal the target, but you also don't want to be detected (gotta poison backups)... so indiscriminate destruction doesn't work.

</comment></comment></comment><comment><USER15> Can someone explain to me, how tracking of information that people have voluntarily provided to be public to the whole world is unethical? If you make a public post on Instagram, you're doing it exactly for people to see.

<comment><USER16> I'm not sure the article ever suggested this was unethical. I think the biggest claim it made on this front was the following, focusing not on potentially inappropriate access to data, but rather inappropriate _use_ of that data:

"At its worst, social media monitoring could create classes of 'pre-criminals' apprehended before they commit crimes if police and prosecutors are able to argue that social media postings forecast intent. This is the predictive business model to which Geofeedia CEO Phil Harris aspires."

And I think it's a decent concern. If somebody tries to build a profile of you out of your social media presence, they're most likely getting a pretty inaccurate (or biased) picture of you, which is especially concerning if they aren't aware of the limitations of these profiles - and judging by the history of things like polygraphs, _this is likely the case_. This potentially has consequences for your employment/background checks, or any time your character is called into question, in general.

<comment><USER15> OK, so the point is that assuming people are wrongdoers or can be wrongdoers without any real evidence is wrong and anybody should be deserved not on statistical or intuitive guesses, but instead enjoy presumption of innocence and good intent. Sounds reasonable.

Shouldn't the same principle apply to mentioned companies and law enforcement agencies as well then?

<comment><USER16> This article _never claims_ that anyone using "social media intelligence" is an evildoer. To be honest, I'm not sure where you've drawn this conclusion from, as even the majority of the comments here appear to be in alignment with the view that there's nothing intrinsically wrong with the scenario we've been presented. The article seems to be informative, more than anything else.

That being said, I think you're really misusing the "innocent until proven guilty" idea. If a complete stranger appeared on your doorstep wielding a steak knife and offered to help you prepare dinner in exchange for him staying the night on your couch, would you _assume_ he was innocent, let him in, and then not keep a watchful eye on him? _Most_ people would not, and this suggests that, all else being equal, most people would prefer to act in ways that don't put them at risk.

So I disagree that we should automatically assume that the intelligence community are all innocent. Nor do I think we should assume any of them are guilty with evidence. But I absolutely believe it's ok to watch them with scrutiny until we understand the implications of this data being used in investigations. Keeping a watchful eye on governments and companies encourages accountability. That's a good thing.

</comment></comment></comment></comment><comment><USER17> What's in a name? What you call "social media surveillance," others might call "open source intelligence." Interestingly, the same people might call the same thing by different words, depending on whether they profit from it.

For fairness, here's a blog post by Brightplanet, one of the subjects of the OP, called "What is OSINT and how can your organization use it? [0]

Many of the same issues that came up in discussion of the recent OKCupid study [1] apply to this piece. I liked what AnhonyMuse wrote in reply to my comment: "people want to create a binary distinction between 'public' (meaning public domain, can be used for anything by anyone) and 'private' (meaning something known solely to a single individual), with no intermediary steps between them."

This point applies especially to people's feelings on "social media surveillance." To those most concerned about it, an easy argument exists: if you didn't want to be surveilled, why did you post it "publicly" on the Internet? The problem with this argument is that, as AnthonyMuse pointed out, people have different definitions, and therefore expectations, of what is _public_.

Personally, I think that "open source intelligence" or "social media surveillance," or whatever you want to call it, needs to become as mainstream as Google. Its power is only "creepy" or corruptible so long as only a few entities can wield it. Surveillance in the hands of a few is dangerous; surveillance in the hands of many is powerful. When everyone has the power to spy on everybody else, then everyone must correctly calibrate their "expectations" for what is public and what is not. If you know that some percentage of your friends on social media are using "surveillance" tools, then you'll be more careful about what you post, because you will understand the true meaning of "public." Whereas if all the surveillance continues to happen in secret, you will continue to post recklessly, blissfully unaware of just how "public" your posts are.

We need to democratize open source intelligence in order to balance the power between those who currently hold it and those who don't. Why should the NSA have all the fun?

Will the "next Google" be a company that indexes the "deep web" [2] and provides a search engine for it?

[0] [https://brightplanet.com/2013/04/what-is-osint-and-how- can-y...](https://brightplanet.com/2013/04/what-is-osint-and-how-can-your- organization-use-it/)

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

[2] Deep web meaning pages behind paywalls or requiring registration. Not Tor.

P.S. I feel the same way about propaganda. Why should government agencies be the only ones with the power to propagandize their message? Everyone should have access to top-of-the-line shilling software!

<comment><USER18> > If you know that some percentage of your friends on social media are using > "surveillance" tools, then you'll be more careful about what you post, > because you will understand the true meaning of "public." Whereas if all the > surveillance continues to happen in secret, you will continue to post > recklessly, blissfully unaware of just how "public" your posts are.

This may help reduce the asymmetry of power, but is it not a case of "throwing the baby out with the bath water"? We lose the exact freedom we are trying to protect - the freedom to act so-called "recklessly" or "inappropriately" in respect to popular opinion.

<comment><USER19> Information really wants to be free.

Privacy is only necessary now because when you lose it, when someone else holds such a detailed profile of your behavior, there's a deep power imbalance. If you received a similarly detailed profile on everyone who was privy to yours, it wouldn't be so bad - and that's exactly what GP proposed.

I think there's something deeply immoral about asking someone to ignore, for your sake, some physical phenomenon that's occurring as much in their universe as yours.

<comment><USER20> There are two parts of this I disgree with.

1\. It's not _information_ that wants to be free, but _access_ to _published_ information. Where the roots of the word "publish" in "public" are germane. In addition to _published_ information, information on _public_ institutions such as governments, government agencies, bureaucracies, major social actors, the wealthy (who've gained strongly through socially-mediated systems), and those guilty of crimes against society.

2\. Information doesn't _balance_ power imbalances, it _magnifies_ them. Though the empowered and disempowered have different vulnerabilities and strengths. Hence information can work against the empowered and disempowered in different ways.

Absent a _handle_ or _pivot point_ for power, information yields none. You simply have understanding of a process you cannot manipulate.

</comment></comment></comment></comment><comment><USER21> There is nothing like a social media surveillance post to bring all the paranoid, dated commenters out of the woodwork. If you are online, you are being tracked. There should be no question about that. Whether its your ISP, analytics, Facebook, google, government, or any other website you use, someone is recording your behavior and making political/business/misc decisions based on it.

You can turn off JS, use tor/vpn, adblock, etc, but we've seen time and time again that there are ways around each one of those strategies. I'm not saying this is ethical or correct, but it is happening and you can't really stop it.

I think its ethical and don't mind. If you post something with a username attached, its traceable and you should understand that. 99.9% of collection is anonymized and used to create better products, offer free* services, improve the internet, etc.

<comment><USER22> > 99.9% of collection is anonymized and used to create better products, offer > free* services, improve the internet, etc.

[citation needed]</comment></comment>


Show HN: Perl script that mounts a webdav share and backups your MySQL databases - <AUTHOR> https://github.com/stevenbraham/mysql-backup <comment><USER2> Nice to see you getting into Perl! For these types of tasks it is indeed very powerful and a great fit.

Some suggestions for you to research to further improve your script:

You are using a lot of shell commands in backticks like `rm -rf out && mkdir out`;

This can be very useful if you want to capture the output of such commands, but it also runs the commands in separate processes using the shell programs. For much of what is in your script you can just use Perl! :)

Read up on core modules like Archive::Tar and the various IO::* modules to start using pure Perl for what you need to do. [http://perldoc.perl.org/index- modules-A.html](http://perldoc.perl.org/index-modules-A.html)

Good books to read would be Modern Perl by chromatic or Beginning Perl by Ovid.</comment>


Show HN: KCP: a new low-latency, secure network stack - <AUTHOR> https://improbable.io/blog/kcp-a-new-low-latency-secure-network-stack <comment><USER2> > The problem with TCP is that it was designed a long time ago.

I understand the intent here is to suggest that some of the design decisions made over the past five decades don't align with the author's use case, but the fact TCP was _originally_ implemented in the 1970's (though with many subsequent changes) isn't _the problem_.

Undeniably TCP's got some problems / features that aren't ideal now, but it's also acquired lots of extensions and knobs to turn to make it perform better in different environments.

For example:

> Amongst other techniques, KCP retransmits packets more quickly, anticipates > packet loss before retransmission timeouts, and backs off more slowly when > packet loss is detected.

SCPS [1] was designed (~15 years ago) to address some of the challenges with TCP on non-ideal networks - including slower backoff & more aggressive ramp up after packet loss. (Satellite comms throughput typically ends up looking like a sawtooth, meaning you waste a lot of bandwidth by TCP being overly cautious.)

I'm not suggesting it's a candidate for improving multiplayer game performance, just a nod to the fact some of these 'new' problems have been considered before.

[1] [https://en.wikipedia.org/wiki/Space_Communications_Protocol_...](https://en.wikipedia.org/wiki/Space_Communications_Protocol_Specifications)

</comment><comment><USER3> KCP is truly awesome. I'm using it in a cross-platform Qt project as alternative to UTP or QUICK protocols which both lack easy to embed libraries.

Check out the C library (MIT licensed) on Github:

[https://github.com/skywind3000/kcp](https://github.com/skywind3000/kcp)

</comment><comment><USER4> I am surprised that they don't even mention [http://enet.bespin.org/](http://enet.bespin.org/) which has been used to provide reliable transmission over UDP in plenty of high-profile video game releases.

Someone reinventing the wheel but not doing enough research to find the state of the art seems a bit odd, or amateurish.

Or that might be a strategy decision, because I believe their paid SpatialOS stuff competes with free enet-based plugins (e.g. Mirror) on the Unity asset store.

<comment><USER5> If you click through to KCP's Github repository, the README does discuss enet.

<comment><USER4> Yes, but this blog post does performance benchmarking against weaker libraries, while not showing the performance of stronger competitors.

[https://github.com/skywind3000/kcp/blob/master/README.en.md](https://github.com/skywind3000/kcp/blob/master/README.en.md) BTW has exactly the same diagram as this blog post, so even though it mentions enet, it does not show enet's performance in its comparison graph.

Plus it only mentions enet in the case of a (almost catastrophic) network failure where even KCP has a 1+ second ping. Playing any kind of online game with a ping above 0.5s is pure pain, so that situation is not a valid data point for arguing about KCP or enet's pros or cons.

</comment></comment></comment><comment><USER6> It seems really weird to me that this post doesn't address what aspects of real-time multiplayer gaming need a reliable transport. The idea of a low- latency reliable transport might seem interesting, but client-server communication generally doesn't require a reliable transport because there's no point in delivering outdated data. From what I can tell, it's because SpatialOS is supposed to support server-side simulation _and_ support splitting that work across multiple game servers. Quite niche IMO.

</comment><comment><USER7> How does KCP compare to QUIC?

<comment><USER8> I came here to ask the same question.

<comment><USER9> ditto lol

</comment></comment></comment><comment><USER10> On a related note, I've been looking for a way of transparently tunnelling all internet traffic through a vps using KCP to improve an unreliable 4G connection and would appreciate any guidance.

To add additional detail, I'm currently using OpenMTCPRouter to bond 4G and DSL but it suffers when one connection starts experiencing packet loss.

There are plenty of guides out there that use shadowsocks which works well for web-browsing, but to be truly transparent need to just set a gateway to route via the tunnel. A docker image or a vm image that makes needs minimal config on both ends would be ideal. Has anyone done something similar?

</comment><comment><USER9> anyone have thoughts on this?

"Optimization, again. TCP is implemented in the kernel and, in part, in the network card. When using TCP we can make one call to the kernel to hand it a large buffer of data and say "segment and package this as you see fit". When using UDP, because we have to do that segmenting and packaging ourselves, we hand each packet individually the kernel. Each call to the kernel is expensive and the overhead becomes very significant, especially in Go. The kernel's TCP stack is also highly optimized for performance while the kernel's UDP stack is typically not."

[https://forum.syncthing.net/t/connections-over- udp/9382](https://forum.syncthing.net/t/connections-over-udp/9382)

</comment><comment><USER11> Perhaps the C library is awesome, but I tried using Go implementation and it's a car crash. Also a protocol with no session control is just weird.

</comment><comment><USER12> TL;DR: A protocol running on top of TCP. It offers encryption, configurability, cheap stream multiplexing and improved latency on unreliable networks at the cost of additional bandwidth overhead compared to TCP and RakNet. Designed for communication between game server and client, where little bandwidth is needed but latency is key.

It seems to replace TCPs retransmission of lost packets with erasure encoding, so single lost packets can be reconstructed from the packets that made it. That should provide a nice improvement in mobile or wireless networks.

<comment><USER13> Does it adapt to network conditions? Usually my network does not lose any packets, sounds wasteful to spend so many bytes for a rare event.

<comment><USER14> WAN links drop packets all the time and that is not a rare event.

<comment><USER13> Ethernet does not drop packets for me. I guess that people who're using WAN don't care much about network quality, otherwise they wouldn't use it in the first place.

<comment><USER15> WAN is not the same as WLAN.

<comment><USER13> Then I don't understand why are you saying that WAN is dropping packets all the time. That's not the case for me. It happens, but it means that my Internet is almost unusable and it's rare event. I'm pinging various websites from time to time (because I play online games and dropped packets is very dangerous) and those pings are just fine. Unless it's common occurrence to pass ping packets but drop data packets, that's not happening for me.

<comment><USER15> > dropped packets is very dangerous

It's not, they are re-transmitted just fine by TCP or over the protocol built on UDP.

Anyway, dropping packets over WAN is just a fact. If you don't think it happens then you are lucky enough to be able to ignore it.

If you also think it never happens on your LAN then either you have better networking than the best datacenters or you are relying on hardware and software so you never see it.

<comment><USER13> I did not state that it never happens. I'm aware how TCP works. It's dangerous because game becomes unplayable.

My point is, packets do not drop regularly for me. It's an exception rather than a rule. Spending a significant amount of traffic for error correcting codes which won't be used is a waste. Proper network stack should not enable this mode until actual packet drops are observed and should disable this mode if packets stop dropping. If a lot of packets are dropping, it might be worth to put even more error correcting codes, to be able to recover from two dropped packets, and so on.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER16> TLDR: This is a library providing logical connections over UDP with in-order delivery, packet loss tolerance via erasure-encoding, and encryption.

This would be useful for real-time mobile apps. Do mobile connections even support UDP?

</comment><comment><USER17> How would you develop a protocol that doesn't use TCP at all?

<comment><USER18> By building it on top of UDP, which in turn is a thin wrapper around IP.

In theory, you could alternately build a new protocol directly on top of IP, just as TCP and UDP themselves are built, but middleboxes have a habit of dropping anything that's not TCP or UDP. Plus, unprivileged users on standard OSes can't send arbitrary IP packets, so it would require more setup for users.</comment></comment>


Show HN: Get notified on your phone when your download has finished on your Mac - <AUTHOR> http://bark.io

<comment><AUTHOR> Real useful when you wanted to know when your huge download has finished.

Future ideas:

\- Disable sleep until finished. \- Remote turn off \- Keyboard shortcuts</comment>


WiFried: iOS 8 WiFi Issue - <AUTHOR> https://medium.com/@mariociabarra/wifried-ios-8-wifi-performance-issues-3029a164ce94 <comment><USER2> I was curious as to how Apple implemented AirDrop discovery (particularly the Contacts Only feature) because their documentation is helpful, but vague[1]. I spent a night reverse engineering it, and this is the process:

1\. Alice opens the AirDrop sheet.

2\. Alice begins advertising her short "proximity"[2] hashes over BTLE.

3\. Bob, continually scanning in the background, sees Alice and her hashes.

4\. If Bob either a) has the "Everyone" setting enabled, or b) has a match to one of Alice's proximity hashes in his contacts, Bob connects to Alice over AWDL.

6\. Bob starts a HTTP server.

7\. Bob advertises a Bonjour service for his HTTP server.

8\. Alice sends a discovery request.

9\. If the request is valid, Bob sends a discovery response (including device model, name and icon).

Also to note, the author, Mario Ciabarra is the (co?)-founder of Rock Your Phone, the alternative to Cydia until the two merged in 2010[3].

[1] [https://www.apple.com/privacy/docs/iOS_Security_Guide_Oct_20...](https://www.apple.com/privacy/docs/iOS_Security_Guide_Oct_2014.pdf) (Page 23)

[2] Each device hashes every phone number and email in its address book with SHA256 after normalizing them. These hashes are referred to as full hashes. The "proximity" hashes are the first two bytes of the long hash. The full hashes are not broadcasted, but they are verified later over AWDL.

[3] [http://www.tuaw.com/2010/09/11/alliance-of-the- jailbreakers-...](http://www.tuaw.com/2010/09/11/alliance-of-the-jailbreakers- cydia-acquires-rock/)

<comment><USER3> Very interesting. How did you go about reverse engineering it? Would you mind sharing?

<comment><USER2> Sure! It's a combination of static and dynamic analysis. I have a jailbroken phone, which allows me to access any file on the filesystem and decrypt any App Store binaries[1]. The first step is to find in which binaries the functionality lives. I know from searching that AirDrop lives in Sharing.framework[2], which has a supporting daemon, sharingd. Then, I open the binaries in a disassembler like IDA Pro[3] or Hopper[4] to determine how they work. Running class-dump is also helpful[5]. If I need to inspect a process like sharingd at runtime, I use Cycript[6], which gives me an Objective-C REPL into the process, or LLDB[7].

[1] [https://github.com/stefanesser/dumpdecrypted](https://github.com/stefanesser/dumpdecrypted)

[2] [https://github.com/JaviSoto/iOS8-Runtime- Headers/tree/master...](https://github.com/JaviSoto/iOS8-Runtime- Headers/tree/master/PrivateFrameworks/Sharing.framework)

[3] [https://www.hex-rays.com/products/ida/](https://www.hex- rays.com/products/ida/)

[4] [http://www.hopperapp.com/](http://www.hopperapp.com/)

[5] [http://stevenygard.com/projects/class- dump/](http://stevenygard.com/projects/class-dump/)

[6] [http://www.cycript.org/](http://www.cycript.org/)

[7] [http://iphonedevwiki.net/index.php/Debugserver](http://iphonedevwiki.net/index.php/Debugserver)

<comment><USER4> Oh crap, I didn't know IDA was free for non-commercial use. I thought it was like Photoshop: prohibitively expensive for most users, so everyone pirates it. I'm going to have to give that a shot.

<comment><USER5> Maybe you'd like Radare, which is free software. [http://www.radare.org/y/](http://www.radare.org/y/)

<comment><USER4> Thank you for the link.

</comment></comment></comment></comment></comment></comment><comment><USER6> I gotta say that this is annoying. I currently work for a place where we're all Macs and iOS. Many, many devices all over the place, all broadcasting for AirDrop and AirPlay. We're a school, they are useful features. Everything connects to a mesh wifi network. Neighbouring APs are of course on different channels.

It's like we're the perfect environment to experience this problem on a massive scale. We've tested and replicated OP's test results. So now we have a choice between good wifi and AirDrop/AirPlay? This sucks.

<comment><USER7> I work for a university, and am a student at the same university. WiFi in lecture halls has been complete garbage since 10.10.1 hit. Students love their Macbooks, and in a room with 30+ of them, our wifi connection drops at least every minute.

</comment></comment><comment><USER8> I have been suffering some really bizarre WiFi issues on my rMBP since upgrading to 10.10. I'll suddenly get latencies of a second or more. Switching WiFi networks or even turning WiFi off and back on again will solve the problem for a short period of time.

I just tested this fix to do _sudo ifconfig awdl0 down_ and my ping times are consistently low.

<comment><USER9> > Switching WiFi networks or even turning WiFi off and back on again will > solve the problem for a short period of time.

This is exactly the problem I'm having both with my 10.10 MBP and my iPhones/iPads running iOS8. Glad to hear bringing down awdl0 fixes it, I'm going to try it as well, but it seems there's no solution for non-jailbroken iOS devices yet :(

Here's the weird thing, my devices (both i and MBP) are fine on the work network, so I wonder why they're good there but not at home? I have a decent router (LinkSys E4200) that worked fine pre-iOS8 and 10.10. I have fiddled with the settings on the 2.4 Ghz and 5 Ghz to no avail (though admittedly I haven't tried _everything_ ).

Does anyone have any idea why my devices work fine on our work network and not at home? I'd hate to think I need a new router, I know it's not real gear, but it's served it's purpose just fine until this. I know my company at work doesn't allow Bonjour, is there a way to disallow it on my home router too?

<comment><USER10> Unrelated: Don't factory reset your router. The software to set it up requires you to downgrade to 10.7 or something. It'd be nice if linksys would update their software, or at least remove the version cap.

<comment><USER11> I didn't have to use any special software to set up my Linksys E4200, either when it was new or this year.

You can always use the web interface to set it up, it's just 'easier' for non- technical consumers to use the software.

</comment></comment></comment></comment><comment><USER12> Seems Apple's quality control has really been screwing up the last few releases. I haven't updated to iOS 8 or OSX 10.10, and the way things are going I'm not going to any time soon.

If they keep this up, I'm switching back to Android and Linux.

<comment><USER7> I second this. I'm part of Appleseed because I figured my use cases of my Macbook for development might bring out some less noticeable bugs.

In the latest pre-release before 10.10.1 came out, the iCloud settings broke so that you could only access the system settings by agreeing to the iCloud EULA, or clicking _very_ quickly and hoping you could press the back button before the dialog reappeared. Very obvious, easy to reproduce bug.

Even after sending in multiple reports via Feedback assistant, it's still a live bug in 10.10.1 production. I get it, bugs happen, but the lack of QA and use of feedback assistant is really mindblowing to me.

Anyone have some light to shed on what's up?

</comment></comment><comment><USER13> Neat. This is very helpful. Hopefully it actually fixes the WiFi performance issues. I created an Alfred workflow for myself based on the terminal commands listed in the article to quickly enable/disable WiFried on Yosemite. It basically runs the terminal command after authenticating upon entering a keyword to trigger. Quick and easy, just like the iOS tweak.

Edit: Here's a link to the Alfred workflows to disable/enable AirDrop if you're interested. [https://dl.dropboxusercontent.com/u/534072/WiFried.zip](https://dl.dropboxusercontent.com/u/534072/WiFried.zip)

</comment><comment><USER14> In a related but different issue, my iPhone 4S has not been able to connect to wifi since I upgraded to 8.0. 8.1 didn't fix it. It notified me of some patch today; I hope it works.

I tried a few different tricks I found by Googling, like "Reset Network Settings", but they didn't work. It's weird, after upgrading to 8.1, I had Wifi for a short period, then the next time I came back to my phone it was back to being completely gone. As in the Settings app won't even let me turn it on.

Pretty frustrating.

<comment><USER15> In my experience, the wifi icon being greyed out can often mean the hardware on your device is no longer functioning. There are plenty of cases of this, seemed to happen most to 4S phones on upgrade from ios6 to 7 but also to iphone 5 as well. Not generally fixable despite people trying crazy things like blowing hair dryer down the headphone socket etc.

<comment><USER14> I'm definitely hoping that's not the case... I did have this "no wifi" experience happen once before with this phone on, I think, iOS 6, and I did the "Reset Network Settings" trick and it worked again.

EDIT: After installing iOS 8.1.1, I have wifi back... for now. :)

EDIT 2: Gone again after a reboot, which I did because wifi died. I believe it may have actually crashed my cable modem/router before I rebooted it.

</comment></comment></comment><comment><USER16> I had this same issue on my 5S and a majority of my friends with that particular model seems to be experiencing that as well.

In any case, after browsing the apple support forums, I decided to try a few of the workarounds there and the only one which worked was by setting my 2.4ghz interface to b/g(legacy)-only mode.

It was an acceptable fix since all my other devices were on the 5ghz and I don't really have any other option(7.1.2 was great for me, shouldn't have upgraded).

</comment><comment><USER17> Very interesting and detailed post

Since upgrading to Yosemite, I've effectively had to stop using Airdrop, as it is now _completely_ unreliable.

The sooner this is sorted, the better.

</comment><comment><USER18> I see many comments criticizing Apple's QA and wondering how this defect was not discovered prior to release. The bulk of the comments seem to adopt a tone of disbelief. I find _that_ hard to believe.

It would be illuminating to know more details about how development and testing worked for the Yosemite project. Was this a late change? Were there systematic blind spots in the test environments and test processes that made defects like this difficult to discover internally? Are we even sure that this issue was _not_ identified internally? Etc.

</comment><comment><USER19> I have noticed since iOS8 on an iPad3 and my 2012 MBP (non-retina) that Safari is insanely slow to resolve sites. It gets to about 15% of the progress bar and will just sit there.

Has anyone else noticed this?

<comment><USER20> Safari is borderline unusable for me on 10.9 and 10.10. It will literally take 30 seconds to load facebook.com. If I open Chrome or Firefox and try it, it loads instantly.

I've tried different DNS servers to no avail. I don't use Safari that often so I never bothered digging deeper.

<comment><USER21> Happens to me as well on a rMBP. There's also significant lag opening new tabs.

I've had wifi issues on my phone since upgrading, where the iPhone will switch to LTE even though there's wifi available, from a network it remembers. Rebooting the phone will cause it to reconnect, so I'm trying this airdrop disable tip to see if it helps my connection problems.

<comment><USER20> I disabled AirDrop using the "defaults write" command, and now Safari loads things instantly! Holy crap!

</comment></comment></comment></comment><comment> mike-cardwell I thought one of the benefits of the Apple ecosystem was that they controlled both the software _and_ the hardware, so they should be able to catch these things...

</comment><comment><USER22> The 'sudo ifconfig awdl0 down' trick does not seem to solve the issues I have on Yosemite (described here BTW [http://markmaunder.com/2014/11/13/os-x-10-10-yosemite- wifi-p...](http://markmaunder.com/2014/11/13/os-x-10-10-yosemite-wifi- problems-analyzed/)): TCP Retransmissions and TCP Dup ACK.

</comment><comment><USER23> Yeah when are they going to fix these issues? Everything was great until iOS 8 & Yosemite. My Mac with Yosemite can no longer use Airplay and my Airport Express no longer shows up as a supported Apple device in Airport Utility (despite the wifi still working)

<comment><USER24> IMHO everything was not "great" since Mavericks came about. My wifi (2012 MBP) started having issues connecting on wake, which were fixed and unfixed with each patch released. Now Yosemite will reconnect on wake, but DNS resolution will be broken, so when that happens i have to go in TCP/IP settings, make any change and "Apply" to get back to a working state.

It's 2014 and these _were_ solved problems, I really don't know why they couldn't leave it well alone.

<comment><USER25> I've been experiencing the wake issues on 10.9, as well. Bouncing wifi seems to fix it, but it's very annoying. It seems to be when I close lid on one network and open it on a different network that it gets confused what to do.

</comment></comment></comment><comment><USER26> I've had WiFi problems for many moons on 10.9: long latencies when pinging the router and complete dropouts for periods of 2-10 seconds every 3 minutes or so. The problem seems only to happen with certain routers. I was hopeful that my problems could be explained by the AirDrop issue (i.e., maybe I was only having problems when in proximity to certain computers using those troublesome routers).

Sadly, I don't even have the awdl0 interface. I tried taking down p2p0 but that didn't help either. Any other ideas?

I am really desperate!!!

</comment><comment><USER27> I'm surprised this issue wasn't caught at Apple. You would think they must have a huge network of Macs and iPhones--surely someone should have noticed the poor WiFi performance.

<comment><USER28> I tested on my 802.11ac network with an iPhone 6 and couldn't replicate using the steps provided. A speed test sustained 193Mb/s. Maybe 802.11ac networks don't have the same problem? I would think Apple are running 802.11ac on campus.

<comment><USER29> Perhaps 802.11ac, since it uses 5GHz, is less congested and thus has less problems?

</comment></comment></comment><comment><USER30> Here's my tool for measuring latency glitches in real time on any device with a javascript-capable web browser. Maybe it will help some people narrow down the nature of their wifi slowness problems. In short, if the latency is always high, that's one thing. If it is usually low but then jumps, that's a different thing. [http://gfblip.appspot.com/](http://gfblip.appspot.com/)

</comment><comment><USER31> What is the impact on Yosemite if I don't actively use AirDrop. Does it still cause WiFi issues? I'm not clear on the severity of the issue.

<comment><USER32> The amount of usage doesn't seem to matter in my testing. I didn't share anything (and I also set the discoverable setting to 'no one'), and I see a big difference in the throughput: 38 Mbps (awdl0 interface up) vs ~80 Mbps (awdl0 interface down). Yikes. This was a TCP test using iperf, between the laptop and another machine on the lan.

Turning off bluetooth didn't help, so it looks like it's easy to be affected by the performance hit.

<comment><USER33> Ouch, I just ran iperf on mine (rMBP wifi to LAN server). I get ~30 Mbits/sec with awdl0 down, and ~9 Mbits/sec with the interface up. This explains why I've been having some problems streaming movies over wifi for a while now, probably since upgrading to Yosemite.

</comment></comment></comment><comment><USER34> Bonjour over Wifi is used for more than Airdrop - its also used for virtualized CoreMIDI endpoints, and Audio too .. maybe there's something to be said about paring down the Bonjour refresh interval or something, but then we'd all be complaining about how long it takes to connect our studio gear to the fancy set of iPads whose soul purpose is to rock and roll ..

<comment><USER11> Bonjour advertisements have an exponential back-off. They'll advertise themselves, then again 1s later, then 3s, then 9s, 27s, etc.

The same is true of bonjour probes; they'll request, then again 1s later, then 3s, then 9s, and so on.

Source: [https://developer.apple.com/library/ios/documentation/Cocoa/...](https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/NetServices/Articles/about.html)

<comment><USER34> Ah, that explains everything, thanks ..

</comment></comment></comment><comment><USER35> On a related note, I believe there is also a hardware problem on the iPhone 6 plus' 4G LTE radio for ATT. Same network, but my old nokia 1020 had a much faster network connection. This is annecdotal, but there are reports in other forums also.

</comment><comment><USER36> Ever since I upgraded to iOS 8.1, I've seen random wifi drops where wifi just disappears completely and I've got to go back into Settings to reactivate wifi.

As you can imagine, it's exceedingly annoying when trying to watch a video.

</comment><comment><USER37> At least in previous releases, you could disable AirDrop on OS X:

defaults write com.apple.NetworkBrowser DisableAirDrop -boolean YES

I don't have any Bluetooth-LE hardware to confirm whether this affects the newer-style AirDrop reported as the problem.

</comment><comment><USER38> Did he file a bug report?

<comment><USER39> It doesn't seem like a bug, it seems like a trade off. In order to work over wifi it needs to flick between channels, reducing the uptime on the current channel you are using.

<comment><USER40> Except my phone will get itself in a state where that latency stays high, and bandwidth drops for a long time. Only solution is to turn wifi off/on. That definitely seems like a bug.

I'm fine with lower throughput while discovery is going on, but when nothing's changed on the network I've been on for days, and my phone can't use wifi anymore, that's a bug.

</comment></comment></comment><comment><USER41> Airdrop uses Bluethooth for discovery (and may be even transfer?). Why does the author say it uses Wifi for discovery?

<comment><USER42> Yes it does in Yosemite, not sure why you've been down voted .

</comment></comment><comment><USER43> great article! Hope Apple takes the hint for this call to action.

</comment><comment><USER44> Must be a real problem since its got an icon.</comment>


YouTube User Guard for Chrome: stay signed in to YT when signing out of Gmail. - <AUTHOR> https://bitbucket.org/kwerty/youtube-user-guard/

<comment><AUTHOR> YouTube User Guard is an extension for Google Chrome which allows you to stay signed in to YouTube when you sign out of other Google properties such as Gmail.

This extension requires chrome.experimental.infobars, so you must enable Chrome's exeperimental extension APIs. You can do this by going to chrome://flags and enabling Experimental Extension APIs. You must restart Chrome for changes to take effect.

I created this extension out of frustration. I don't want to stay logged in to Google and be tracked all over the net, but I do however want to use a YouTube account for favouriting and liking the various videos I encounter each day.

Now that I've been using this extension for months with complete success I feel it is time to share it with the world. Hope somebody benefits from it :}</comment>


If you can't get into a top-five MBA program, don't bother - <AUTHOR> http://qz.com/42233/if-you-cant-get-into-a-top-five-mba-program-dont-even-bother/ <comment><USER2> _If you can't get into a top-five MBA program, don't even bother_

In 2009 I had spent 3 years out of school in a multifamily commercial real estate brokerage role. (We closed transactions above $5M, average around $25M). It was hard to make great money due to transaction volumes, but I made enough money to rent an apartment and buy beers every now and again.

In 2012 I made more than 5 times what I made in any year from 2006 to 2009. The difference was attending a program ranked 24th in some ranking systems and north of 30 in other ranking systems.

About 50% of my current coworkers went to top 10 schools. The others went to elite undergrad programs and a few went to programs like mine.

If you want a great job out of an MBA program, you will need to do the maximum, practice interview skills and network well. You also need to be willing to tell people that the job they are trying to place you in is below you. This happened all the time, Target actually tried to recruit floor managers at an MBA career fair. I looked the lady straight in the eye and asked if she had any real jobs. Next thing you know I have someone's card at corporate.

The company I work for now tried to put me in a fairly basic role, I said don't bother and I am in a much, much better role now. You have to be confident that a ranking next to your school name is bullshit.

A top 5 program makes things easier, but even if you get in, you will still need to work hard. I heard the CEO of Carlyle Group speak on our campus, he said "Nothing great ever gets accomplished between 9 and 5". You can bet that I worked hard, took extra classes, attended EVERY social event, attended clubs, participated in the on campus investment club, went to the VCIC International competition, worked for the on campus angel investment network etc.

I didn't get a lot of sleep and I probably drank too much coffee, but I had a great time and I got what I wanted and needed out of the program. Not just in a job, but lifelong friends and an amazing learning experience.

-I'd say 60-70% of my classmates ended up substantially better than when they started. The ones who didn't do as well were either international students who couldn't get visas or the ones who worked the least and were least dependable.

<comment><USER3> Curious which MBA school did you attend, I agree with the author that MBA outside of top 5 is worthless. 24th seems pretty low in the order and you would have to struggle a lot, seems like you did.

<comment><USER2> I didn't struggle, I did what hard working people do, I worked hard. I regularly met people at case competitions from the 5 schools mentioned who were not getting the job interviews or jobs I was because they expected to get it for free.

Sure, they get better on campus recruiting than other schools, but the best jobs are not advertised.

</comment></comment></comment><comment><USER4> This is a vastly oversimplified conclusion that only serves the author's interests. Of course he's going to say the MBA degree is worthless unless it's from Wharton... he went to Wharton.

A recent survey of top MBA students found that 88% of graduates say they were happy with the investment they made. Having come from a school that's not in the so-called top 5 (more like top 10), the MBA has opened so many more doors and offered opportunities I never would have without a degree.

<comment><USER5> "88% of graduates say they were happy with the investment they made."

Of course you will rationalize your decision and you will say you are happy after sinking so much money in! Can you imagine answering something else? The minute you were accepted you were 'happy with your decision' and you crafted and told yourself a nice narrative.

I'm sure there is tangible ROI for a lot of MBA graduates, but the question whether they are 'happy' is simply biased.

<comment><USER6> "If people commit, orally or in writing, to an idea or goal, they are more likely to honor that commitment because of establishing that idea or goal as being congruent with their self-image."

</comment></comment></comment><comment><USER7> This should be tempered somewhat with: "if your goal is to catapult yourself into a management position at a large organization." Basically, the kind of big companies that pay the kind of salaries that justify typical MBA tuitions can fill their recruiting needs by just looking at the top 5-7 (usually, Booth and Columbia are thrown in with Wharton, Harvard, Stanford, Sloan, and Kellogg). And these days, even at the top schools it's not like everyone is choosing between McKinsey or Goldman like they used to. A lot of people have to hustle in ways they did not before.

Of course, that's not the only career track that might be helped by an MBA. If you've got an established track record and want to move up within your organization, or to a higher level position in a related organization, getting a well-known but not elite MBA can still give you a boost.

</comment><comment><USER8> I have an MBA (from a top school), and teach a class there now too.

My advice to you:

Do your MBA in a city you want to stay in. You will start businesses and get job referrals from your classmates that remain in the town.

Go out of your way to impress a few influential profs. Employers ask for the best students. Profs will get you gigs.

</comment><comment><USER9> These MBA bashing articles always focus on the same thing: that an MBA no longer guarantees a good job and that it doesn't help you start your own company. I would love to see an article that examines the real value of an MBA: its network. Does the value of the connections you make during an MBA program outweigh the cost, both time and money?

<comment><USER10> This article makes that point indirectly. If the primary value of an MBA is the network, you should only go to a school where the network has meaningful impact on your career prospects: a top 5 school.

<comment><USER11> which begs the real question - why is "networking" so important (i mean, i know its important, but how come many things hinges on you knowing the right person, instead of hinging on your innate capability instead)?

I don't like the sound of an elite clique forming that excludes those who are unable to pay or for some reason can't participate in that clique, and this is prevented from roles such as CEOs/upper management.

<comment><USER3> I have the same question, what does everyone emphasis on Networking so much? I think it's purely overrated. If you really want to network, you can do that for a fraction of a cost by attending industry events/conferences and don't need to spend 2 years to go to Business School.

<comment><USER12> It's a different kind of network.

The people you meet at conferences are not likely to be highly placed, and you will not have a particularly strong bond with them.

Spend 2 years in a highly-ranked MBA program, though, and you will develop deep, long-lasting bonds with people, many of whom will end up in important positions.

It's the same sort of deep connection you get from being, say, an early participant at an important company. The PayPal Mafia [1] are important partly because they are smart individuals, and partly because they're part of a well- connected network.

I hear you also get a similar effect from incubator programs like Y Combinator: it builds bonds that last.

[1] <http://en.wikipedia.org/wiki/PayPal_Mafia>

<comment><USER3> Ok, that explains..but I would still not go to MBA school mostly to build network.

</comment></comment></comment></comment></comment></comment><comment><USER13> There is definitely a need for another kind of business education.

At some point I left a cushy full-time position for a consulting (in another area, to boot). Classic MBA education is obviously too heavy weight for me. All the things that I needed to run my one-man business I learned from a mish- mash of other consultants' war stories, web forums, and few books.

I would say that Fred Wilson's MBA series (<http://www.avc.com/a_vc/mba- mondays/>) or courses like Entrepreneurship 101 (<http://www.marsdd.com/event_series/entrepreneurship-101/>) are getting pretty close to what I need, but sometimes I need to know things that are even more down to Earth. Sometimes they are just technicalities, but very important technicalities: nevertheless. E.g.: how to choose corporate structure, what documents to keep for audit, does CRA (or IRA) accept scanned images instead of paper receipts, basics of accounting to make sure I work more effectively with my accountant, templates for invoices and shareholder meeting minutes, etc. Moreover, it would be great if such education was split into courses or stages. E.g. once my business grows large enough, I will want to know about hiring people, choosing and using CRM, setting up basic IT infrastructure. It is not that (if and when I grow) I am going to do all that myself, but I need to understand at least certain things at certain stages to make informed decisions and give more or less informed "go aheads" to people I hire.

I would definitely subscribe for something like this.

<comment><USER14> You might be interested in your local chapters of SCORE or the Chamber of Commerce. They often have events featuring that sort of down-to-earth advice, and are also a good way to meet other small businesspeople.

</comment></comment><comment><USER15> I feel like this is the you can't have the same job for 30 years story told over and over again.

Yeah. New economy. You have to have skills. You can't just buy a good job.

</comment><comment><USER16> For some context, this was the state of play in 2000 ([http://www.nytimes.com/2000/10/01/business/a-matter-of- degre...](http://www.nytimes.com/2000/10/01/business/a-matter-of-degree-not- for-consultants.html?pagewanted=all&src=pm) ):

"Consulting firms are especially hungry [...] consulting firms still hire hundreds of M.B.A.'s and say they would sign up even more if many of the most desirable candidates were not instead joining dot-com companies that can lure them with equity stakes."

"'Frankly, business is in some ways not that difficult to learn,'' said Rajat Gupta, McKinsey's managing partner. ''We can pick up people who have not studied business and can teach them, if they have the intellectual firepower.'"

"STILL, from some perspectives, these are not the best of times for the M.B.A. [...] many potential students [... are] eager to join start-ups. If Bill Gates or Jeff Bezos didn't need an M.B.A., some people wonder why they do, either. Also, with technology rapidly and fundamentally changing so many industries, other people worry that two years spent outside the work force is too long."

"Indeed, at a time when technology is changing the rules for many industries, the skills of scientists and physicians are especially attractive to consulting firms looking to develop new theories. ''Oftentimes, the problems they're trying to solve really do require a deeper level of analytical skills'' than many M.B.A.'s have, said Laura D'Andrea Tyson, the dean of the University of California's Haas School of Business..."

</comment><comment><USER17> Or... just don't bother with an MBA in the first place. Talented managers are grown, they are not produced.

Rather, go get a skill that can be used to build something. If you're talented for management, you don't need an MBA - it will come as part of your experience and interpersonal skills. Everything important taught in an MBA program can be learned later in your career as a by-product of simply being part of a good organization.

<comment><USER18> Don't underestimate the skills taught at good MBA programs.

However, I'd say that the way to go is to get a position which requires those skills first, some experience, and THEN do an MBA-type program - you'll get far more out of it.

Maybe you can learn such skills as a by-product, but doing so in an organized and challenging way is useful by itself.

Edit: see

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

</comment></comment><comment><USER19> I have to agree with this post to some extent. Years ago we had an MBA from a local university apply and it actually made a negative impact on the interview when we saw that on the resume- and this was for a business analyst position.

But, I think if you are geniunely interested in business, there is nothing wrong with getting an MBA anywhere. Just couple it with starting your own business. You don't even have to list it on your resume if you think it will hurt. Just be aware- it is NOT cheap, and you are lucky if your company will fully fund it; the last place I worked would fund only the cheapest in-state MBA program and they wouldn't pay for books or associated fees, so it would have been thousands of dollars a year out of pocket I couldn't justify.

<comment><USER13> From my and few other people's I trust (totally unscientific) observations: not only MBA does not help you with starting your own business, it actually lowers your chances.

MBAs come out of schools with a set of skills geared towards big businesses. That is what MBA was created for. But the real killer: after so many courses and case studies, for any idea or execution plan you know exactly why it is not going to work. Because this "was tried before and did not work", or "it works sometimes, but we do not have enough capital".

Why entrepreneurs that make it big are usually young? It is not just pure energy and stamina. It is also because they do not "know" that things will not work. And they don't, 95% of the time. But 5% of the cases when they do, against all odds, bring real innovation and wealth creation.

MBA adds too much years of this kind of knowledge on your shoulders.

<comment><USER20> One or two succeed and tens of thousands fail. With MBA's, one or two succeed but only hundreds fail. I call that improvement. It's not guaranteed success but you've improved your situation. And failure does actually have real consequences.

This "I'm too dumb to know better, therefore I am better" idea is based on the few lucky people but ignores the huge amount of failures. Consider there may be ten thousand failures each year that you never even heard about.

</comment></comment></comment><comment><USER21> Maybe I'm in the minority here, but I went to a top 25, but not top 5 MBA program, and my network is not all that great, but I actually feel like I learned quite a bit.

<comment><USER22> I don't mean to be rude, but that doesn't sound like a lot of return of investment.

</comment></comment><comment><USER23> That only 75% of Stanford MBA grads have jobs at graduation is more a reflection of the rising value of entrepreneurship than the difficulty of getting jobs. Students aren't lining up consulting or banking jobs because there are better prospects in starting something up in silicon valley. That plus the unfortunate difficulties of foreign students getting work permits.

<comment><USER12> That's an interesting theory. Do you have any evidence?

<comment><USER23> There have been a few articles:

[http://management.fortune.cnn.com/2012/06/01/mba-startups- st...](http://management.fortune.cnn.com/2012/06/01/mba-startups-stanford/)

It anecdotal, but I've also met several recent grads who are starting something up, have been working on pitches, or who waited until after graduation to try to find work at a startup.

</comment></comment></comment><comment><USER24> What about Chicago?

<comment><USER25> I'd argue he's overlooking some schools. Notably Chicago and Columbia, but also Duke, Dartmouth, and Berkeley. I'd also say Rice and Texas if you'd like to work in energy financing, USC and UCLA if entertainment is your game, and regional programs your employer, should they be so kind, might help you pay for, especially if your background is in science or engineering and you'd like to rebrand yourself.

But the underlying point holds: It's not the golden ticket it used to be. It's primarily for consultants and bankers these days, and those aren't sectors that hire far and wide. They want brand names that'll impress their clients who probably attended brand name MBA programs themselves.

</comment></comment><comment><USER26> if you're interested in the tech scene, save yourself the tuition money. For a tiny fraction of the cost, spend a year building your own product/offering and you will learn more than in any b-school.

<comment><USER27> I know this is what people are saying, but is it actually true? I would imagine that if you can land a position as a technical lead in a small team within a couple of years, you'll be much better suited to lead a startup than you would be building your own products. Also some selection of business courses wouldn't hurt like marketing, business intelligence and networking.

<comment><USER28> No it isn't true. This is, yet again, a great example of American self- centered thinking. The rest of the world trains and hires many more MBAs than the top 5 could possibly put out.

</comment></comment></comment><comment><USER29> Harvard, Stanford, INSEAD, London Business School, UPenn, UChicago, Columbia, Northwestern, Duke, MIT <let's stop here>

Which were the top 5 again? It changes by year and publication

<comment><USER30> Yes, limiting yourself to the "top 5" (by what measure?) is a sure sign this makes no sense.

Top 5 MBAs by number of squirrels on campus?</comment></comment>


I am looking for a Developer with an eye for design, WHERE DO I FIND ONE? - <AUTHOR>

I work for an agency specializing in online micro sites and info graphics, I have used sites such as elance.com and freelancer.com to find freelance developers, but none of them seem to have an eye for design, do they exist? If so how can I find them? <comment><USER2> They are out there, but they typically demand higher rates than you are going to find looking on those sites. You are now looking for a premium "package" and prices will be reflective of that.</comment>


How Thinking Goes Wrong: Fallacies That Lead Us to Believe Weird Things - <AUTHOR> http://www.positiveatheism.org/writ/sherm3.htm

<comment><USER2> too disorganized. I prefer these linked lists, I collectively call them the skeptic's bible.

<http://en.wikipedia.org/wiki/List_of_fallacies> <http://en.wikipedia.org/wiki/List_of_cognitive_biases>

<comment><AUTHOR> Thanks for the Wikipedia lists link. I like Shermer's writings for the examples that they give as he discusses general principles.

After edit:

Oh, and there is some doubt that the Hawthorne effect (mentioned in the link you kindly shared)

[http://en.wikipedia.org/wiki/Hawthorne_effect#Interpretation...](http://en.wikipedia.org/wiki/Hawthorne_effect#Interpretations_and_criticisms_of_the_Hawthorne_studies)

is a genuine phenomenon.

<comment><USER3> Really? You don't believe such an effect ever happens? It's one thing to say that particular results are not due to the effect, but the effect itself seems like a pretty likely source of error in any not-very-rigorous experiment.

<comment><AUTHOR> I spent most of my youth believing that there is a Hawthorne effect as described in the usual anecdote, but then on Usenet in the 1990s a psychologist referred me to a peer-reviewed article that actually went back to the data gathered by the original researchers. The article said that it is more likely that the change in worker performance was due to operant conditioning based on changed working conditions that were going on at the same time as the changes in factory lighting and so forth that the anecdote is about. Is there any replication

<http://norvig.com/experiment-design.html>

of a straight-up Hawthorne effect anywhere else in the peer-reviewed literature?

<comment><USER3> OK, fair enough. It hasn't been convincingly demonstrated. But maybe you'll agree that it's still a good idea to watch out for the Hawthorne effect when doing human performance research, because it seems like a possible source of error. You wouldn't tell experimenters "there is no Hawthorne effect, so stop worrying about it."

</comment></comment></comment></comment></comment><comment><USER3> About cold fusion, he says: _Maybe fifty years of physics will be proved wrong by one experiment, but don't throw out your furnace until that experiment has been replicated_.

Pons and Fleischman's announcement can hardly be described as telling people to throw out their furnaces. They announced that they had measurements which were not explainable by the prevailing theories, and the new theory it suggested would be hugely valuable. Some journalists made it seem even more exciting than that, but I don't think you can blame scientists for the way they are reported in the popular press any more than you can blame politicians for what's reported on Fox News. Of course, it turned out that their numbers were better explained by some subtle measurement errors, but it took hundreds of chemists years to convincingly refute the theory.

It was not an unreasonable decision to announce it publicly, in order to mobilize the resources necessary to get to the bottom of it.

<comment><AUTHOR> _it took hundreds of chemists years to convincingly refute the theory_

Some observers were skeptical from the beginning because the neutron output of a genuine fusion process was never found by the persons who announced their discovery of "cold fusion."

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

It's also a matter of opinion whether the errors in measurement of total system energy inputs and outputs were subtle or gross. Being the son of an industrial engineer who studied chemistry, I'm of the opinion that the errors were inexcusably sloppy for researchers who held a press conference to announce their results.

<comment><USER3> Oh, but the lack of neutron output was the most interesting part! If there had been neutrons, people would have assumed there was an obscure sort of inertial confinement fusion going on at some particular kind of defect in the crystal structure, perhaps a microscopic Farnsworth Fusor. Such an effect would be intriguing if it existed, but not very fundamental and probably not that useful.

Cold Fusion was important because it raised the possibility of a previously unknown mass/energy conversion mechanism, or at least a manifestation of a poorly understood one like neutrino emission or absorption.

Neutrinos are a good lesson in how much we actually understand the world. The neutrino flux from the sun is thought to be 10^12 particles per square meter per second, yet its mass is "Unknown, probably nonzero" [Wikipedia]. They don't seem to interact with ordinary matter much, but we can't rule out them interacting strongly with particular molecular structures in Palladium- Deuterium alloys. Nor can we rule out the presence of particles that interact even more weakly than neutrinos. The 1995 Nobel was awarded for finding evidence of neutrinos that are now thought to have been antineutrinos. Particle physics is not a solved problem.</comment></comment></comment>


Top AWS engineer Tim Bray quits $1m-plus job over Amazon firing employees - <AUTHOR> https://www.zdnet.com/article/top-aws-engineer-tim-bray-quits-1m-plus-job-over-amazon-firing-employees/ <comment><USER2> [https://news.ycombinator.com/item?id=23065782](https://news.ycombinator.com/item?id=23065782)

</comment><comment><USER3> The title misinterprets a statement about options vesting as a salary.

</comment><comment><USER4> s/quits/retires</comment>


Of parser-fetishists and semi-colons - <AUTHOR> http://christianheilmann.com/2012/04/16/of-parser-fetishists-and-semi-colons/ <comment><USER4> I come from a Python background. However, thanks to work and school, I now program mostly in JavaScript, PHP, and Java (though I still use Python when I get a chance).

Now, I _could_ use underscore_names in Java and JavaScript, but I don't. Even though I personally prefer underscore_names to camelCaseNames, I also realize that those languages are designed with camelCaseNames in mind, that the community conventions are for camelCaseNames, and that it is better to write code that looks nice and idiomatic in _that_ language than it is to write code that looks nice and idiomatic in Python.

Not to mention that there are some cases where camelCaseNames are required - for example, when overriding inherited methods in Java - and if I used camelCase where required and underscore_names everywhere else, my code would be inconsistent, which to me is worse than using a style I don't like. So just because I _could_ use underscore_names when I wanted to, there are a lot of reasons that I _shouldn't_.

A lot of those points also apply to JavaScript:

* JavaScript was designed with the use of semicolons in mind. Brandon Eich himself has said that ASI was only intended as an extra check for sloppy programmers.

* Outside the Ruby on Rails crowd, all the JavaScript I have ever seen uses semicolons. Even within the Rails crowd, this "no semicolons" thing is fairly recent.

* Since the majority of JavaScript syntax is intended to mimic Java syntax, which _does_ require semicolons to separate statements, semicolons blend well with the language, and are therefore nice and idiomatic.

* There are situations where you have to use semicolons due to ambiguity to write straightforward code - there are workarounds, like tricks involving !, but they confuse the intent of the code.

One thing that I noticed is that most of the notable semicolon-haters - fat, mislav, and the GitHub guys - come from Ruby on Rails. Conveniently enough, Ruby does not require semicolons at the end of statements. I suspect this anti-semicolon fervor may come from a desire to use Ruby's conventions with JavaScript.

<comment><USER5> As a counterpoint, we decided to with underscored_names for our JS since we work with a lot of serialized Python data structures via JSON and using the same naming convention on server as client means our JS doesn't have a mix of camelCase and under_scores for things received via JSON and things defined in the JS. We're not writing reusable libraries for other projects to use, and we don't use a heavy amount of 3rd party code, so it's no big deal.

<comment><USER6> "using the same naming convention on server as client means our JS doesn't have a mix of camelCase and under_scores for things received via JSON"

Couldn't that almost be viewed as a feature, rather than a bug? I mean, this way you can instantly tell if a particular variable was received from the server via JSON or was defined in the client code itself. I would consider a naming distinction like to be a benefit, rather than a harm.

<comment><USER5> Hm, how is that generally valuable to know? Maybe in certain use cases but for us that would just be noise.

</comment></comment></comment></comment><comment><USER7> I've been shocked at the level of disrespect for language standards here. Yes: adding semicolons is probably good practice because it avoids the chance of stumbling over bugs like this. And yes: the ASI feature in Javascript is in hindsight a terrible mistake.

That said: you go to war with the language you have, not the one you might want or wish to have.

ECMAScript is ECMAScript. Arguing that your transformation tool doesn't need to handle a feature specified in the language and supported by all known implementations is just ridiculous. Arguing that people making use of a feature that the language standard says they can (and that works) are "sloppy" is equally dumb. Even weirder are the people who jumped on the use of the && operator to effect an "if" as "abuse" -- this is an idiom pervasive in lots of areas and (again) well-supported by Javascript.

Not everyone is going to have the same aesthetics, everyone has a different idea about what features are "fun" and which are "sloppy". And decades of experience in the "code convention hell" world of enterprise programming has taught us nothing if not that this sort of pedantry helps no one. If you want to use Javascript, you have to take the whole language -- warts and all.

<comment><USER8> I think you missed the point.

This is not really about whether semicolons are required or not.

The point is that in order to ensure maintainability of code you should try to use language (and framework) in a way which ensures better maintainability, supportability, and portability of your code.

Look, the statement like "a && b" is 100% valid in many languages but in order to increase maintainability, supportability, and portability of your code it should be written like "if (a) { b; }".

The easiest way to understand the point of this rule is to get a job maintaing some old crappy code-base :) - I learned that way.

<comment><USER9> Okay, I'm going to bite.

&& is logical AND, and it operates on boolean expressions (or types).

So "a && b" evaluates to true if both a and b are true.

How can that be replaced by "if(a){b;}"?

Is it "r = a && b" being replaced by "if(a){r=b}"?

Using Chrome's javascript console:

> a = "asdas"; b="da"; a == b; false

> a = "asdas"; b="da"; if(a) { b }; "da"

Could you (or some other javascript expert) explain it to me?

<comment><USER10> In JavaScript, && does not evaluate to a boolean. It evaluates to the thing on the left if that thing is false (in which case the right hand side is not evaluated at all), otherwise to the thing on the right. So in said JavaScript console,

      "asdas" && "da"

evaluates to "da" and

      "" && "da"

evaluates to "".

So in an assignment context |r = a && b| would need to be replaced by: if (a) { r = a } else { r = b }, which may or may not be more confusing than the original statement with &&. But in a statement context, where the result of && is not being assigned to anything at all, "a && b" is exactly the same as "if (a) b;" except harder to understand.

<comment><USER11> Nitpick: you mean `if (!a) {r = a} else {r = b}` (or switched blocks).

<comment><USER10> Er, yes. Of course I do. ;)

</comment></comment></comment></comment></comment></comment><comment><USER12> Haven't yet seen anyone point out what unpleasantly quirky code this was in the first place:

        !isActive && $parent.toggleClass('open')

It should have been written like this:

        if (!isActive) {
             $parent.toggleClass('open');
        }

What if somebody needs to add a second bit of code to be executed if isActive is false? In the first case, they'd have to refactor the code into an if statement before adding it. It should have been an if statement in the first place.

If you want something to happen _if_ something is true, then you should use an _if_ statement. This is not controversial stuff. Don't look for "clever" ways to misappropriate other parts of the syntax in order to appeal to your own personal minimalist aesthetic taste. Be cooperative.

Edit: On re-reading this it comes off as preachy. In fact I've very recently taken a closer look at some of my own "little quirks" and realised how unhelpful they were for other developers. I guess I'm embarrassed about that and want to spread the embarrassment around.

<comment><USER13> You can always continue with

      !isActive && ($parent.toggleClass('open') || do_something_else())

but this is write-only code.

This actually reminds me of some cool hacks with structure pointers and functions in the Linux kernel.

<comment><USER14> Unless I'm mistaken 'do_something_else()' won't get executed if toggleClass() returns a value that evaluates to true. Because of short-circuit boolean evaluation.

<comment><USER15> That's correct. You could use:

      !isActive && ($parent.toggleClass('open'), do_something_else())

but I don't think anyone would advise it.

<comment><USER16> Actually, you are all missing Crockford's real point, which is that they are considering making ! a binding deference of function objects. If they do, then this:

      clearMenus()
      !isActive && $parent.toggleClass('open')

Becomes this:

      clearMenus()!isActive && $parent.toggleClass('open');

And not this:

      clearMenus();
      !isActive && $parent.toggleClass('open');

The no semi-colon crowd is ridiculous. There are no good arguments for omitting semicolons!

<comment><USER17> there are even fewer good arguments for changing the semantics of the fucking _logical negation operator_ 17 years down the line in a dynamic language with billions of end users and no discrete versioning

<comment><USER16> About as logical as using the _logical negation operator_ for a purpose other than logical negation. :-)

So, how would you implement this dereferencing feature? given that this wouldn't be an issue if you _added a semicolon_ , not sure why you are so hetup there...

</comment></comment></comment></comment></comment></comment></comment><comment><USER18> Anyone else think this is by far the most boring technical debate ever to hit HN?

<comment><USER19> Because all you see it as is an argument about syntax. It's actually an argument between the old guard and the up-and-coming hotshots.

Nobody really cares one way or another, and while it would take Twitter more time to append changes to their code than it would Crockford, my guess is the trouble for either would be negligible.

That said, this is very obviously a pride war between those who stick to convention and those who undermine it. The question isn't "should we use semicolons", it's "who is going to start dictating the direction Javascript goes from here on out?"

Clearly, both of these individuals want that spot, but if there's anything I've learned in my short time of coding, convention always wins out.

<comment><USER20> That's a pretty dramatized way of framing it, don't you think? I think the take-away is as simple as this: JavaScript is a dumpster-fire, and we should probably fix it so we can avoid more of this noise. Framing it as a soap opera conflict instead of a teachable moment makes it more productivity-draining than it already is.

<comment><USER19> I'm only explaining what makes sense. I know, personally, I'm not going to change how I'm writing my code because of what two influential Javascript developers bitched about on a Github ticket, and I'm pretty sure I'm not alone in that sentiment.

I'm merely explaining why it's drawing so much attention, and what nerves this debate seems to be touching, because as a technical debate it is insanely boring. But that's clearly why it's not strictly a technical debate.

</comment></comment></comment></comment><comment><USER21> Add the semicolon

"but but but" add the semicolon

There's so much FOR it, it's unbelievable. Yes, it's good to 'break the rules' now and then. Add the semicolon

This is not about if JS allows it or not. It's important, but mostly irrelevant.

You can also not add 'var' to JS variables unless needed. That's going to be a lot of fun when it goes wrong.

But here are the million dollar questions:

1 - How much time is spent making it work without a semicolon as opposed to just typing it? This is not about typing ';' - time for that is irrelevant, but the mental effort of doing so 2 - How much time will it be wasted to fix minifiers (that is, add to them the intricacies of no-semi colon parsing and probably having to write a whole different parser) 3 - How much mental effort is needed to comprehend and correctly fix non semicolon code

Number 3 is the biggest issue and if you don't believe me it goes by another name: coding standard

Yes, JS works without semicolons. And yes, C works without indenting, without meaningful names to variables, etc.

It's not about "to write JS you should know all the nitty-gritty rules of the language and you're stupid if you don't know them so you just add semicolons". It's about teamwork, and facilitating code comprehension (and maintenance).

And language designers make mistakes. They don't know if a feature is going to become a trap, irrelevant to 99% of developers (and with an easy workaround) or just a pain in the behind.

<comment><USER22> As a devils advocate.

1\. How many times are we going to have to debug and rewrite code to work around this defect? If it were just this once sure add the the ';', unfortunately it is never just this once.

2\. How much time will be saved by using a minifier that actually supports the javascript language. What other language features will break because someone didn't feel like supporting javascript in their javascript minifier?

3\. How much mental effort is needed to support half a dozen different minifiers that all support a different subset of the language as well as the cross browser differences we already have to take into account.

It is a matter of trust. If your tools skip supporting language features because someone decided they didn't like language feature X, what other corner cases did they skip because they were unliked?

<comment><USER23> Another advantage of the minifiers with a correct understanding of JavaScript is that they can do way more advanced minifications like shortening variable names.

</comment></comment></comment><comment><USER24>
        Now, this could be easily solved – by adding the friggin semicolon.

What this furore misses is that the original issue (JSMin failing to minify bootstrap-dropdown.js) was already fixed when the bug was raised [1]. Fixed without adding semicolons. Everyone should be happy with that. Developers of bootstrap got to stick to their "no semicolons" schtick, and the person with the original problem got it fixed. Everyone seems to forget this salient point when they rush in to this debate.

For reference, I sometimes use semicolons in my javascript, sometimes I don't. It depends on context and whether it makes the code more readable. It's not an issue I care enough about to get involved in a holy war, one only marginally more relevant than tabs vs spaces.

[1] [https://github.com/twitter/bootstrap/issues/3057#issuecommen...](https://github.com/twitter/bootstrap/issues/3057#issuecomment-5140916)

<comment><USER25> That isn't really the original issue at all, Crockford's comment is just what brought it to a boilover. The lack of semi-colons has been brought up in issue after issue on the bootstrap project. Each time it's been rejected for the same arguably poor reasoning.

Christian's post is completely spot on here. Javascript was designed to be tolerant of errors and inconsistencies as much as it could. That fact however, shouldn't be used as an excuse for advocating inconsistent coding. Not that I'm saying semi-colons are the epitome of consistent coding (I prefer Ruby myself) but that Javascript was not designed with significant whitespace in mind, rather it just has a tolerance for inconsistent and arguably erroneous syntax.

The argument here is that we shouldn't let Javascript's tolerance excuse laxness on our parts. We should know better.

<comment><USER24> By "original issue", I was referring to the actual GitHub issue / bug report.

On the wider issue of semicolons I am in agreement of you, and all my own code is written with that in mind - though I respect the bootstrap authors preference and would style my pull requests without semicolons.

If their insistence on not using semicolons causes conflict with other popular software, I would hope they see sense and fix those conflicts - even if that meant adding a semicolon or two.

</comment></comment></comment><comment><USER26> All the people arguing that the code as was presented should is good and right, I present this:

Everyone knows that debugging is twice as hard as writing a program in the first place. So if you are as clever as you can be when you write it, how will you ever debug it? ~Brian Kernighan

I couldn't tell that the second line in the code in question was an if statement at first without actually thinking about it. How is that helpful?

<comment><USER27> I imagine you would get used to viewing that statement as a conditional. Hell, I think most people involved with this debate would recognize it now.

</comment></comment><comment><USER28> The author is right on the money. I've always written code as specified - <USER2> because it felt 'right' - but I could never pin down my arguments - the author captures my thoughts beautifully.

Particularly his points about reading other people's code & extending functionality - there are very few use-cases where it makes sense to omit semi-colons, end-tags, etc - and if you aren't sure - yours isn't one of those use-cases.

</comment><comment><USER29> I have grown extremely weary at the level of discourse that this whole situation has provoked - the linked post is one ad hominem after another! What is this supposed to accomplish? Hopefully I can get the people I'm criticizing to change their ways by making them feel really bad about themselves? By telling them they aren't visionaries, they are semi-colons, they are arrogant, sloppy, lazy? It's destructive, self-indulgent, and completely unnecessary.

<comment><USER30> I upvoted you. This whole semicolon war is the most banal and self- aggrandizing conflict I've seen in a while, rife with as much vanity and childishness a the ``blogosphere'' allows, as evidenced by this post. Can we move on, please?

At least everyone acknowledged that the editor war was an inside joke, I would gladly have an editor thread every week on HN over this.

</comment></comment><comment><USER31> > The main issue with these parser-fetish arguments is that they assume that > you write code for a parser – sometimes even a certain browser – and not for > other developers.

That's an excellent and important point beyond the petty incident. You write code solely for humans, not for the compiler.

</comment><comment><USER32> I think the real issue in the whole debate is that 95%+ of people programming do not understand how programming languages are implemented and haven't been exposed to basic theoretical stuff e. g. to the fact that languages can be ambiguous, that there are cases where it might be impossible to interpret a part of the code, that handling syntax errors is actually hard etc. This post is a good example, it completely misses the point, as the only reason semicolons are present in some languages is to make parsing possible. I think many people would not argue about this if they had a clue why programming languages syntax is the way it is.

</comment><comment><USER33> This whole debate seems like two folks stuck in their way blowing a whole thing out of proportion.

How about Bootstrap adds the damn semi-colon and JSLint accepts that for the most part the lack of a semi-colon is working and "valid" JS add allows for the edge case. Now everyone gets to go home happy.

<comment><USER34> Bootstrap and JSMin have both since fixed their code.

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

</comment></comment><comment><USER35> The author is picking and choosing who he wants in this argument of his. He has Douglas Crockford and Brendan Eich on the pro-trailing-semicolon side. On the other side he has @fat. If he wanted to be fair he could have included someone like @izs or Thomas Fuchs. But if he referenced their viewpoints on it, it would make it harder to pretend that all code that doesn't include trailing semicolons after every statement is brittle.

<comment><AUTHOR> "He has Douglas Crockford and Brendan Eich on the pro-trailing-semicolon side"

Brendan Eich, the conceiver of the language. The best placed person in understanding why the JavaScript language does what it does, and what problem a feature was trying to solve.

Douglas Crockford, the developer who took all of JavaScript and found within a clean elegant language. And then he pulled together what he considered the best bits of the language and used that subset as a starting point. <http://anongallery.org/220/javascript-the-good-parts>

@fat - no idea who he is, apart from being an employee of Twitter and works on Twitter Bootcamp, which is a framework for other people to use to build websites.

@izs - I think you overreach by grouping him as anti-semi-colon. Isaac is a pragmatist, he uses what suits the group of people he works with. NPM is a standalone app, a non-expert JavaScript developer doesn't need to delve into npm for it's standard usecases. So he choses a syntax he believes suits the group of people working with him. And yet, he is now the lead developer of Node.js, and he's already on record saying he won't be spending time changing Node.js into his preferred comma prefixed approach - because the existing team is already used to post fixed commas. That's what I like about Isaac - <USER3> listens to a wide range of opinions, and uses what works best for the environment he's in.

Thomas Fuchs - heard of him, he's done lots of stuff JavaScript and PHP wise. I'll give you that one. He gave us Scriptaculous, and some decent PHP resources (like PHPatterns, IIRC). He's active in Rails.

The main reason the quality of JavaScript has increased dramatically in the last 6 or 7 years has been because of a coalescing towards a JavaScript best practice. This has mainly been led by Douglas Crockford and JavaScript developers at Yahoo.

JavaScript is too flexible and too bastardised a language, leaving lots of weird and broken features. Plus, well written code isn't about being clever, it's about writing code that can be supported and maintained. Douglas has taken the best bits of JavaScript and found that to be quite an effective and useful language. With that subset he, along with the people who later became the YUI library developers wrote code in that subset.

The reason for that subset is that the language is clearer, less ambiguous, and less likely to catch a developer out. Turns out using just a subset of JavaScript's syntactic capabilities improves the quality, reliability and maintainability of code.

JS Lint was build to help developers bring their code into line with this subset of usage, and disallow perfectly valid but potentially flawed code. It favours code that is readable and quickly understandable by the non-expert developer.

JS Lint is the starting point for this improved use of JavaScript. JS Min is built, as far as I understand, with the assumption that JSLint rules are in place, so yes, it works on a subset of the language. Actually the documentation <http://www.crockford.com/javascript/jsmin.html> is more specific: "It is suggested that JSLint be used before using JSMin."

And I guess that's the real problem here. Not using JSLint before using JSMin. And then this argument boils down to @fat saying something along the lines of not wanting to be constrained to JSLint's subset of JavaScript. That's a call he can make, and the users of Twitter Bootcamp can then choose accordingly whether to use the toolkit (since if you are in a JSLint / JSMin using environment, it's probably best to stay away from Twitter Bootcamp.)

Perhaps what would be worthwhile is a JSLint equivalent for whatever syntax and idioms the Rails-induced subset of JavaScript uses (not just a watered down version of JSLint that JSHint is, but something that encourages what they consider to be best practice rather than merely allow it), and a minified that respects those idioms. And something in plain English for those unfortunate developers who stumble into these idioms.

What would "JavaScript the Railified Parts" look like side-by-side with Crockford's The Good Parts, and Flanagan's Definitive Guide?

<comment><USER35> > @izs - I think you overreach by grouping him as anti-semi-colon [sic].

Those are your words, not mine. The "other side", as I put it, isn't necessarily anti-semicolon. To be on the other side of this particular argument, they merely have to disagree with the assertion that a semicolon at the end of the statement is a must, and not a style choice. And izs _did_ choose that style for npm.

> Thomas Fuchs - heard of him, he's done lots of stuff JavaScript and PHP > wise. I'll give you that one. He gave us Scriptaculous, and some decent PHP > resources (like PHPatterns, IIRC). He's active in Rails.

There's Zepto.js too, and he was a longtime core member on the Prototype JavaScript framework. He's influential.

> The main reason the quality of JavaScript has increased dramatically in the > last 6 or 7 years has been because of a coalescing towards a JavaScript best > practice. This has mainly been led by Douglas Crockford and JavaScript > developers at Yahoo.

I strongly disagree. The driving force was the increase in importance of the JavaScript language. He was part of that trend. He helped speed it up, but it would have happened regardless.

> JS Lint is the starting point for this improved use of JavaScript.

JS Lint is _a_ starting point. There are other valid starting points.

> And I guess that's the real problem here. Not using JSLint before using > JSMin.

But @fat isn't using jsmin. And there are great alternatives, so this is a valid choice!

> What would "JavaScript the Railified Parts" look like side-by-side with > Crockford's The Good Parts, and Flanagan's Definitive Guide?

It would look like this: <http://pragprog.com/book/tbcoffee/coffeescript>

<comment><AUTHOR> "> What would "JavaScript the Railified Parts" look like side-by-side with Crockford's The Good Parts, and Flanagan's Definitive Guide? It would look like this: <http://pragprog.com/book/tbcoffee/coffeescript>

Err, that's CoffeeScript, not JavaScript. CoffeeScript gets cross-compiled into JavaScript. It isn't JavaScript in itself.

</comment></comment></comment></comment><comment><USER36> I think this whole semicolon story is a natural step of a language becoming more wide-spread. The more people spend time appropriating the language, the more they'll want to push the envelope, exploit the quirks and get the best out of the language's syntax.

It's a natural cycle. C programmers went through the very same phase at some point and to this day different coding styles persist.

It's only when those choices cause incompatibilities that friction emerges, but we should see it as a natural step towards a more unified grasp of what Javascript means for people who program with it. That the general tone of the conversation is antagonistic is just a symptom of the fact that people care about their opinions and their choices, which by all means should be seen as a very healthy questioning on the part of the community. Just my 2 cents.

TL;DR: Sure the image conveyed is bad, but the reasons why such a debate emerges are natural and are part of the evolution of a language, it'll get better.

</comment><comment><USER37> To me this argument boils down to style over maintainability. The arguments for the latter seem so clear in my mind that I don't really want to dignify the other side with a response.

</comment><comment><USER38> Every programmer should have had a professor who was really, inordinately fond of Ada, so much so that at least one assignment required coding in, or basic knowledge of, the language.

Ada is strict as balls, but unlike its wannabe-successor, C++, its strictness is for the sake of clairty and the compiler usually actively helps you bring your code into compliance. (Rather than, say, complaining randomly because the syntax for template instantiations changed this week, or punishing you for pronouncing the word "const" with the improper intonation.)

With a bit of exposure to Ada, programmers might understand better _why_ languages are so finicky about syntax details, and that just because a language is lenient, doesn't mean you _should_ take advantage of that leniency. And that, in cases like JavaScript with its bloody semicolons, perhaps leniency is a disadvantage.

<comment><USER39> I had a professor like that, he also was a signatory to the original ECMAscript standard. He also claims he came up with that name. Since they were spending too much time debating the name, he figured they'd call it that for now, and since it was such an awful name they would be sure to go back and change it.

</comment></comment><comment><USER40> I think the argument that we shouldn't rely on the parser for certain language features is a bit silly (including interpreting end-of-statements). The language is precisely what the parser says it is, and nothing more or less. JSMin is free to not do what the parser does of course, but that won't be Javascript.

<comment><USER41> Surely the language is precisely what the spec says it is?

"The parser is the spec" is a nasty design smell, IMO.

<comment><USER42> Surely the environment is the spec.

If he wants his code to work with this particular minifier, he should include the semicolon, nothing more, nothing less.

Is a bit like trying to speak in official french. It might be correct according to the officials charged with protecting the french language, but you will sound extremely odd to most french people.

<comment><USER43> I've heard that in Korea, there's one national standard exam for English that's always been graded incorrectly, so everyone learns the incorrect answer when studying for the test.

</comment></comment></comment></comment><comment><USER44> I suspect, that to understand the logic behind semicolon exclusion, you should program at least a little in the languages, that do not require it.

At least for me, mental switch between semicolon and no semicolon is hard for some reason, if it happens a lot during the day :)

<comment><USER41> I leave out semicolons in my Haskell, and my Python. I use them in my JS, because JS's implicit semicolon rules are rubbish compared to any other language that I've tried with such rules.

It's kinda presumptuous to assume that people who disagree with you don't "understand the logic behind" your position.

</comment></comment><comment><USER43> tldr from the article:

 _So, if your code needs syntactical changing when it gets extended, to me you've optimized prematurely. Code will always change and making sure our maintainers have a hard time breaking it is a very simple and good idea._

In other words, a good programmer writes code for project maintainability, not to signal dominance by showing off knowledge of the parser. [+]

(Corollary: One's cleverness is always a finite resource. I'd rather work with someone who devotes that resource to what's good for the project, not his own fame and ego.)

[+] - Unfortunately, the way teaching CS sometimes works, students are rewarded for showing off clever and elite code every chance they get, to show the prof they're a "real" coder.

</comment><comment><USER45> Somebody should do a HN poll. I bet it was already done, but I am too lazy to search for it.

</comment><comment><USER46> Writing great code means making it easily readable and understandable by other developers. If you want to show off your quirky syntax skills, for god's sake play perl golf or attend at obfuscated code contests.

</comment><comment><USER47> This argument is pointless. At the end of the day, the current owner of Bootstrap can do whatever he wants. If the semi-colon issue is that important, people should just fork the project and add semi-colons.

</comment><comment><USER48> Reminds me how learning python took all the fun out of those semicolon and curlybraces loving languages. Americans (with US keyboards) really shouldn't design a programming language nowadays.

</comment><comment><USER49> This whole debacle is the epitome of what I call alpha-nerd behavior, and it's slowly killing my interest in software development.

<comment><USER50> It's actually quite easy to develop software while being only vaguely aware of and emotionally uninvested in these sorts of kerfuffles.

<comment><USER49> Well, in nearly every job I've had, there's at least one alpha nerd[1]. Worst of all is the alpha nerd boss (I intentionally avoid the word 'manager' here). I welcome advice on how to find working environments free of this sort of thing.

[1] - two or more is even worse: they're like male gerbils or betta fish, in that they fight all the time.

<comment><USER51> As a reformed "alpha nerd boss", I suspect most people grow out of it.

</comment></comment></comment></comment><comment><USER52> This is ridiculous. Twitter's developers are lazy.

You don't NEED a semicolon for the interpreter, you NEED a semicolon for the other readers/users of your code!!!

That goes for all other code practices that enhance readability. If you disagree that human readability is less important than interpreter/compiler, you're a lazy moron.

Period.</comment>