Go through your family's phone settings and turn on all the privacy features - <AUTHOR> https://twitter.com/matthew_d_green/status/1209500062163832832 <comment><USER2> A whole lot of parents are going to be wondering why half their apps don't work properly anymore, tomorrow.

<comment><USER3> The Google apps will still probably work but will harass you till you can't take it anymore and just allow it access. Just now I updated to Android 10 and Google play prompted me 3 seperate times with pretty serious warning that it needed acces to my SMS to work properly. I turned it down everytime and it still works, though I expect to receive more prompts. I knew there is a notification settings somewhere to turn these off.

I find it really troublesome that Google is allowed to blatantly lie to their consumers about the required permission by implying the app is utterly broken while it actually still works. Next year I'm going for an iPhone but as I can see it's not the promise Land yet.

<comment><USER4> Disabling SMS permission for Play Services will silently break transparent SMS autofill API for any app on your phone, so the message is more than warranted. It actually breaks a core component of you phone.

It's not a "blatant lie" if it actually breaks APIs.

<comment><USER5> What does this SMS autofill API do? I've never heard of it and wonder if it's needed.

<comment><USER6> One use is when you have to verify your phone number for something like WhatsApp, they send you a text and Google Play will detect receiving it and skip the step where you enter the code in the app.

So it's a very minor inconvenience that you now have to type a few digits from an SMS instead of that happening automatically.

<comment><USER7> But if you think about it, WhatsApp needing your sms is a dark anti pattern anyway: the only time it needs sms is to uniquely identify you /provide you with an account. A username/pwd combo does that too. WhatsApp doesn't (or didn't, last time I used it a few years back) need sms access, let alone your phone number.

<comment><USER8> The alternative is not giving WhatsApp access to SMS, but receiving the SMS via normal means, and then entering the 5 digit code manually.

My prediction: If people stop allowing this feature becomes even slightly popular, they're gonna use longer codes "for security".

</comment></comment></comment></comment></comment></comment></comment><comment><USER9> The other day I saw an ad for Barbie on YouTube. I took it as a sign that my ad blocking methods are working.

<comment><USER10> When I go on youtube, my front page is full of the normiest things of my country. Makes me think... either I'm really good at blocking, or they don't care enough to actually try harder to track me. Or they do actually track me hard enough and they are pretending not to by showing me normie stuff, which gives me false hope about how good I am at hiding my tracks. How far does the rabbit hole go??

<comment><USER11> Even when I let youtube track me, I find that they often like to recommend "normiest" things despite nothing in my view history suggesting I'm into the things they're advertising. Particularly I mean clips from late night TV shows, ads for super hero movies, that sort of thing. Very mainstream corporate content. They know I don't watch that kind of stuff but they keep on trying.

I don't really get it. I don't think their recommender is that broken, so it seems to me like they're deliberately injecting those recommendations contrary to their expectations of what I like. I suspect those videos represent the content youtube _wants_ me to watch, rather than the content they think I want to watch. Probably those videos are more profitable for youtube.

<comment><USER12> I've had an ad blocker on my computer from day one on my work computer. From watching exclusively programming conference talks on my work computer their algorithm has seemed to guess I'm a guy so I get recommendations for programming videos, action movies, and things featuring large breasted women. Its pretty annoying for that to constantly show up when I go to the youtube homepage on my work computer when I've only ever watched conference talks.

<comment> o-__-o I worked for a content provider who used to market their search as better than Netflix. Behind the scenes the execs would provide a daily list of what must be the top X results for specific phrases. Sometimes it was make sure some title exists as #1 in any relevant searches.

What I'm trying to say is maybe YouTube's recommendations are very loosely based off your viewing habits, but they would rather you watch Doug demuro's highly monetized channel over randomjoeschmoe's excellent non-ad enabled review of a 10 year old car

</comment></comment></comment></comment></comment><comment><USER13> This is exactly what I've been doing last few days. Both phones and laptops.

Switch the default browser to Firefox and change the default search engine too. Firefox will protect them from all the third-party, cross-site tracking. It's faster too.

And if this causes an issue for something in the next day or two, you're still there to help them out plus the previous default browser is still there too.

<comment><USER14> Curious, do you switch the default from Safari to Firefox if they're on a Mac?

<comment><USER15> My sister has 18 year old twins. They got MacBook Pros as graduation presents. They both got ones with 128GB drives which has turned into massive frustration. But we will ignore that for now.

But they both used Chrome. Today I switched them over to Firefox with uBlock Origin. And with some wankery you can make firefox look like a reasonable Macintosh application.

[https://i.imgur.com/VaMnux3.png](https://i.imgur.com/VaMnux3.png)

But so far so good. And, as I have commented in the past about the pihole and when people leave the wifi at home they worried their phones were compromised because ad people have lost their fucking minds.

So now the twins can can have a reasonable internet on their computers.

<comment><USER16> Will your family members know how to deal with sites that break because of ublock? I've learned to not "help" people in this fashion, even people I care about, because unless they understand the software it turns out that this kind of help just makes using a computer more frustrating for them and they probably don't even care about these things you're trying to help them with. I'd ask yourself if you're doing this more for your own sake than for theirs.

<comment><USER17> If some sites or features are broken with tracking blocked, maybe it's a good thing? Why should malicious sites/services get a free pass siphoning off and/or infecting devices? This way they are directed towards more respecting services.

On the other hand, too much frustration is just too much, so you definitely need to balance.

<comment><USER16> They could be sites for work, for government business, a school website, or their doctor's website that is broken when they needed to schedule surgery or something and they wont have any idea it was ublock that broke it and wont think to ask you.

Ublock has broken all kinds of sites for me, and I don't know if it's because these sites used a third party JavaScript library or some video provider or what, but I know to turn off all the privacy tracking things I have in my browser when a webpage looks broken, and often that fixes it.

</comment></comment></comment></comment></comment></comment><comment><USER18> Though, he doesn't seem to know that literally all settings for a particular app can be seen in a single place too.

Also, the default behavior is to first ask the user, and with iOS 13 you get again several notifications from the OS that a particular app used your location multiple times over the last X days, with a scary map showing where the app requested the location too, and that's yet another chance to change the setting with a single tap. Happened to me with Waze.

Bottom line, his complaints are baseless. And no offense, but if he cares so much about the privacy of his family, why is he not encouraging them to quit using FB?

Edit: moved to root, was initially a subcomment by accident.

<comment><USER19> I'm using iOS 13 and I've never seen what you're referring to, I wonder how I can see a history of how location data was used for an app.

<comment><USER18> There's a screenshot of this feature in action here [0]. It's about apps using location in background.

[0]: [https://techcrunch.com/2019/09/19/ios-13-security- privacy/](https://techcrunch.com/2019/09/19/ios-13-security-privacy/)

</comment></comment></comment><comment><USER20> Why do so many services request to know my location when it is irrelevant to the main usecase? Also, many time privacy settings screens are opt out instead of opt in. Why do companies need to know all this stuff about me, when it has nothing to do with their product that I use? Are they harvesting all this data to sell to third parties without my knowledge?

<comment><USER21> > Are they harvesting all this data to sell to third parties without my > knowledge?

Yes. It's a secondary revenue stream. Even if they don't sell it now, if it turns out they have a reasonable good dataset they can sell it later on, especially as the revenue starts dropping.

</comment></comment><comment><USER4> As an added bonus, visit [https://myaccount.google.com/data-and- personalization](https://myaccount.google.com/data-and-personalization) with their Google Account and disable data storage there.

Also make sure to enable automatic data deletion under [https://myactivity.google.com/myactivity](https://myactivity.google.com/myactivity) and Location History if for some reason you want to keep those on.

<comment><USER22> This is fine if you want to protect against people cracking your Google account and looking at that data, but it's very naive to think Google themselves would actually stop collecting the data.

Their business relies on it. They'd still be collecting it and using it as a signal for ad-targeting among similar nasty things in a plausibly deniable, not immediately obvious way.

<comment><USER4> This is going into tinfoil hat territory - Google keeping data after promising deletion would be a massive breach of GDPR and US contract law and would trivially result in massive fines.

Sure, you don't have to believe what they say; but then again you should also probably stop using Apple, Microsoft and any other closed software as well. After all, they collect data too and they could also lie to your face about what their devices send to the server. It's not a useful way of thinking.

Besides that - explicitly telling Google you don't want data collected is strictly better (even as a grounds for class action lawsuit) than not telling them that.

<comment><USER22> Google is already not GDPR compliant, and they've proven they're acting in bad faith by all the dark patterns they use to get people to surrender their privacy.

Regarding Apple, Microsoft, etc, their business is based on selling hardware, software & services. Ads make a insignificant part of their revenue, so there's less incentive to be malicious and put the rest of the business at risk for a tiny share of the profits anyway.

Google? Their entire business is based on ads, there is no other way for them to stay afloat given their current expenses. So there's much more incentive there to be malicious, and they've got both the lack of morals (cf dark patterns) _and_ the engineering talent needed to do the bad thing in a covert, undetectable manner.

<comment><USER4> I think you're vastly oversimplifying the mix of incentives and resulting code that drives all those corporations. You're letting your bias against Google blind you against things that Microsoft and even Apple did when they saw profit. You're also hugely overvaluing the incentive of large corporations to go directly against the law.

<comment><USER22> > You're also hugely overvaluing the incentive of large corporations to go > directly against the law.

Google currently is not GDPR compliant. I'm not overvaluing incentives, I'm just looking at facts.

</comment></comment></comment></comment></comment></comment><comment><USER23> At our family gathering for our white elephant gift exchange my present was a Google Home Hub/picture frame (bought it last year yet no longer want any type of listening device in my house minus Siri on my phone).

I was sorta surprised that wasnt the most coveted prize of the exchange that the majority wanted to steal. About half said they didnt want any creepy listening device in their house.

</comment><comment><USER24> This link to a recent NYT article about mobile privacy options from the tweets comments is also relevant: [https://www.nytimes.com/interactive/2019/12/19/opinion/locat...](https://www.nytimes.com/interactive/2019/12/19/opinion/location- tracking-privacy-tips.html)

</comment><comment><USER25> Isn't going through someone else's phone a privacy violation in itself?

<comment><USER26> You're supposed to present them with a 19 page TOS document first, then sell their data, present them with a completely different TOS and then leave.

</comment></comment><comment><USER27> Quote from the Tweet/thread:

 _" And even if you turn off location services for an app, the app may still get this data by examining the metadata from your photos. (I'm not sure if iOS13 fixes this.)"_

So is this fixed in iOS13 or not?

<comment><USER18> I cannot answer your question (yet), but I have a question of my own: do people actually think the location stored in a picture is more important from the privacy perspective than the content of the picture?

I mean, people upload pictures of themselves, their family members, their homes, offices, places they visit, to a third party, such as FB. Is really the location stored in EXIF headers the biggest issue here? Think how much can be automatically extracted from content these days.

I don't mean to diminish the importance of the location leak, I just find it odd what our collective priorities seem to be, even among the tech literate.

</comment></comment><comment><USER28> There is the wife/husband of your relative who will go and reset those settings back to enabled for logging/geotracking only because they want to see where the other is going throughout the day... So even if you disable all this tracking, sometimes its beyond their control... Short of changing their password to block the other person from changing the settings.... One of my friends switched back to a flip phone because he was sick of arguing about it.

<comment><USER29> Spouses who mess with their spouses phone settings, use their spouses' phones to find out where their spouses have been, and who argue back and forth about these settings, have fundamental relationship problems that have nothing to do with phone settings.

<comment><USER30> I'd be very worried about someone that engages in that sort of controlling behaviour, whatever the state of the relationship may be.

</comment></comment></comment><comment><USER31> Making sure their gadgets have the latest software updates is more important. My mom's iPhone was stuck on 12.3.1 even though automatic updates was on!

</comment><comment><USER32> I can see how this whole subject is very difficult for non-technical people. I think phones should get more of a universal, easy to understand set of privacy choices that you can simply apply to _all apps_ and only override on a case- by-case basis temporarily, instead of making it this kind of regular housekeeping chore.

That said, I'm also surprised a cryptography expert can't figure this all out:

> It's sort of amazing to me how hard this has gotten, even on iOS, which > advertises itself as the "privacy" OS.

Let's get this bit out of the way: iOS _is_ the privacy OS. Android apps were using the _camera_ in the background without user knowledge until Android P: [https://www.theverge.com/2018/3/7/17091104/android-p- prevent...](https://www.theverge.com/2018/3/7/17091104/android-p-prevents- apps-using-mic-camera-idle-background)

And what percentage of Android users have Android P or above as we approach 2020? 30%? Less?

In the past, granular permissions _did not exist_ in Android. You were simply given a list of permissions that any given app would simply use at any time and you either downloaded the app or you didn't.

Final example: Android lets apps simply write and read to/from the file system anywhere they want, until very recently (Android 10?). If I'm not mistaken, that means that any app that's granted permissions to the file system could just read common storage locations like your Facebook cache directory to gather personal information.

> My wife asked me how Facebook knew she walked by a particular store > yesterday, so I dove into the Settings. What a mess.

iOS does not give these permissions away. The answer is obvious: his wife gave Facebook location access.

> First, there's this "Privacy" tab in iOS settings, but under it you've got > this ridiculous and ever-growing list of crap. Every app appears multiple > times, and you have to know where to look.

On the one side of the ring, people ask Apple to make things simpler, and on the other side of the ring people ask Apple to expose more granular control. There's no winning here.

And anyway, the organization is quite logical. It's organized by permission category.

> Browsing the "Location Services" tab alone is a nightmare. There's no way to > sort by "Always", which is usually the particularly bad permission you care > about. (Although "While Using" is a bit ambiguous too.)

How many apps do you have where sorting is an issue here?

Also, "While Using" is not ambiguous. It means "While Using." The text on the original dialog was "While Using the App." What else could it mean?

This is an interesting criticism because it's another piece of granular location control that Android either doesn't have or gained very recently.

> And don't get me started on this "Bluetooth" tab. Why do any of these apps > need direct access to my Bluetooth other than crappy tracking?

Both iOS and Android basically gave away Bluetooth access because it was never assumed that it could be used for anything serious. We all know better now and Android 10 and iOS 13 _both_ added this piece of granular permission in. I can tell you that my Sony Headphones app and Apple Music most definitely need access to Bluetooth.

> And even if you turn off location services for an app, the app may still get > this data by examining the metadata from your photos. (I'm not sure if iOS13 > fixes this.)

This is not necessarily something "to be fixed," this is simply the fact that granting access to your Photos grants access to your Photos. If you gave your photos metadata in the first place, that metadata will be there. I do admit that I'd love some more fine-grained control over this (although you may notice that the iOS share sheet _does_ add some control over whether to include location data in iOS 13 - I wonder if any other popular smartphone operating systems have this built in and installed on >50% of their install base?)

<comment><USER33> "while using" IS ambiguous. what does that mean when apps can run in the background? what is preventing them from accessing the location service then? i can interact with apps through notifications bubbles, does that count as using them?

having a set of permission for each app is not sustainable and annoying. anything annoying is not going to get done. last time i had to go through all my apps to make sure they all have the correct permissions for notifications. i do not want to have to do it again. but i will if i ever factory reset or get a new phone. why aren't there global sensible options?

some apps won't work if you don't grant access to photos or camera. they claim to be "camera" or "photo" apps.

are we going to pretend there is nothing to fix here and shift the blame on OP or his wife? seriously?!

<comment><USER34> Wow, I had no idea that "While Using" meant also that they can access while running in the background!

<comment><USER18> That's not what it means. That is what "Always" is for.

<comment><USER34> Ah - glad to hear that - thanks.

</comment></comment></comment></comment></comment><comment><USER35> If you give photo album access to eg WhatsApp, can it grab and upload EXIF data from all of your photos?

<comment><USER36> Yup, that's what the warning is hinting at.

<comment><USER37> Do they have access to your photos when you go to the photo picker when you want to send a picture or do they have all the time access to your photos once you gave them permission ?

<comment><USER36> There's two ways you can get pictures on iOS.

1\. UIImagePickerController - This opens the system image picker and ONLY returns the user selected image to the application.

2\. "Access Camera Roll" Permission - This is what WhatsApp, Facebook, etc. use so that they can show their own image picker UI. It just gives the app permanent access to APIs that can retrieve photos.

Both leak EXIF information to the app, but the first one only leaks the information for a specific picture.

</comment></comment></comment></comment><comment><USER38> Mozilla needs to fork Chromium and Android and fix this privacy nightmare.

Or EU should grand couple of billions to someone to do it.

Privacy should be number one feature for every OS, and every browser.

Either that or we need laws to ban location access and web tracking altogether.

<comment><USER39> Why should they fork Chromium when they already have a highly capable browser engine?

I"m really glad that Firefox is (barely!) holding back a full-on Chromium/Webkit monoculture.

<comment><USER38> "Mozilla makes browsers, apps, code and tools that put people before profit." \- people are using Chromium, Firefox usage is dropping, so Mozilla should do the right thing - fork and de-google Chromium and save the web.

Also, I am donating each year real money to Mozilla, without using its browser. Call it FUD, call it I don't know what, but on desktop I am using Chrome, with the usual ad-blocking plugins, on Mobile I am using Brave.

</comment></comment></comment><comment><USER40> The comment about the privacy settings location[0] is a little weird. You can access the settings by type there or you can just access all the privacy settings for a single app from the first level of the Settings app by clicking the app name. Both locations are useful and seem pretty clear and easy to navigate.

[0] [https://twitter.com/matthew_d_green/status/12095023270250905...](https://twitter.com/matthew_d_green/status/1209502327025090561)

<comment><USER41> Exactly. And he complains about not being able to search for apps that have location set to "Always" or "While Using", but it is hardly a bother to scroll through the list of installed apps and do a once-over to check their location settings.

He also complains about the "Bluetooth tab" in privacy settings, saying that companies would only need this permission for "crappy tracking". In essence, he makes it sound like Apple is in the wrong for having this setting configurable at all. But has he ever used a phone before? Apps didn't even need to request permission to use Bluetooth radios in older iOS versions. Besides, disabling them completely would break functionality for apps that need to search for bluetooth devices (Smart devices, namely).

<comment><USER42> both Bluetooth and wifi need the be more locked down imo

wifi should require a whitelist of sites an app can access by default. any app that has WiFi access should not be allowed the scan my network for vulnerable devices etc.

same for Bluetooth. most apps dont need this at all for anything legit. those few that do should default to some whitelist of devices they are allowed to access

Apple/Google/Microsoft should be working to make this happen

<comment><USER43> Really? That would be a major pain if you had to whitelist sites that an app could access. Besides, that would be easy to get around. If you only allowed Foo app to access Foo.com, there is nothing stopping the app maker from proxying to other sites from the backend.

<comment><USER42> There is something stopping them, cost. I doubt most apps want to pay for me watching videos that they spawn in an embedded webview so they could spy on my activity.

What's the pain? Why does every app need access to all of the internet. I know of no apps I use that need that access accept my browsers and I'm fine if Apple/Google/Microsoft added a new permission

(a) no internet access

(b) access only these sites

(c) full access

I'd only give my browsers full access. You'd be free to give all your apps full access.

</comment></comment></comment></comment></comment><comment><USER44> And while you are at it.. Apply all the security updates as well

<comment><USER45> Also power-cycle everything. Including routers and cable boxes. True, some systems may not come up cleanly, but at least after patching and rebooting, they'll fail in the "clean" direction.

<comment><USER46> Yep did this with all my dad's stuff. It's become something of a Christmas tradition, which speaks to the completely broken nature of a lot of tech.

</comment></comment></comment><comment><USER47> This is one way to volunteer yourself to help them with any and all IT needs on their devices moving forward.

I'm all about helping out on privacy related topics but unless they want to learn about the how and why you're turning on xyz they won't care in the long run.

</comment><comment><USER48> I wrote a privacy settings page, that for every turned off option generates a new privacy setting, making your task truely infinite. Actually, i added a way to see privacy options as bits, making your turning it off turing complete. You can admit defeat at the bottom of the page.

</comment><comment><USER49> I had to do this for my mother's roku powered smart TV.

</comment><comment><USER50> If Facebook, Instagram, etc. app is installed on the phone, the settings won't help much.

</comment><comment><USER51> A way that we technologists can help people understand the ming-boggling degree to which Surveillance Capitalism™ [1] is running things is to use code to pull back the veil. Some are trying to help you to see what's really going on [2]. Also, I'm thinking of things like automated NLP on terms of use/service. Phone settings will not fix anything. The genie got out when Larry and Sergey, in the wake of the bubble burst, said "fuck it, we're an ad company".

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

[2] [https://www.icsi.berkeley.edu/icsi/projects/networking/hayst...](https://www.icsi.berkeley.edu/icsi/projects/networking/haystack)

</comment><comment><USER52> It's a shame this has to even happen...

</comment><comment><USER53> >TL;DR If Apple's going to advertise itself as the "private" phone, they need to do a much better job than this. "At least we're aren't Google!" is pretty much the best they can say.

It's times like this HN needs to allow the fire emoji.

He's absolutely right and the fact we pretend otherwise is a total fucking lie that lets everyone feel a bit better about about the wretched state of our industry.

<comment><USER54> For such a wildly ignorant take as ""At least we're aren't Google!" is pretty much the best they can say" I'd suggest the eye roll emoji instead.

</comment></comment><comment><USER55> OK, but do you have a fake DNA service for me to sign them up for?

</comment><comment><USER56> Or maybe get them to install [https://www.jumboprivacy.com/](https://www.jumboprivacy.com/)

I've been impressed with their approach and how they make improving privacy easier

<comment><USER34> What does Jumbo get out of all this? I couldn't find much info on 2121 Atelier Inc. (marked as the company I'm agreeing terms with in the ToS). It doesn't seem like a paid app either... can't trust without this being transparent.</comment></comment>


Winamp's 10th Anniversary - <AUTHOR> http://blog.wired.com/music/2007/09/winamps-10th-an.html <comment><USER2> Cool.

>The team has been working on today's Winamp 5.5 release for about a year, with iTunes firmly in its crosshairs.

As long as they don't mess with the Winamp 2.0 look-n-feel, I'm happy. I've been using that, with the same skin, for a really, _really_ long time.</comment>


San Francisco App Developers - <AUTHOR> https://www.codingpixel.com/san-francisco-app-developers/ <comment><USER2> Nothing says "genuine San Francisco" like a Santa Rosa mailing address and a Texas area code.</comment>


Ask HN: How do you deal with 2000 line functions? - <AUTHOR> I'm working with an archaic code base and I'm stuck at trying to add new business logic into a 2000 line function that is absolutely crappily written with nothing but if() conditions in it. Given such a scenario, how do I go about adding a new functionality to this mess? Should I tell my manager that the function needs to be refactored and take time to refactor it?<p>Edit: Removed offensive word <comment><USER3> 1\. Unit tests. Otherwise modifying old code is full of potentially unforeseen landmines.

2\. Read the function a few times to get a sense of what it's doing.

3\. Break the function into blocks of statements that are performing a related task.

4\. Factor those out into smaller functions.

5\. Recursively repeat 3-5 until you're satisfied with the new functions' line count.

> Should I tell my manager that the function needs to be refactored and take > time to refactor it?

It's absolutely worth mentioning. Time estimations are one of the harder tasks of Software Engineering. Being up front with your manager can help better set expectations.

<comment><USER4> I would add assertions in as well as you iterate. It will validate whether you understand the flow of information through the function.

<comment><USER5> Absolutely this. Not only do assertions make it easier to validate your understanding, they capture and preserve that understanding for future developers (including yourself, 6 weeks from now).

Assertions are comments which can always be trusted and which never get out of date. It baffles me that there's so much reluctance to use them (especially in dynamic languages).

</comment></comment></comment><comment><USER6> Don't tell you manager anything, just do it. If someone tells you to add functionality to a 2000 line function, it takes extra time. If you want the company to benefit a little bit more from the time you spend on grokking it (by saving the next poor soul some time) by splitting it up.

Go to the part that you suspect you need to modify, identify a block of code that together forms something you can give a name, i.e. "initialize_doodad_struct", "validate_widget_params", pull it out put it in a function. Now look at all identifiers that are referenced or declared in your block of code, do a ack or ctrl+f through the 2000-N line function to 100% verify that they're not referenced anywhere. If they aren't you can safely encapsulate them in your new function (if you're working in a static language you probably could just right-mouse-click-extract to do all this).

Then _immediately_ verify that the code still works. Run it, ideally in unit tests but most certainly also in real world(-like) scenarios. Do this for every small step. If your codebase takes 2 hours to compile, instead make a commit. Make a commit for every single 3-10 line extraction you do. (do it anyway, it'll look good and everyone will love you)

And then repeat until either the part you wanted to modify is clear to you, or there's nothing more to extract ;)

By the way, I'm a Ruby programmer mainly, and in Ruby any function over 10 lines is frowned upon. I know that in some programming language communities (looking at you C and C++!) a 200 line function doesn't raise any eyebrows, and they'll sometimes even scold you for extracting a function if it doesn't 'add' anything. I think this is because in C every function pollutes the global namespace, so there's a little more cost associated with it.

<comment><USER7> If you write C/C++ then you probably need fast code. Function calls - <USER2> inlined - have a small cost. The cost is really rather small (think memory writes) and can be negligible depending on where the values are stored.

That is of course rarely the reason. From what I've experienced it's usually that the developer is uncomfortable with abstraction (at least that was my reason many moons ago).

<comment><USER8> If speed of algorithm / function is a concern on particular functions, write a test that measures this. Refactor as much as you like until you hit the limit of readability vs adequate speed.

</comment></comment></comment><comment><USER9> You test the shit out of it, then re-write it ensuring tests pass, then add your new code.

It's probably easier to do that than to muck around in the 2000-line version hoping you don't screw something else up.

<comment><USER10> Yep, this is the only way to handle these beasts. Don't touch anything. Make a ton of tests. Spend some time validating those tests. Get someone to write off that those tests are sufficient. Start refactoring!

<comment><USER11> For a function with 2,000 lines of code, we have to be honest with ourselves and accept that testing will never be sufficient; if there's 2,000 lines of code, you can bet good money that there's global state manipulation as well.

Making the assumption that anybody is capable of sufficiently testing such functions and subsequently re-writing them will only introduce new bugs and old regressions.

Seems harsh, but I've had to work with a few such monstrosities. Global state galore.

<comment><USER12> Global state is one of the trickiest problems we are trying to solve at my workplace. Our entire, 10 year old, PHP codebase relies on a single static class (and now some supporting static classes) aptly called "Meta". What does it do? Meta things.

It's basically an abstraction over the entire database layer, that has probably over 30 toggles that denote where and how it should fetch data, given a table name and a function call.

And every database call in the entire project is dependent on it.

</comment></comment></comment></comment><comment><USER11> Slowly and carefully, like you're defusing a malfunctioning clockwork bomb.

1) Understand at a very fundamental level what it does (there are probably multiple things).

2) Understand at a very fundamental level what it does (this is really the hard part)

3) Document your hard-earned understanding (tests, ironically, do not work well for this, since there are no fundamental units to test at, and there likely is a metric ton of shared state)

4) Refactor it into something easier to understand and test.

I've had to work with a similar 5,000 line C function at the heart of a DSL parser; literally the core of the entire business. Changes were made very slowly, and with a lot of consideration. Refactoring is still underway 6 years later.

</comment><comment><USER13> Pft, 2000 lines :-)

What you do is that you:

A) Realize that there might be years of hidden bugs, but also fixes to complex problems, speedups, kludges, weird changes to requirements, etc, hiding in the code, so even really creative unit-test might not cover real-world edge-cases.

B) Take as small bit as you can, and just refactor out the smelly code into smaller parts. Often a good name around smelly code helps a long way.

D) Iterate. Until good enough.But not more... Maybe you have more important things to do than rewriting ugly code that works.

There is a big risk that since you probably won't understand everything that goes on, and why - you will break something important.

</comment><comment><USER14> Michael Feathers' book, Working Effectively with Legacy Code, is highly recommended. In that book he explains that you can choose between two approaches: Change and pray, or Cover and modify. Then he provides dozens of different strategies to "cover" the existing legacy codes before you make the changes.

<comment><USER15> +1 on the Feathers book recommendation.

The good news is that many, many, many people have been here before you. While you may have a lot of work ahead, you can do it safely and in an orderly and safe fashion. (And with something as butt-ugly as that sounds, that's the only way I'd do it)

</comment></comment><comment><USER16> Something I found to be really useful is to remove all statements inside the code, so you'll be left with large skeleton structures. Look at it from a distance, (small font), see some patterns. Can you split it up?

getting a feel for the structure of the function helps me understand it.

Ex:

function someFunction () {

        if () {
            for () {
                if () {

                } else {

                }
            }

            if () {
                for () {

                }
            }
        }

    }

<comment><AUTHOR> Ah I do this with if() block folding in Vim.

In this case, the developer actually has return statements inside some if blocks. A general point that has stood out from all comments is to first understand how the function achieves what the function is trying to achieve.

<comment><USER17> A return point inside an if statement is a great place to do a refactor. Refactor anything inside that if into its own function, write a test, and see what happens :)

</comment></comment></comment><comment><USER18> Depends, but very likely. There may be cases were there is practically no way around a 2000 line function, one example would be a something like a very long switch-case statement, were the logic is very simple, but there are a lot of cases to cover. For example something equivalent to (python pseudo code)

         dict[ keyword](args)

were dict is a large dictionary containing function objects. In that case the dictionary approach has the advantage of separating the logic from the clutter, but it is possible to work with 2000 lines of

         case something:
             foo();
             break;

However if it is not such a case, then you are in trouble. Thing is, management does not like to be told that the code is a steaming pile of shit, and management is especially unhappy if you tell them that you are going to spend a few month on accomplishing absolutely nothing. From their perspective refactoring is accomplishing nothing: the functionality is there, it works and they do not care about the gory details. So you need to convince your manager that refactoring is a good idea, which just goes against every basic assumption of his job. So think about the actual problems you have with the code, and what the company gains by refactoring it. (Easier extensibility, less risk of bugs and faster turn around if a bug occurs.) Then make sure that you convince your manager that refactoring is the right thing to do. ( Ideally you should enlist your coworkers for that, if they know the kinds of problems.)

Speaking a bit more generally, this is part of why technical dept happens. Selling refactoring is hard, so everybody tries to tip-toe around the 2000 line gorilla until some unhappy soul (read someone else) can no longer avoid to wrestle with it.

</comment><comment><USER19> I like this book, it has a lot of tips for situations like these:

[http://www.amazon.com/Working-Effectively-Legacy-Michael- Fea...](http://www.amazon.com/Working-Effectively-Legacy-Michael- Feathers/dp/0131177052)

</comment><comment><USER20> I've had worse. I was instructed to add to the > 2000 line function of nested if/than/else but the function was written _by_ the manager who said "Don't change any of my code, its been working perfectly".

This function was used as a container to hold _all_ the business logic and flow control. It had dozens of parameters that all had to have some value or another passed to keep from throwing undefined errors. There was an integer called "wat_to_do" that would choose different blocks of if/than/else inside the function. Not like case, mind you, scattered everywhere.

I've never really been the same since then. Can you get code PTSD?

</comment><comment><USER8> A few people have mentioned Michael Feathers' book Working Effectively with Legacy code already, but I'll add my piece on this. The book describes legacy code as any code without tests.

It then goes on to describe the "legacy software change algorithm" (google that for more articles that will help you. Get targeted legacy code into test harness and cover with tests: 1\. Identify change points for the target change or new code addition. a. Find test points where the behavior of the code can be sensed. b. Break dependencies (very carefully and often without sufficient tests) and get the targeted legacy code into a test harness. c. Cover targeted legacy code with (characterization) unit tests 2\. Add new functionality with Test Driven Development (TDD) 3\. Refactor to remove duplication, clean up, etc.

It really is worth reading this book as it covers almost exactly your question: "22\. I Need To Change a Monster Method and I Can't Write Tests for It." and various other relevant chapters.

Answering your manager question with a standard consultant answer "It depends". Refactoring code is about setting yourself up for future development. You should always be refactoring your code after you confirm it works. Asking your manager whether you do it should take on the same amount of importance as asking whether you should wash your hands after visiting the restroom. That said, developers can often feel a sense of ownership of code and not wish change for various reason (usually familiarity with the current crap situation).

<comment><USER8> Additionally to this. In your refactoring process, stick a commit on each step of the refactoring. It will help you go back to a point where you were happy. Squash the commits when you're done if needs be for cleaner history, or leave them if there aren't a bunch of people on the project.

</comment></comment><comment><USER21> I would actually approach this differently. I'd go back to whomever the authority is with regards to what the function is supposed to do, or to the spec, and then rewrite it from scratch. This won't ensure that it behaves as it does now but with a little bit added - it will ensure that it behaves as per the specification / user requirement. If the function is that huge, with just if's, it's very likely that it's buggy and that those bugs haven't been addressed. They won't be addressed if you duplicate the functionality in a refactor unless you can get a handle on the purpose of the thing to begin with. Scrapping it and rewriting it is not a bad thing - frequently, you'll make something much tighter if you do that.

(note: would be happy for you to have left the "offensive" word in - 2,000 lines of code for a single function screams for a refactor, and says that the original dev had no clue how to write good code. if the code makes you want to cuss, well....)

<comment><USER8> -1 on this. 2000 lines shows that there's a good history of edge cases that are potentially relied on by various other parts of the application or system. Much of the time, the code _is_ the spec. Writing tests for this function will allow you to rewrite an equivalent better function safely, as well as discover functionality that is hidden / ambiguous from the spec, and bugs that may trip you up in the second iteration (whether generated via refactoring or rewriting).

</comment></comment><comment><USER22> I think making small opportunistic fixes is best. Do what you can do without massively delaying your work _every_ time you need to work in that area of the code. That is, leave the code better than you found it, each time.

If you add the new logic this time and also split it into four 500-line methods and maybe a few extra tests, you have done quite a lot and it is likely doable within the time frame of the work you are doing.

But

If there are zero tests and you aren't confident that you can create those tests then I'd bring it up with management. Maybe they'll say that changes in this functionality will be very rare after this small change and that it's very well tested manually and by customers - then that's it. Not all code has to be made concise and elegant, it's better to focus your effort on the code that regularly needs _changing_. However, in this case I'd ask management to consider not changing it at all, or make sure it will be very well tested manually after your changes).

</comment><comment><USER23> I would add landmarks and do small refactoring within the function until I'm confident in my ability to start splitting it up into smaller functions. This should happen naturally as you make changes and add new features. However if you're not in the function enough to make this happen then it's probably not worth refactoring to the business.

</comment><comment><USER24> Start out by studying and understanding the function, the way that it's used, and everything that it does. Does it mess with a lot of global state? Is it called on one place for one thing, or a whole bunch of places, or even for multiple different reasons? How hard would it be to set up some unit tests?

I would recommend against any kind of rewrites or radical refactoring right away. You probably don't know what it does well enough yet or what kind of workarounds and bug fixes are in there, so you're likely to bring back bugs. And not many businesses have the time to spare to actually redo something like that correctly all at once.

Aside: You could just give up and quit, but I consider it part of the job of a good developer to be able to take a mess of spaghetti code and gradually turn it into something easily understandable without causing huge delays in business processes or show-stopper bugs. I don't think a developer who is only willing to touch pristine code is very valuable in the real world.

I'd make the first goal to add the required changes with as few changes to the function as possible. Focus your refactoring work at first on trying to get some tests around this thing. Don't try to test every use case right away, but do try to comprehensively test a few tasks, including capturing whatever it does to any state in any other systems. Most likely, a lot of the initial refactoring work will hardly touch the function at all, but instead focus on putting the things that it touches into modular, testable parts. Getting good tests around it will help you understand what it does better, what parts of it are important, and how state is handled around the system.

Then as you go, start adding tests, and gradually refactor things that are tested. Write tests for any bugs that are reported back to you. Anything that looks weird, ask around and see if you can figure out what it's for and if you really need to test for it.

</comment><comment><USER25> You could start by writing comments. There is little chance of any bugs coming from that. If there are any tests available then you could work on understanding the tests and then step through the code in the debugger. Hope that helps.

</comment><comment><USER26> I know other people already suggested writing test, carefully documenting etc so I won't repeat that. Just want to add one more thing: try to prune the code first as such a large codebase is likely to have redundant code built up over time. By doing this you will have some time to understand the code (to know what you can kill and what you can't), and also save yourself some time as the codebase you have to refactor now is now much shorter and probably cleaner.

</comment><comment><USER27> I've had to do this once. They don't teach you managing code like this! A friend gave me a copy of _Working Effectively With Legacy Code_ [0] which helped me.

The gist of it: a strong suite of integration and unit tests. Isolate small code paths into logical units and test for equivalency.

[0] [http://www.amazon.com/Working-Effectively-Legacy-Michael- Fea...](http://www.amazon.com/Working-Effectively-Legacy-Michael- Feathers/dp/0131177052)

</comment><comment><USER28> I remember linear lists of 1000+ if-statements. These were "state machines", popular form of real-time multitasking 50 years ago. Nothing wrong with that. You might make an analyzer which recognizes longer series of events and impossible states, but why bother. This is a programming paradigm, best you can do is to go with the flow.

</comment><comment><USER29> We have a saying where I'm from - "That's the smell of money!" Relax, I'm sure your boss knows that this is going to take a while. Make prudent changes, don't go overboard, take your time and test thoroughly.

</comment><comment><USER30> Where a function ends and where a function starts is somewhat artificial. For example, if this were BASIC it would be just be a label.

I would read the thing a few times and figure out exactly where to add the functionality. Refactor second, if time permits. If the thing is 2k long clearly, refactoring it isn't a priority.

</comment><comment><USER31> This is a great presentation about refactoring that may be useful: "RailsConf 2014 - All the Little Things by Sandi Metz" [https://www.youtube.com/watch?v=8bZh5LMaSmE](https://www.youtube.com/watch?v=8bZh5LMaSmE)

</comment><comment><USER32> 1) Cover code with tests 2) Refactor. Martin Fowler wrote a famous book on refactoring patterns that are guaranteed to merely transform the code and not break functionality. 3) Rerun tests, repeat till everything passes

</comment><comment><USER33> Do a re-write. If your manager says no to the re-write then add another if condition to handle the current business logic and, at the same time, look for a new job (which is probably what the last guy did).

</comment><comment><USER34> It depends on the tooling you have available. If I encountered a 2000 line C# method, I would use Resharper and start with the extract method command and then extract class.

</comment><comment><USER35> [https://www.youtube.com/watch?v=dWIHvuABaFU&t=01m05s](https://www.youtube.com/watch?v=dWIHvuABaFU&t=01m05s)

</comment><comment><USER17> You should read Clean Code, even if it is just the bits on refactoring, so you can refactor properly! :)

</comment><comment><USER36> unit test first so you know if you've broken it. Then lots of test input variations best taken from production sources.

Refactor thereafter and test after each iteration of changes. It's not a rewrite, so don't lose the plot just Refactor into smaller methods :)

</comment><comment><USER37> quit, get a job working in a newer more modern language or just a company working on 'green field' projects. I worked on legacy code bases for ~3 years as a junior grunt and it contributed to some kind of PTSD-lite disorder.

or read the 'ol refactoring book...

</comment><comment><USER38> Send it to me with requirements, I'll do it for 500$

</comment><comment><USER39> Get a new job :)

<comment><USER40> That's the /r/relationships solution

<comment><USER17> I enjoyed this! ;)

</comment></comment></comment><comment><USER41> you probably need a ton of unit tests for this thing.

</comment><comment><USER42> Do not touch it.

</comment><comment><USER43> Indeed.com, Craigslist and maybe Linkedin.

</comment><comment><USER44> Yes, just don't use the word "shit".

The obvious refactoring is to split the function up into smaller pieces, even if you can split it into two 1500 line functions that is a win.

<comment><USER45> Is swearing on HN banned now?

<comment><USER46> Apparently not, I personally find the phrase "2000 line function" offensive but that part isn't censored.</comment></comment></comment>


India develops world's cheapest "laptop" at $35 - <AUTHOR> http://www.reuters.com/article/idUSTRE66M0R720100723

<comment><USER2> This is a couple months old, and part of a long line of stories of "low-cost laptops" coming out of India that haven't been exactly as advertised.

Previous versions have been rumored to sell for $10 or $20, though the price could only realistically be reached through government subsidies. There have been prototypes supposedly developed, though details on specs have been sketchy at best.

For me, I'll believe this when I see it.

[EDIT] criticism: [http://economictimes.indiatimes.com/infotech/hardware/Why- In...](http://economictimes.indiatimes.com/infotech/hardware/Why- Indias-35-computer-joke-isnt-funny/articleshow/6214029.cms)</comment>


Show HN: Toweber – Get Feedback on Your Website for Free - <AUTHOR> http://toweber.com <comment> zupa-hu tried to upload a profile image:

\----

Warning: move_uploaded_file(/home4/paul/toweber.com/assets/images/profile_pics/$2y$10$aCJz5z2XKhaZW9IbM6QvNOM6TpAm.MtUi832wHajzcHk/XksWCH1a709ac7a3ffc66a861e8a5743d546263an.jpg): failed to open stream: No such file or directory in /home4/paul/toweber.com/account.php on line 166

Warning: move_uploaded_file(): Unable to move '/tmp/phpPiRU52' to '/home4/paul/toweber.com/assets/images/profile_pics/$2y$10$aCJz5z2XKhaZW9IbM6QvNOM6TpAm.MtUi832wHajzcHk/XksWCH1a709ac7a3ffc66a861e8a5743d546263an.jpg' in /home4/paul/toweber.com/account.php on line 166

Warning: chmod(): No such file or directory in /home4/paul/toweber.com/account.php on line 167 File didnt upload

</comment><comment> zupa-hu This is exactly what I was thinking yesterday, that I either wanted to use such a service, or if it doesn't exist, build it, except I don't want to build it because I have other things to do. YAYYYY!!!

I totally wish it will take off for you!

<comment><AUTHOR> Thanks for your wishes!

</comment></comment><comment><USER2> Thanks. Hope it works well and the user base is there. I was looking for something like this for [https://2fb.me](https://2fb.me) ever since criticue.com went down

<comment><AUTHOR> Hey there, I hope Toweber helps you improve your website! We are currently in the beta testing phase and are building up our user base. Cheers!

</comment></comment><comment><AUTHOR> Hey Guys, I made a website that helps new website owners improve their sites for free. It is currently in beta testing. Please provide any feedback or any advice if you have some. Cheers!

</comment><comment><USER3> This is a good idea.</comment>


Lock8 - the World's First Smart Bike Lock - <AUTHOR> http://www.kickstarter.com/projects/lock8/lock8-the-worlds-first-smart-bike-lock

<comment><USER2> How do you handle false alarms? Say someone bumps to my bike and moves it, and then I get a message on my phone saying that someone is trying to steal my bike while it was just a false alarm?! Now if I am far way from my bike, the anxiety will kill me and I have to run and check it out to make sure it is safe. This will either get really annoying or completely desensitize the user to the theft notifications. Also, the bike thieves can abuse this feature to desensitize people against the alarm and notification features (like intentionally bumping into bikes to create false alarms). Have you ever thought about this at all?

</comment><comment><USER3> What happens if I wrap it in tinfoil before I cut the cable?

<comment><USER4> A few thoughts on this:

Firstly, maybe the cable is part of the antennae, thus negating this issue?

Secondly, maybe there's a heartbeart, the absence of which triggers an alert?

Finally, in practical terms, this probably won't become a problem until all bikes have upgraded. To deter a thief you don't need perfect security: you just need better security than the next potential victim.

<comment><USER3> 1) Would be clever but from the design it does not look likely.

2) Definitely possible although it would have to be pretty frequent to be useful in practice.

3) Unless your bike happens to be the most attractive target around.

</comment></comment></comment><comment><USER2> The hot-wire protection is a gimmick. I can use an alligator wire and attach each of the wire to the ends of the cable. This way when the cable is cut, the circuit remain closed and the alarm does not go off. Combine this aluminum foil wrapped around the lock to block the GPS and data signal, will make Lock8 totally useless.

</comment><comment><USER5> Another option that seems to offer the same thing: [http://www.kickstarter.com/projects/126495570/bitlock- turnin...](http://www.kickstarter.com/projects/126495570/bitlock-turning-your- smart-phone-into-your-bike-ke)

</comment><comment><USER6> The data connection might happen - in the US. My money says they won't be getting that $1.99 a month in Australia. Otherwise it's just another dumb lock.

</comment><comment><USER7> The lock costs more than my bike. At earlybird prices. I'd steal the lock. :P</comment>


The Observer Effect – Marc Andreessen - <AUTHOR> https://www.theobservereffect.org/marc.html <comment><USER2> Interviewer here. Thanks for the post. It was a lot of fun to ask Marc about his productivity routine, how he spends time, how he makes decision and his "build" essay.</comment>


$36,297 in 24 hours: behind the scenes of The App Design Handbook launch - <AUTHOR> http://nathanbarry.com/app-design-stats

<comment><USER2> I have last years edition and it is a GREAT resource.</comment>


Installing NextStep OS (OpenStep) in VirtualBox (2018) - <AUTHOR> http://stuffjasondoes.com/2018/07/25/installing-nextstep-os-openstep-on-virtualbox-in-2018/ <comment><USER2> You can also emulate a whole NeXT via the Previous emulator: [http://previous.unixdude.net/about.html](http://previous.unixdude.net/about.html)

"previous"ly on HN: [https://news.ycombinator.com/item?id=19084769](https://news.ycombinator.com/item?id=19084769) and [https://news.ycombinator.com/item?id=8745943](https://news.ycombinator.com/item?id=8745943)

And the Previous Forum (not much activity lately): [http://www.nextcomputers.org/forums/index.php?topic=2642.121...](http://www.nextcomputers.org/forums/index.php?topic=2642.1215)

<comment><USER3> Silly question though, how do I obtain a NeXT Install iso disk?

<comment><AUTHOR> [https://winworldpc.com/product/nextstep/3x](https://winworldpc.com/product/nextstep/3x) [https://archive.org/details/Openstep4.2](https://archive.org/details/Openstep4.2)

</comment></comment></comment><comment><USER4> This is really cool. I never got to play with a proper NeXT machine, but WindowMaker was my window manager of choice for several years in the late 90s/early 2000s. I always wished that GNUStep could have gotten more traction on the desktop.

I love the NeXT aesthetic, I'm ready for the the next UI design trend to go retro.

<comment><USER5> As someone who used a real NeXT machine, I could never figure out the appeal of window managers like WindowMaker. It's like those Aqua 'themes' for Windows XP. It's superficially similar (more or less) but it's missing the guts. Window managers are an add-on, and consistency isn't something you can get with an add-on.

<comment><USER6> This is a bit of a nirvana fallacy issue. The Next-like window manager family wasn't sold on purely visual merits, and thus even just having the window managers themselves provided some benefit. I don't see that as much in the Aqua-likes, as the functional changes are pretty minimal (scroll-bar buttons on the same side, back when that still was a thing) or even counter-productive (keeping all the window buttons together).

Back when bowman/afterstep/wmaker came out, pretty much no one who used them was familiar with the NeXt interface, beyond having seen one in a magazine or knowing its look-and-feel via Win95 copying some of it.

As far as I can remember, the popularity rested on a few pillars: For one, it's a pretty sleek look compared to twm or mwm. It also had a rather good resize functionality -- big enough handles to grab at the bottom, while saving a few valuable pixels at the sides.

A lot of people also like(d) the dock apps that came with it. Even other window managers adopted them.

Can't say a lot about general dock/shelf usage, as I never got into that.

Window shading was nice and probably introduced into common usage by that family of WMs.

</comment></comment></comment><comment><USER7> I used these instructions to install on VMWare, although it's pretty similar to the above. It works really well in VMware, including networking. I had to use a static IP as DHCP wasn't working.

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

You can download the drivers for VMware graphics, mouse, sound and networking here:

[http://www.nextcomputers.org/NeXTfiles/Software/NEXTSTEP/Dev...](http://www.nextcomputers.org/NeXTfiles/Software/NEXTSTEP/Developer/VMWare_Image_Tools/)

</comment><comment><USER8> If anybody wants to try the real thing instead of virtualised, I have two nextstations available for a small fee if you're close to Cambridge, UK.

<comment><USER8> (My email is in my profile) I'm trying to offload them, as they're taking up far too much room in my garage.

<comment><AUTHOR> I can't see it. (Is that because I have lower HN karma than you?)

edit: think it might be because one needs to put it in the "about" box as I have just done.

<comment><USER8> Updated my bio.

</comment></comment></comment></comment><comment><USER9> Note that the instructions say you can have _either_ the normal install ISO _or_ the Install-Dev ISO in the optical drive, but this does not seem to be correct -- using the Install-Dev ISO causes an error trying to read /etc/init. You need to use the normal install ISO instead.

<comment><AUTHOR> This is absolutely correct.

<comment><USER10> Do you also know how to use the install-dev iso to install the development tools?

<comment><AUTHOR> mount the install-dev CD and run as root

        /NextAdmin/Installer.app/Installer /OPENSTEP_4.2_DEVELOPER/NextCD/Packages/*.pkg

<comment><USER10> Thanks!

</comment></comment></comment></comment></comment><comment><USER11> I'm surprised we've had several front-page articles in the past few weeks about getting NextStep installed on a VM or on hardware, but nothing on GNUStep, which has standard installers.

<comment><USER12> GNUStep is a framework for writing applications not a GUI/desktop environment.

<comment><USER11> This is true. I probably should've clarified that nothing about etoile has reached the front page, which IS more of a desktop environment written in GNUStep:

[http://etoileos.com/](http://etoileos.com/)

But to be fair, the project looks like it's stagnated.

<comment><USER13> Recent headlines, one in 2014, the rest in 2012.

</comment></comment></comment></comment><comment><USER14> Does anyone know if there is a copy of WorldWideWeb floating around out there somewhere? Or was it exclusive to TBL's computer?

<comment><USER15> Is this what you are searching for? [http://info.cern.ch/hypertext/WWW/LineMode/Defaults/Distribu...](http://info.cern.ch/hypertext/WWW/LineMode/Defaults/Distribution.html)

There is more available at the following website: [http://info.cern.ch/hypertext/WWW/TheProject.html](http://info.cern.ch/hypertext/WWW/TheProject.html)

<comment><USER16> The FTP server at info.cern.ch mentioned in the first link is offline :(

<comment><USER15> Apologies. I should have tested the ftp server. I did find another source and. I tested the WWWLineMode_x.xx.tar.Z and they worked for me. [https://www.w3.org/2016/11/ftp- shutdown/info.html](https://www.w3.org/2016/11/ftp-shutdown/info.html)

</comment></comment></comment></comment><comment><USER17> Last time I tried this, the mouse was so laggy it was impossible to use. I might give it another go at some point tho, maybe even on a mini-iTX motherboard in a cube case ... for that full NeXT experience. :)

<comment><USER18> The mouse lag is probably because of the lack of guest-additions for the OS. Same thing happens for Windows 3.1 or 9x in VirtualBox.

</comment></comment><comment><USER19> Very cool -- on a semi-unrelated tangent: I really hope SerenityOS takes off (contributors, supporters), as I've been itching to run some old-looking OS on newer hardware.

<comment><USER20> OpenBSD works fine on a lot of new hardware :)

</comment></comment><comment><USER21> Please, please examine closely the license for VirtualBox before using it. It's Oracle, after all.

<comment><USER22> Uh, unless you're building a money-making venture on it, you're fine.

There is also VirtualBox Open Source Edition that would be fine for this.

</comment></comment><comment><USER23> Looks more promising and easier to deploy than Rhapsody DR2 installation in VMWare I did once

<comment><USER24> I have a VM running OS X Server 1.0's kernel & userland rebuilt using DR2 for over 900 days!

[darwin:~] root# uptime 12:34PM up 922 days, 15:02, 2 users, load averages: 2.71, 2.16, 2.03 [darwin:~] root# hostinfo Mach kernel version: Kernel Release 5.5: Sun Apr 30 10:53:53 SGT 2017; root(rcbuilder):kernel-7/BUILD/RELEASE_I386 Copyright (c) 1988-1995,1997-1999 Apple Computer, Inc. All Rights Reserved. Kernel configured for a single processor only. 1 processor is physically available. Processor type: pentium (Intel Pentium) Processor active: 0 Primary memory available: 512.00 megabytes. Default processor set: 36 tasks, 61 threads, 1 processors Load average: 2.33, Mach factor: 0.30

It's on VMWare ESXi 5.5 ... It's been surprisingly stable.

</comment></comment><comment><USER25> That GUI has aged well.</comment>


Ask HN: My first project/maybe eventually startup - <AUTHOR>

Hello HN. I'm building my first serious project, and I've got a general question for y'all.  Is it a good or bad idea to integrate a few different APIs in the basic functionality of my site? I am considering using Dropbox for users' files, and MediaCrush for serving big media files. I apologize for vagueness...this project is nowhere near a point of being ready to talk about.<p>-sinwave <comment><USER2> I think if you can do it in a concise way to where you can manage the code/functionality. Why not?

However. If they change their API and you have clients paying you..you may need to scramble to fix issues you had no control over....

<comment><AUTHOR> thanks jason.</comment></comment>


Can 3-D Save Hollywood? - <AUTHOR> http://online.wsj.com/article/SB123751033980990723.html#mod=rss_whats_news_technology <comment><USER2> Has anyone seen any of the new crop of 3D films?

Are the results good?

<comment><USER3> Speaking for "Journey to the Center of the Earth."

The plot was weakened substantially by the preoccupation with 3d; To the point that watching the 2d version seems goofy. The 3d effect itself was much better than the old days, the color was not distorted because they used polarization and not color shift to create the effect. You still have to wear dumb looking cardboard glasses.

Its still not "real 3d". Its just a multiplanar effect. Not being able to "see around" objects in the depth of field, to me completely ruins the 3d illusion. If you don't hold your head perfectly still, the world seems to come apart in a most distracting way. I couldn't stop thinking of "Shadow of the Beast". :)

In short, 3D 1) Makes the plots of movies suck. (even more) 2) Creates just enough of an strange planar quasi-3d effect to be distracting. 3) Still requires dorky glasses that make you feel 12.

Fine for a 10 minute amusement park attraction, but _will not_ "save Hollywood".

<comment><USER4> I don't know. I saw Coraline in the theaters in 3D and am pretty sure I would of liked it just as much in the 2D-Glasses. As for the dorky black glasses, I just like pretending I'm Buddy Holly while walking around the theater.

But I do agree it's not going to save Hollywood. If they thing William Castle- esque stunts are the only thing getting people to the theater, it'll only lead to more problems in the future.</comment></comment></comment>


Microsoft must release email data held on Dublin server  - T-A http://www.bbc.com/news/technology-27191500

<comment><AUTHOR> It's a battle of analogies.

Microsoft says a warrant to obtain email is like a warrant to search a house, and a US court does not have the authority to order a search of a house in another country.

The judge, on the other hand, says a warrant to obtain email is like a subpoena for documents. A US court can order a US party to produce documents and they must comply regardless of where they happen to store the documents.</comment>


California man had coronavirus before he boarded Grand Princess, cruise ship - <AUTHOR> https://www.latimes.com/california/story/2020-03-07/spread-of-coronavirus-on-grand-princess-ship-raises-public-health-alarms <comment><USER2> This is why I think the concerns over mass spread of Coronavirus everywhere over the next few months are well-founded. People who don't even know they're sick can spread the disease to dozens of others and all it takes is population density, proximity, and lax hygiene standards.

</comment><comment><USER3> "Passengers are not being isolated in their rooms and have been allowed to gather in the ship's bars and casino, she said."

Thus maximizing the number of coronavirus cases...

</comment><comment><USER4> There are at least four possibilities of varying likelihood:

1\. The cruise-line is trying to deflect doubt about their sanitation practices by throwing a dead guy under the ship.

2\. The guy had something before he boarded but didn't realize it was COVID-19.

3\. The guy knew he had COVID-19 and boarded anyhow.

4\. The guy picked it up on the ship around the time that he boarded, plus or minus a few days.</comment>


Raspberry Pi 3 Model B confirmed, with onboard BT LE and WiFi - <AUTHOR> https://apps.fcc.gov/oetcf/eas/reports/ViewExhibitReport.cfm?mode=Exhibits&calledFromFrame=N&application_id=Ti%2FYleaJNSl%2BTR5mL5C0WQ%3D%3D&fcc_id=2ABCB-RPI32 <comment><USER3> Raspberry is the most important project that made my family interested in "computer things"

It gathered the whole family together to play old couch-games[0], something that most powerful consoles haven't even been close --specially with the grampas

Really exited about what the future will bring us!

0: [http://emulationstation.org/](http://emulationstation.org/)

<comment><USER4> I must be the only one disappointed with old-school games. I was super excited to set up a retropie, after 20 minutes playing the nostalgia wore off quickly. Anyone else find the same?

<comment><USER5> I think some of that has to do with the fact that a lot of those older games aren't really as fun as we remembered them to be.

There's some classic gems, to be sure, but they were also all we had.

<comment><USER6> The bigger underlying problem is that we associate those games with happy periods of our lives. The once where we could play games, do projects and not worry about anything else.

By playing an old school game, your brain extracts these happy feelings from the memory. However, it's not a sustainable source of "fun" per say. As opposed to the newer games where "fun" is being caused by the game directly.

<comment><USER7> I strongly disagree. I have zero interest in today's bloated AAA games. Simple games like Tetris, Mario + romhacks, or Civ II have given me collectively more fun that I would ever have playing some insipid shooter or uninspired pay2win fantasy game. I wouldn't trade them for any of today's games, which I consider severely flawed in many ways.

<comment><USER8> Sturgeon's law applies. We only play the 10% (or less) of old games that are good. There are good new games, too.

<comment><USER7> I don't doubt it. I only say that the percentage of good older games is at least equivalent, if not greater, than the percentage of good newer games.

<comment><USER9> i disagree with you. i think the bad games end up being forgotten.

<comment><USER10> Nope, they are still getting a lot of exposure on retro websites and even GOG (despite calling themselves Good Old Games there's also some not-so-good games in their catalog).

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> Comparing the photos to my Pi 2, it doesn't seem very different. There's an extra IC near the microsd card, a connector beneath the HDMI port, and a few other small changes.

But nothing that looks like an antenna. Any idea where that might be?

Edit: as lovelearning pointed out, there is a small ceramic-looking piece in the upper-left of the top side, near the GPIO pins and LVDS display connector. That might be it.

<comment><USER12> That is it, and the connector beneath the HDMI port is the same (but mounted) JTAG connector as the RPi2.

I don't know what is the chip, though.

Also noticed a 2-pin header between the 40-pin one and the upper USB ones: it looks like the "RUN" from the Rpi Zero.

EDIT: The 2-pin "RUN" header already existed on the RPi2, where the ceramic antenna is now located on the RPi3.

<comment><USER12> There is a big Diode D5 near the micro-USB power connector.

</comment></comment></comment><comment><USER13> All that site returns here is

        FCC Federal Communications Commission
        Security Violation

        Your request looked malicious and has been blocked.
        You can use your browser's Back button to return to the previous page.
        If you have questions, please contact the FCC at 1-888-225-5322
        If you think that you have reached this page due to an error on our part, please contact let us know.

<comment><USER14> Lucky you, I'm straight up blocked. From multiple IPs even, chrome throws "ERR_CONNECTION_RESET" on 4G.

And here's "curl" from my server

      * Hostname was NOT found in DNS cache
      *   Trying 18.104.22.168...
      * Connected to apps.fcc.gov (184.108.40.206) port 443 (#0)
      * successfully set certificate verify locations:
      *   CAfile: none
        CApath: /etc/ssl/certs
      * SSLv3, TLS handshake, Client hello (1):
      * SSLv3, TLS handshake, Server hello (2):
      * SSLv3, TLS handshake, CERT (11):
      * SSLv3, TLS handshake, Server key exchange (12):
      * SSLv3, TLS handshake, Server finished (14):
      * SSLv3, TLS handshake, Client key exchange (16):
      * SSLv3, TLS change cipher, Client hello (1):
      * SSLv3, TLS handshake, Finished (20):
      * SSLv3, TLS change cipher, Client hello (1):
      * SSLv3, TLS handshake, Finished (20):
      * SSL connection using DHE-RSA-AES256-GCM-SHA384
      * Server certificate:
      *        subject: C=US; ST=District of Columbia; L=Washington; 188.8.131.52.4.1.3188.8.131.52.3=US; O=Federal Communications Commission; businessCategory=Government Entity; serialNumber=06 19 1934; CN=apps.fcc.gov
      *        start date: 2015-09-13 15:38:08 GMT
      *        expire date: 2016-09-14 00:27:01 GMT
      *        subjectAltName: apps.fcc.gov matched
      *        issuer: C=US; O=Entrust, Inc.; OU=See www.entrust.net/legal-terms; OU=(c) 2014 Entrust, Inc. - for authorized use only; CN=Entrust Certification Authority - <USER2>
      *        SSL certificate verify ok.
      > GET /oetcf/eas/reports/ViewExhibitReport.cfm?mode=Exhibits&calledFromFrame=N&application_id=Ti%2FYleaJNSl%2BTR5mL5C0WQ%3D%3D&fcc_id=2ABCB-RPI32 HTTP/1.1
      > User-Agent: curl/7.35.0
      > Host: apps.fcc.gov
      > Accept: */*
      >
      * SSL read: error:00000000:lib(0):func(0):reason(0), errno 104
      * Closing connection 0
      curl: (56) SSL read: error:00000000:lib(0):func(0):reason(0), errno 104

<comment> bjelkeman-again Is it being slashdotted and responding like it is a DoS attack maybe?

</comment></comment></comment><comment><USER15> Given Broadcom's connections to the project, it's almost a surprise they didn't have some kind of Broadcom option for WiFi/BT earlier. Must have stung at Broadcom to be powering the most popular hobbyist ARM Linux board, but almost every one using WiFi powered by Realtek,Ralink,etc.

<comment><USER16> Broadcom's "connection" to the project often seems circumstantial, like the Pi project is a blip on nobody's radar. Several of their engineers used to work at Broadcom and they've been under NDA lock and key, bending over backwards to help people progress on things that they can't officially talk about by leaving the least subtle clues ever so that they can move the process forward.

The GPU/camera integration in particularly is really painful - people have gone to insane ends to reverse engineer how it's working so that they can access features that aren't documented.

As a heavy Pi+camera user (I use 70 at a time every time we ship a unit) I appreciate the efforts of all these folks so much.

<comment><USER17> >bending over backwards to help people progress on things that they can't officially talk about by leaving the least subtle clues ever so that they can move the process forward

That sounds pretty interesting, where can I read more about it?

<comment><USER16> If you hang out in the camera board and read a certain kind of post - generally people trying to get the camera to do stuff it's not easily able to do - you see guys like 6by9 and jamesh doing their best to help without getting in trouble.

[https://www.raspberrypi.org/forums/viewtopic.php?f=43&t=4779...](https://www.raspberrypi.org/forums/viewtopic.php?f=43&t=47798&hilit=broadcom+nda)

[https://www.raspberrypi.org/forums/viewtopic.php?f=108&t=133...](https://www.raspberrypi.org/forums/viewtopic.php?f=108&t=133953&p=892748&hilit=broadcom+nda)

[https://www.raspberrypi.org/forums/viewtopic.php?f=43&t=1091...](https://www.raspberrypi.org/forums/viewtopic.php?f=43&t=109137&hilit=broadcom+nda)

</comment></comment></comment></comment><comment><USER18> I'm a little disappointed that (from a brief glance at the documents) it doesn't appear to support the 5 Ghz Wi-Fi band. I wonder if it's a power issue, or just limited space on the PCB. The 2.4 Ghz band gets kind of crowded in dense urban environments.

<comment><USER19> Same here. I moved the AppleTV and the Roku to a wired connection and had to set up a second wireless network to be able to browse from the kitchen. Any time I fire up Wifi Analyzer on my tablet I see three dozen different networks.

Making computers easy to use was, definitely, a huge mistake.

<comment><USER20> Assuming that last sentence is a joke...

<comment><USER19> It's known that many a true word is spoken in jest.

</comment></comment></comment></comment><comment><USER15> Also, good on the Pi Foundation for keeping this listing in the open rather than requesting 6 month confidentiality for the pictures/test report (which almost all companies do).

<comment><USER12> I don't think they did: the confidentiality period is now 45 days only by default, see [http://acbcert.com/documents/misc-docs/Memo-Short-Term-Vs- St...](http://acbcert.com/documents/misc-docs/Memo-Short-Term-Vs-Standard- Confidentiality.pdf)

Certification took place at Track (now Element UK) on 2015-11-23, given the external picture dates, or 95 days ago, so it looks like it has been extended once.

<comment><USER15> They didn't request short-term confidentiality for anything: the exhibit summary list at [https://apps.fcc.gov/oetcf/eas/reports/ViewExhibitReport.cfm...](https://apps.fcc.gov/oetcf/eas/reports/ViewExhibitReport.cfm?mode=Sum&calledFromFrame=N&RequestTimeout=500&application_id=Zdy6ihUm12XySKofWhAcfg%3D%3D&fcc_id=2ABCB- RPI32) has a column for short-term confidential which is all No.

Also, the confidentiality letter would specifically request short-term if they wanted it.

<comment><USER12> You are right, but today it is very difficult to get an extension to the 45 days period, unless you can provide a release date, as it has been abused so much in the past.

</comment></comment></comment></comment><comment><USER21> Why does Raspberry Pi not need to conform to the new "standards" of the FCC that require locking down firmware in routers? If it has onboard wifi, and you can turn it into a router... what's the difference between someone installing OpenWRT on a raspi vs. installing OpenWRT on a TPLink?

edit: This is a legitimate question, not an opinion.

<comment><USER22> As far as i'm aware those are all still proposed regulations and not in effect yet.

<comment><USER23> I think TP-Link is already shipping with a firmware in lockdown

[http://ml.ninux.org/pipermail/battlemesh/2016-February/00437...](http://ml.ninux.org/pipermail/battlemesh/2016-February/004379.html)

<comment><USER22> But that's just because TP-Link wanted to, not because of any FCC rule (at least, that's what an earlier discussion here on HN about that router said)

</comment></comment></comment></comment><comment><USER24> I couldn't spot the typical wavy PCB antenna pattern anywhere. Is that small cube in the upper left corner of external top view a ceramic antenna? Looks to me like the 2 LEDs have been shifted further down towards lower left and replaced with something new.

Update: Just noticed the radio testing report says single PCB mounted chip ceramic. I still can't spot it with certainty.

<comment><USER25> Yes, this is the antenna.

I cant believe it took them that long, Broadcom is famous for their BT/Wifi chips, buildin wifi was a no brainer, and cost shouldnt be an issue when you have great connections inside the company.

<comment><USER26> Are you sure that's the antenna? It looks more like it'd be a balun. It even has what looks like a feed line going to the keepout that's right next to it. I feel like the one in the picture is missing the actual antenna.

<comment><USER25> balun (white ceramic part with brown rectangle marking) appears to be on the other side between the chip and via to the antenna

[http://www.digikey.com/catalog/en/partgroup/2-45ghz- balun/52...](http://www.digikey.com/catalog/en/partgroup/2-45ghz-balun/52562) or similar

<comment><USER26> Oh, it's on top (which they totally said). I'm not a smart man.

</comment></comment></comment></comment></comment><comment><USER27> I love how the FCC still has a Sun web server

<comment><USER28> Slightly surprised to see that in combination with a *.cfm URL. I guess ColdFusion had a SPARC port?

<comment><USER29> Sun web server is a Java web server, and ColdFusion is a Java application.

</comment></comment></comment><comment><USER30> Neat :) It'd be cool if they use non-usb ethernet too, fingers crossed!

</comment><comment><USER31> Are the BTLE and WiFi the only changes?

Still same CPU and RAM as the 2?

<comment><USER32> Since this is the first showings of it, we don't know yet. I haven't read the data yet but it'll likely cover only the newly added RF stuff, and the part 15 compliance for the FCC. We'll have to wait to hear from the pi foundation on the rest of the specs.

<comment><USER31> From elsewhere, I've read that it's the same 1G of RAM, but the CPU is now a quad-core 1.2Ghz arm64.

<comment><USER32> Yea that got confirmed last night on the release of it. I can't wait for the software stack to catch up for the arm64 stuff. I hope the pointer size change doesn't negate too much of the speed gains it can bring.

</comment></comment></comment></comment><comment><USER33> Video and images of the Raspberry Pi available here: [https://www.youtube.com/watch?v=7yXIC1UVKx0](https://www.youtube.com/watch?v=7yXIC1UVKx0)

</comment><comment><USER4> The Raspberry Pi website says they're unlikely to have a new version in the next few years. Do they have FCC now? Maybe they just want to add on the radio modules.

From the FAQ: > there are no immediate plans to release any more new models. A further new model may be released in 2-3 years, but this is not a firm schedule.

[https://www.raspberrypi.org/help/faqs/#generalFuture](https://www.raspberrypi.org/help/faqs/#generalFuture)

<comment><USER34> Saying you've got an awesome product around the corner is a good way of causing the Osborne Effect [1]. Also, plans can and do change. It could very well be an issue where they weren't planning on it, but the people at Broadcom came up with an offer that was too good to pass up. Plans can and do change.

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

</comment></comment><comment><USER35> One step closer to accessibility for that don't have all sorts of usb dongles laying around.

</comment><comment><USER36> All we need is USB 3 and it would be perfect.

<comment><USER37> I am curious of your application for USB 3? Care to elaborate?

<comment><USER38> On the Pi 2, the ethernet port was really a USB-to-ethernet port plugged into a hidden USB port. So network speeds were limited to USB 2 speeds. I'm guessing the Pi 3 also works like this, instead of having pure onboard ethernet? But I don't know yet.

<comment><USER39> > _So network speeds were limited to USB 2 speeds_

Given that USB 2.0 is 480Mb/s, and Ethernet is 100Mb/s, there _is no bottleneck_ when using the Pi's Ethernet port. I really wish this myth that "Pi Ethernet is slower than dialup because USB" would just die.

Of course, like everyone else I'd love to see a new version of the Pi with Gigabit Ethernet directly connected to the system bus, and USB 3.0 while we're at it. But that would greatly increase the cost of the device and also require a newer SoC that supports such things.

<comment><USER40> >Pi Ethernet is slower than dialup because USB

I can't find any info to say which bus the MMC reader is connected to, but I know if you use a USB drive as well as the built in ethernet port, speed will suffer.

<comment><USER41> None of them. The SD card connects directly to the CPU.

</comment></comment></comment></comment></comment></comment><comment><USER42> I'll be picking one up. Onboard WiFi is a big deal.

<comment><USER43> Couldn't you already just plug a fairly cheap USB dongle in your rasperry pi ? I'm not sure I see what the big deal is, aside from probably making the price cheaper and freeing up a usb slot

<comment><USER44> If you've ever tried to get wifi working (esp on earlier RPis) you'll understand it is not that simple. Especially for newbies. Having said that its a good baptism of fire.

Raspberry Pi with built in wireless comms means it uses a standard piece of hardware so the software stack can be configured to work out of the box. That can't happen with the existing arrangement. Also the power supply problems with original Pis are frustrating to say the least. These are most evident when plugging in USB wifi devices. Again having a standard integrated piece of hardware will (hopefully) avoid this.

<comment> TD-Linux This doesn't really reflect my experience at all with the RPi 2. The edimax or official wifi dongles "just work" with NetworkManager.

With the early RPi it was a bit different because of USB power problems and kernel bugs, but those are mostly solved.

<comment><USER45> Experiences vary. I agree with tonylemesmer, getting them to work has not been trivial for me.

</comment></comment></comment></comment></comment><comment><USER46> But you can get almost any wireless ability and keep modern with whatever standard changes by simply using a usb stick.

They are super tiny now and barely stick out of the usb port.

Why hardwire wireless and outdate a board a few years later?

I think in 5 years we got g -> n -> 5ghz -> ac and three bluetooth variants.

Now there is indoor lte and other stuff coming.

<comment><USER47> So, how much time did it take you to get the WiFi stack working on your RasPi? Oh? You've never actually tried to get WiFi working on a Pi? Thought so. Getting WiFi to work on a Pi has historically been an exercise in very, very careful shopping for a dongle that actually works. Or getting lucky. Things may have changed recently, but many Pi users have stubbed their toe on the finding-a-Wifi-dongle-that-works rock. Have WiFi built-in that "just works" is going to be hugely beneficial.

<comment><USER48> It's now easy to find reviews on amazon for many wifi dongles specifically mentioning rpi compatability. And they just work.

Im sure you could still buy something unsupported if you didn't do your homework, just like nearly anything.

</comment></comment></comment><comment><USER49> The FCC's OET website is down at the moment, I'm guessing probably because of HN traffic. You can find the document cached here though:

[https://fccid.io/2ABCB-RPI32](https://fccid.io/2ABCB-RPI32)

</comment><comment><USER50> having recently sourced near identical components, the combo wifi/bt chip was around $1.40 in large volume. I'd wage in 40nm its < 50c for BRCM to produce depending on the break they got. ant is < 30c.

gotta assume this is connected via USB so it won't be the lowest power - taking up the 2836's sdcard slot would be 6 IO out of the GPIO map which would be over kill. so most likely this solution needs the onboard USB hub / ethernet chip and its less likely they will bring connectivity to the cheaper versions.

pretty happy with this - saves 2 USB peripherals!

<comment><USER25> wifi chip is most likely connected over SDIO

</comment></comment><comment><USER25> new 64 bit 1.2GHz cpu core confirmed?

[http://i.imgur.com/KRRd7OQ.jpg](http://i.imgur.com/KRRd7OQ.jpg)

[http://i.imgur.com/exuZy58.jpg](http://i.imgur.com/exuZy58.jpg)

[http://www.cnx-software.com/2016/02/27/raspberry- pi-3-model-...](http://www.cnx-software.com/2016/02/27/raspberry-pi-3-model-b- board-adds-wifi-and-bluetooth-connectivity/)

</comment><comment><USER51> Please have GbE

</comment><comment><USER52> Raspberry Pi's 4th birthday coming up...

[https://www.raspberrypi.org/blog/four-years-of- pi/](https://www.raspberrypi.org/blog/four-years-of-pi/)

"We are going to be doing some celebrating here at Pi Towers on Monday: February 29 is the 4th anniversary (or 1st, if you're prissy about leap years) of the first sales of the Raspberry Pi 1."

Might be an auspicious date to launch a new version of hardware?

</comment><comment><USER53> 3 Generations of PCBs and still no RTC onboard...

<comment><USER54> Probably because of lack of demand. Most people use the RPi in a scenario where they either have internet, or don't care about time.

</comment></comment><comment><USER55> Wow, this will give my chip a run for its money/performance. My favorite thing about the chip is the onboard connectivity.

</comment><comment><USER56> Excellent news. I wonder what the radio components will do to overall power consumption of the board. It should be considerably lower than a USB combo wifi / bt device, anyhow, no?

</comment><comment><USER57> I don't think it's going to happen but it would be really neat if it supported Vulkan. I want to try to build an arcade machine out of cheap, underpowered hardware.

</comment><comment><USER15> It also has BT Classic: section 7.5 of the test report states "The EUT is a small, single board, computer with WiFi, Bluetooth and Bluetooth LE connectivity."

</comment><comment><USER58> I must check that out. Reading the comments makes me want a retropie. The link is not working.

</comment><comment><USER59> Can someone explain to me the room that the test photos are from? Is it sound proof? Why?

<comment><USER60> Close - radio waves not sound waves.

<comment><USER61> Turns out that the wavelengths involved are similar, although one form of radiation is acoustic and the other electromagnetic. So those anechoic chambers often work pretty well for both purposes.

</comment></comment></comment><comment><USER33> Anyone got a copy of the files? The FCC has pulled them down!

<comment><USER62> [https://fccid.io/2ABCB-RPI32](https://fccid.io/2ABCB-RPI32)

</comment></comment><comment><USER63> Please have a header for an on/off button.

</comment><comment><USER64> The link seems no workie. FCC server problems.

</comment><comment><USER65> And here i was just about to order a 2...

</comment><comment><USER66> The onboard Wifi and Bluetooth really makes the barrier of entry for IoT $5 (assuming the stick with the $5 mark)

<comment><USER67> It's already $4 with the new ESP8266-EX from WeMos!

Full WiFi stack, 11x GPIO, Analog in, SPI, I2C, 80/160Mhz, 4MB Flash, power/flashing over USB, supported by the Arduino IDE, or just use the NodeMCU Lua firmware with modules for most sensors, displays, MQTT etc. I'm having a blast with them right now.

(Edit: [http://www.wemos.cc/wiki/doku.php?id=en:d1_mini](http://www.wemos.cc/wiki/doku.php?id=en:d1_mini))

<comment><USER68> WTF is WeMos? ESP8266 module itself costs below $2

<comment><USER69> Ummm, I believe it's a board you can surface mount the ESP8266 on to.</comment></comment></comment></comment>


Does It Matter That Amazon Can't Manufacture a Kindle in the USA? (yes) - <AUTHOR> http://www.forbes.com/sites/stevedenning/2011/08/20/does-it-really-matter-that-amazon-cant-manufacture-a-kindle-in-the-usa

<comment><USER2> It was decent of the columnist to provide a response to his earlier column, which was much discussed here on HN:

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

But if the comments he responds to in his latest column are the best he received, and if he really thinks his responses are the best possible responses to those comments, I have to wonder what the editors of Forbes are doing both to choose such economically ignorant columnists and thus adversely select for a readership that mostly doesn't think deeply about economics. Steve Denning still seems mostly to write his columns to tout his latest pop- lit management book rather than to encourage readers to think deeply about economic policy. Again, I have to point out that the well established economic law of comparative advantage,

<http://www.wto.org/english/res_e/reser_e/cadv_e.htm>

[http://www.econlib.org/library/Topics/Details/comparativeadv...](http://www.econlib.org/library/Topics/Details/comparativeadvantage.html)

[http://www.unc.edu/depts/econ/byrns_web/Economicae/Essays/AB...](http://www.unc.edu/depts/econ/byrns_web/Economicae/Essays/ABS_Comp_Adv.htm)

aptly described as "one proposition in all of the social sciences which is both true and non-trivial," shows that all countries, and all consumers, gain if producers in various countries TRADE and exchange what they have a comparative advantage--however derived--in producing for other goods that other producers have a comparative advantage in producing. Americans own a lot of Kindles. Many other Americans can afford Kindles if they ever decide to buy one. The manufacturing workers who produce Kindle components in various places around the world work in their workplaces mostly because they think that offers a better trade-off of money for time than some other kind of work they can do where they live. The world gains in prosperity year after year, both in the aggregate and on a per-capita basis, because countries trade and because enterprises decide what to produce based on what they can produce most advantageously to trade for something else.</comment>


Could a Neuroscientist Understand a Microprocessor? - <AUTHOR> http://journals.plos.org/ploscompbiol/article?id=10.1371/journal.pcbi.1005268 <comment><AUTHOR> See also episode 193 of the podcast "Rationally Speaking."

[http://rationallyspeakingpodcast.org/show/rs-193-eric- jonas-...](http://rationallyspeakingpodcast.org/show/rs-193-eric-jonas-on- could-a-neuroscientist-understand-a-mic.html)</comment>