Children aren't worth very much–that's why we no longer make many - <AUTHOR> http://qz.com/231313/children-arent-worth-very-much-thats-why-we-no-longer-make-many/ <comment><USER2> _Making a new "person"—on which the state has claims, but you do not, and toward whom you have (class-dependent) obligations—is a much less economically attractive proposition than making a new slave._

I'm surprised Perry doesn't reference Bryan Caplan's _Selfish Reasons to Have More Kids_. His argument is book-length and thus not easily summarized, but he observes that:

a) Contemporary Western middle- and upper-middle-class people obsess way too much over costly child interventions that may not do much;

b) Because of a, kids can be less work than is commonly assumed in the media;

c) Parents actually have _less_ influence on their kids, at least according to the data that he (voluminously) cites, and

d) Parents underestimate the amount of pleasure kids can be, especially over longer time horizons.

</comment><comment><USER3> I think the idea that investment in a child's education is more to the benefit of the general society than the benefit of the parent is a good point, but the author obstructs himself by saying that the state claims the child's future earnings.

The state doesn't make particular claim to the child's future earning. It makes equal claims to the parent's earning. So either, this argumentation goes down a path about taxes vs. no-taxes, which should be irrelevant to the overall topic or the argument should stick with the claim that a productive members is useful to society in a broad sense, but doesn't directly pay back the cost of raising it to its parents and just leave it at that.

<comment><USER4> > The state doesn't make particular claim to the child's future earning.

Not true in the United States at least. Children born as Americans are taxed based on citizenship regardless of where they live and work.

<comment><USER5> Only for the small number of people who don't pay taxes to the country where they live.

</comment></comment></comment><comment><USER6> If you're looking for a root cause for children, it's sex, and that's just going to happen regardless of economics.

So the decline in fertility can usually be traced directly to the technologies available to women to prevent or abort pregnancies, since they could not avoid sex. Note: not economic or social emancipation, just the technical capability.

For example the author refers to the decline in fertility in Japan in the 1940s...it just so happens that abortion was made legal in Japan in the 1940s. Not a coincidence.

So a big error in this essay is to treat having children as a choice to be evaluated. That is only recently true.

</comment><comment><USER7> "individually-owned "goods" (children) are brought under national ownership, and returns from children flow to the country as a whole (through tax-based entitlement programs), rather than individually to their previous "owners.""

Reminds me of 1984 where children are educated by the government to betray their parents where necessary.

1984 was mistaken, parents then wouldn't choose to have children.

</comment><comment><USER8> This should read "why developed societies no longer..."

The population growth rate in developing and 3rd world countries is still pretty high, despite what the author claims in the first paragraph.

</comment><comment><USER9> Rambling, at times incoherent, and largely unsubstantiated. Fine work gentlemen.

</comment><comment><USER10> That was a sobering look at parenthood.

</comment><comment><USER11> As a parent who studied economics, I files these (and there are a lot of them) "analyses" under "technically correct, but missed the point". There's a bit in there that may describe why we have less children beyond the old "less of them die" chestnut, but it utterly fails to address why we _do_ have children in the modern first world. That answer isn't based in economics.

<comment><USER12> I've read that more than half of pregnancies in the US are unintended. That indicates that the reason more than half the kids are born are because of sexual urges("Duh!"). I'm guessing the less than half group have various reasons. But this article is about why we now have less, so I'm not sure it failed to address why some do. It just didn't address it.</comment></comment>


3 million bank accounts hacked in Iran - <AUTHOR> http://www.zdnet.com/blog/security/3-million-bank-accounts-hacked-in-iran/11577

<comment><USER2> This sort of incident just reeks of 1998. Nobody in the USA (at least) would "prove a vulnerability exists", because they know that would get them arrested on a federal rap instantly. Also, nobody would not take the warning, much less ignore the minor hack preceding the 3 million account hack.

Is this just an issue with Iran's culture not having much experience with problems like widespread security flaws, or is something different going on there?

Also, with respect to the "Halal Internet" thing going around a few days ago, will the Iranian Halal Internet be so small that it won't keep up with security awareness and other trends?

</comment><comment><USER3> I can't help but wonder, what possesses the CEO of a company to not act on this type of information, in SOME capacity? Is it apathy, perhaps they're so busy that they never see it?</comment>


Is it possible to formulate category theory without set theory? - <AUTHOR> http://math.stackexchange.com/questions/1519330/is-it-possible-to-formulate-category-theory-without-set-theory <comment><AUTHOR> I posted this question over at math stackexchange after the thread about category theory and haskell from yesterday[1].

I found Carl Mummert's answer especially illuminating and definitely recommend reading it. He compares category theory to a strongly typed language, and set theory to a weakly typed one.

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


Ask HN: How much to spend on marketing? - <AUTHOR>

Hi, I am working on a new startup - eCompuCloud.com and I can't really determine how much should I spend on marketing?<p>For example, if I will spend $1000/mo on operating the business, and expect $1000 net profit - which means we must generate $2000 revenue.. how much to spend equal to the cost of operating the startup? Is it vague a little bit? <comment><USER2> Test test test.

Here's my experience (by YMMV):

SEO FTW. It's incredibly sustainable once you set it up as you have some high fixed costs but close to zero marginal cost to acquire a new customer.

Blogs. Write your own blog of tutorials on HOW to set up smaller websites. Make it as easy as possible to follow (check out ScreenSteps - <http://www.bluemangolearning.com/screensteps/>). Share this knowledge for free. Cover systems other than yours. These will provide you with a large bump in traffic of people looking for help. You'll convert about 1% of them (or slightly more if your pitch is really good).

Experiment with AdWords and Facebook. Both will give you $50 to $100 to start ads with. See what works. Find keywords that represent your target customer and see which ones work. If you have a quality score below 7, drop the keyword. See if it's driving customer and what your cost of acquisition is. Adjust accordingly.

Email newsletter. (See also: blog). Offer a free guide to setting up your website to anyone that signs up for your newsletter. Email out tips and tricks on websites (CSS, JS, plugins, or even just cool designs, etc) once every two weeks. Have a small pitch at the bottom about your company. It's not about the marketing here - it's about engaging your audience and building trust with your brand.

Just my two cents.

Traditional PR (newspapers) can provide big boosts in traffic (or hardly a blip) and are difficult to track.

</comment><comment><USER3> _I am not a marketer_

I would think you should first determine the ROI for different types of marketing and using those figures, come up with a game plan for how much to spend where. To some degree your marketing spend should drive your revenue.

I think it would be definitely worth is to study common growth hacks as well.

What exactly is your product? I work on OpenStack (more technical and knowledgable than your target market) and reading your homepage, I don't understand what exactly you provide.

<comment><AUTHOR> Well.. I made it a little vague so people get excited, but seems I am wrong. :D

My product is just the same computing cloud service provided, but aimed to be for home and small businesses, so they can host their websites and apps easily on the cloud without any technical background needed.

<comment><USER4> Why would they ever want to host their websites on the cloud as opposed to shared hosting? What's the value prop?

<comment><AUTHOR> I mentioned several reasons on the launch page, and made it as clear as possible.

Its reliable.. its scalable.. you pay only for what you use without any commitment.. and its very, very cheap.

<comment><USER4> Yes but this is a website... it _has_ to be up all the time, so you only pay for what you use turns out to be the minimum unit.

Sure, you can scale when it comes time to it but the intersection of people looking for scalability and very very cheap hosting in the SMB arena is small.</comment></comment></comment></comment></comment>


If you see everything, you'll get nothing - <AUTHOR> https://www.jjude.com/focus-to-win <comment><USER2> In a lot of ways, this is the same principle of "ignorance is bliss".</comment>


Did Google Just Quietly Launch A Web-Based iTunes Competitor? Yep. - <AUTHOR> http://techcrunch.com/2010/05/20/um-did-google-just-quietly-launch-a-web-based-itunes-competitor-yep/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+Techcrunch+(TechCrunch)

<comment><USER2> Downloading a lot of music over the cellular data network is a bit scary to me. Is it really wise? That's a lot of bandwidth being devoted to a task that can be accomplished faster and more efficiently by just plugging in a USB cable. Phones are personal devices -- it's not like they're too far out of reach at any given time. It would probably be more responsible for this feature to only work over wifi at least until the US data networks catch-up with current demand. I don't want to suffer with slow speeds because someone has their SmartPhone 6 inches from their computer doing OTA downloads of 80MB albums instead of plugging in a cable. I suspect some carriers will disable this feature on their devices. The OTA/web app downloading on the other hand makes perfect sense. Fairly small apps -- stuff you'd be downloading on your phone anyway.

<comment><USER3> This seems very conservative. Let's not worry about the poor US carriers getting so much business these days.

In the EU I have an unlimited 3G subscription for about 10 eur. It's probably capped in some way but always got the job done (albeit sometimes very slowly). Why should I worry that the data network is overloaded when the carrier here sells this thing. It's probably illegal to sell a service you know you cannot provide.

<comment><USER4> > In the EU I have an unlimited 3G subscription for about 10 eur.

Where? I'm also in EU and I only get "unlimited 3.6Mbps 3G" for 21€/mo, but after the first gigabyte it get's downgraded to 64kbps...

<comment><USER5> In Sweden you can get unlimited 3G for 7€/month if you're willing to accept that they cap you to 64kb/s after 500MB.

<comment><USER6> I just subscribed to unlimited 3G capped at 256kbps for ~6EUR/month on Tele2 Estonia.

256kbps is awfully slow if you are usually on 12mbps home adsl though :)

</comment></comment></comment></comment></comment><comment><USER7> Do music stores even matter anymore? Selling DRM-free MP3 downloads is a commodity business if I've ever seen one. The only trick is getting labels to sign on. Besides, syncing is an essential part of buying MP3 music: you don't want your music library only stored on your easily-lost cellphone, do you?

Anyone know if Google's music store lets you re-download songs? If not, I imagine there's going to be more than a few people who have to re-buy a bunch of albums because they lost their never-synced phone.

<comment><USER8> Selling mp3s may not be the point. This may just be a really great feature that helps sell phones. Certainly, iTunes integration is a major selling point for iPhones.

<comment><USER9> "Commoditize your complement"

<http://www.joelonsoftware.com/articles/StrategyLetterV.html>

</comment></comment></comment><comment><USER10> Will this be an adequate replacement for Lala? It sounds like it might be.

<comment><USER11> I've switched over to Mog.com, which in many ways I actually prefer to Lala.

</comment></comment><comment><USER12> Techcrunch is using the term "launch" loosely here.

<comment><USER13> and "quietly"

</comment></comment><comment><USER14> Good try, but still not good enough. My media startup will destroy them both.

<comment><USER15> Care to elaborate?

<comment><USER14> I am in the process of getting a patent on a method for distributing digital media in a unique way. I have a private proof of concept website set up now, but it is not ready to launch publicly yet (the graphical design is very rough and the selection of media is extremely limited at this time).

If you would like to check it out I can set up an account for you to see how it works.

<comment><USER16> fine - I'll bite. There's an email address in my profile.. I'll check it out (and report back to HN/This thread if you like..)

<comment><USER16> To Update: Pontifier has sent me through the link / login details.. I'll agree completely that the design needs a lot of work -- but I'll refrain from commenting on how it works / business models / etc until I've played with it a bit more.</comment></comment></comment></comment></comment>


Show HN: Escher – build visualizations of biological pathways - <AUTHOR> https://escher.github.io

<comment><AUTHOR> Author here. This is a grad school project built with D3. You can also see it embedded in our model database [http://bigg.ucsd.edu](http://bigg.ucsd.edu).</comment>


GWT i18n Overview - <AUTHOR> http://www.misterj2ee.com/2010/09/gwt-i18n-overview/

<comment><USER2> The theme of the blog makes it completely unreadable.</comment>


Alacritty Terminal Version 0.3.0 Release - <AUTHOR> https://blog.christianduerr.com/alacritty_030_announcement <comment><USER2> Still no tabs, and it's clear they have no intention of adding any.

I think they're somewhat naive in the claim that such are "best left to a window manager or terminal multiplexer", but I guess I'm never likely to win that argument with them. There's a reason why many terminal applications have ended up picking up tabs, and in no small part that's because Windows Managers almost always take a lot of work, or flat out don't even support it. I like and use tmux extensively, but it's never likely to replace tabs for me.

<comment><USER3> I use terminals frequently with tmux and friends and I don't I've ever used tabs from my terminal emulator.

</comment></comment><comment><USER4> this is awesome. i really like the text reflow and clickable links support! good job!

i see latency is still on the roadmap, when i test it in my roadmap, it didn't behave so badly but there was still room for improvement when compared to older terminals like xterm derivatives. there wasn't a release back in may 2018 when i made my review, and it seems you made three (!) since then so congrats on that. any word on how latency improved or worsened since then?

update: it looks like results are fairly similar to last time:

[https://github.com/jwilm/alacritty/issues/673#issuecomment-4...](https://github.com/jwilm/alacritty/issues/673#issuecomment-481082227)

and don't listen to people complaining about tabs: that's best left to window managers or muxers. lean and mean is the way to go. ;)

</comment><comment><USER5> The amazing thing about this is that the Windows installer is just 4 MB, 1/10 the size of an Electron app that does nothing.

<comment><USER6> uTorrent was 300kb and arguably much more complex than a term emulator, what's your point?

<comment><USER7> Here's why I downvoted you:

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

"Be civil. Don't say things you wouldn't say face-to-face. Don't be snarky. Comments should get more civil and substantive, not less, as a topic gets more divisive.

...

Please respond to the strongest plausible interpretation of what someone says, not a weaker one that's easier to criticize. Assume good faith.

...

Please don't post shallow dismissals, especially of other people's work. A good critical comment teaches us something."

</comment></comment></comment><comment><USER8> Is there a trick to make the alt key behave like esc+key? Without this, emacs is pretty unusable in Alacritty.

I did find a few filed issues and they all seem to suggest to add a huge number of key mappings for every possible combination with alt. Which seems ... odd.

</comment><comment><USER9> Which versions of Windows does this support?

</comment><comment><USER10> is copying and pasting working ?</comment>


A Vision for Future London Underground Stations - <AUTHOR> http://www.archdaily.com/778517/a-vision-for-the-future-of-the-london-undergrounds-stations <comment><USER2> Different article, same content, previously discussed here:

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


Jonathan Swift: Not entirely the misanthrope we thought - <AUTHOR> https://www.washingtonpost.com/entertainment/books/jonathan-swift-not-entirely-the-misanthrope-you-thought-you-knew/2017/02/27/5b0554b0-fd00-11e6-8f41-ea6ed597e4ca_story.html?utm_term=.13c864cc6cb4 <comment><USER2> It would be nice to see a timeline of this guys life correlated to his writings. If the writings are isolated, that's one thing. If they occur after being kicked down a well with a "this is SPARTA!!" then that is something else. Perhaps similarly, no one calls Caesar a misanthrope for 'et tu Brute?'

<comment><USER3> The Internet provides:

[http://www.victorianweb.org/previctorian/swift/chron.html](http://www.victorianweb.org/previctorian/swift/chron.html)

[http://jonathanswiftarchive.org.uk/chronology.html](http://jonathanswiftarchive.org.uk/chronology.html)

[https://www.timetoast.com/timelines/johnathan- swift](https://www.timetoast.com/timelines/johnathan-swift)

re: Julius Caesar, a guy should get a bit of slack after being stabbed repeatedly, or perhaps it's because "et tu, Brute?" wasn't strictly historical, more of a Shakespearean gloss. According to Suetonius, Julie's last words were in Greek, "Kai su, teknon?" (even you, my son?). Plutarch though says that Julie said nothing but merely drew his toga over his head.

<comment><USER2> Thanks for the links - helpful to put things in context.

</comment></comment></comment><comment><USER4> I wasn't aware of that. I just felt he was a luddite unless I misread gulliver's travels

</comment><comment><USER5> Dude invented the name "Vanessa", which is not a bad legacy.</comment>


Google releases full Android 4.0.1 source code, includes Honeycomb too - <AUTHOR> https://groups.google.com/forum/#!topic/android-building/T4XZJCZnqF8 <comment><USER3> In the past, I've spent a fair bit of time criticizing Google for calling Android "open source", but not releasing the source. Now that it appears that they are actually doing it, let me be the first to say that this is great.

Well done, Google.

<comment><USER4> What people criticized about them was the delay of an open source release to sustain their business strategy (commoditize their products' complements via open source but keep a integrated experience by proprietary early-access agreements - see also <http://www.joelonsoftware.com/articles/StrategyLetterV.html> ).

This release doesn't change Google's strategy nor the fact that they will continue to release Android's source code in the future with a significant delay compared to early-access partners. There's no reason to congratulate them now nor complain louder some months from now, they'll continue to do what makes sense for them from a business standpoint. The only news are the yet-to- be-discovered jewels in the just-released source code.

<comment><USER5> ahem if you check mobile dev history you will find Nokia did the same thing with open source Symbian, etc..

No viable successful open source mobile OS gives equal access to public and OEM partners to a private tree

<comment><USER6> Well, if Nokia boasted about Symbian's openness, they were in the position to be criticized too. It's mostly a PR problem.

</comment></comment></comment></comment><comment><USER7> [dead] comment by cdibona: "Please don't sync yet, it's currently in a mixed state. The 'repo for-all git push' is still running and will take some time to complete, so if you sync now you'll get some parts with Gingerbread and some parts with ICS."

(If you accidentally post something twice, be careful about deleting one. The other one may be automatically killed, but you don't see it when your posts are killed.)

<comment><USER8> It looks like it happened because he posted the same thing twice in different threads, not because he deleted it.

<comment><USER9> That's correct. It wasn't clear which one was going to end up on the front page and I was covering the bases.

Stand by :-)

</comment></comment></comment><comment><USER10> Why is Chris DiBona's comment in this thread dead? What he said is "from the horse's mouth", i.e. Google Open Source.

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

Profile: <http://news.ycombinator.com/user?id=cdibona>

Personal site (includes mention of his job): <http://www.dibona.com/>

P.S. Chris, you have <http://dibona.com> in your HN profile, but it just redirects.

<comment><USER11> >Why is Chris DiBona's comment in this thread dead?

He posted the same text in 2 comments (in two different threads). Probably the second of the 2 was a victim of an automatic dup detector/killer.

<comment><USER10> Interesting. I wasn't aware that HN checks comments across threads. Makes sense.

<comment><USER9> I guess I'll start salting my dupe comments :-)

<comment><USER12> You can salt them by including a link to the previous comment you made :)

</comment></comment></comment></comment></comment><comment><USER13> Related: how's Apple's "open" FaceTime specification coming along? Still waiting on just the specification here. Not even code.

<comment><USER14> Troll.

(Edit: You'll downvote me, but not the troll? WTF?)

<comment><USER15> One word (or few word) posts like "Troll", "Fanboy", "This", or "LOL" are frowned on at Hacker News because they don't add anything to the discussion.

</comment></comment></comment><comment><USER16> There are two links to this post on the front page right now. This one, [https://groups.google.com/forum/#!topic/android- building/T4X...](https://groups.google.com/forum/#!topic/android- building/T4XZJCZnqF8) , loads fine on my computer and comes up in the "new" Google visual design. It completely fails on my phone (Android 2.3), displaying "Loading..." for a while and then bumping me to the front page of Google Groups with a little message saying I am now logged in (I tried several times). The other link, [https://groups.google.com/group/android- building/msg/c0e01b4...](https://groups.google.com/group/android- building/msg/c0e01b4619a1455a?pli=1) , just works, everywhere, but shows the old Groups interface.

This is a really sad state of affairs. If Google can't guarantee that their fancy new Javascript-dependent links won't work everywhere, they should not be used as permalinks.

I really don't care about any arguments people might want to make about the visual redesign, or how to properly implement #! paths, or the extra effort involved in generating resilient URLs, or Google paying special attention to how the Android browser handles pages, or what evil things my phone company might be doing my my data stream, and how that's not their fault, or whatever. Permalinks should work. Everywhere. Period.

</comment><comment><USER17> Not _quite_ full source code --- some proprietary graphics drivers are supplied in binary-only form. It won't matter much for most uses of the source code, but purists will be displeased.

<http://source.android.com/source/building-devices.html>

<comment><USER18> That is probably not in Google's hands to change. It's the same with the vendor-supplied GPU drivers in desktop Linux as well.

</comment></comment><comment><USER19> Google releases every source code except Honeycomb. I think the code was really ugly, released urgently to support tablets. I cant blame Google, we who works with software in big companies know how pressure and strict timelines can be a pain, but I am glad that things are back on track.

<comment><USER3> I agree that pressure and strict timelines can be a pain, but compliance with the GPL is not optional.

<comment><USER20> Only Android's modifications to the Linux kernel and a few other tools are under GPL. Most stuff is Apache 2.0.

<comment><USER21> That's what Google used to tell us, but according to the guys of gpl- violations.org, this has always been a flat-out lie. Those "few other tools under GPL" are quite a lot and in no way negligible.

</comment></comment></comment></comment><comment><USER22> while I found the opportunity that many commenting and interested in this topic, let me ask a question. Can one upgrade any android phone by himself? (I do not own one), or one need to wait for the carrier and or manufacturer need to do it?

<comment><USER23> If your phone is rooted, or rootable, there's a bunch of devs over @ XDA- developers forum that create custom ROMs for most Android phones.

The most famous of these is CyanogenMod, which works across most Android phones out.

Once they port it to your phone you can flash the ROM and run ICS on your phone!

<comment><USER22> Thanks for the reply. Using the keywords like "custom ROM", "rooting" you mentioned in your reply I am also able to google for more.

</comment></comment></comment><comment><USER24> Now the only thing missing is a winning strategy for desktops/laptops. :-)

Seems like Chrome OS should be folded into Android and many people would be comfortable using it at home. Same apps could run and sync on all devices.

<comment><USER25> Unfortunately the two systems are very different and largely incompatible.

Merging them would not be impossible, but it's not easy.

<comment><USER18> I don't know about that. Certainly there are large differences under the hood, but isn't Chrome OS just supposed to run browser apps really well? I don't think that's a very hard compatibility measure for Android to match.

<comment><USER26> The entire point of Chrome OS is that it's _only_ the browser. Saying you want Chrome OS merged with Android is the same as saying you just want a Chrome APK. Chrome OS's key tenets of security and simplicity are simply not compatible with traditional operating systems.

</comment></comment></comment></comment><comment><USER27> Why don't they just tag all of Honeycomb?

If the reason is that there's no combination of project commits that can create a building Honeycomb, they should just admit to it and explain why.

The current approach seems like a weird attempt to snow something over - <USER2> understand that Honeycomb was a rushed, trashy Android release, and that there's some pride involved, but _supposedly_ all of the rushed, trashy code is in the tree now, and hence there's no going back. The first thing everyone on xda-developers is going to do is go hunting for bad Honeycomb code anyway.

<comment><USER28> I don't know that it was so much "bad" code as they didn't want other groups to try and put Honeycomb on devices that it did not work on (i.e. phones). This would hurt the brand and fill the tech blogs with "Honeycomb is unstable and buggy!" when it really didn't belong on those devices in the first place.

There's a new release now that is stable for all kinds of devices, is it worth it to concern ourselves with what exactly is or isn't Honeycomb? I don't think they were trying to snow something over, I think this was their plan. Release Honeycomb after ICS since device manufacturers will use ICS anyway since it's new.

</comment></comment><comment><USER29> I've heard so many complaints from developers about the delayed source release, however I've never known Google to withhold source code for Android.

Could the slight delay in release simply be due to legal issues such as scrubbing patent issues and verification that OSS code isn't infringing?

<comment><USER30> Honest question from a maybe-future Android dev: is it notably more challenging to develop for Android during periods when the source is not yet public? For example, is a lot of platform doc written from the POV of someone who expects you'll just peep the code when questions arise?

Update: +1 to everyone thinking 'man, I bitch about google sometimes, but this kind of thing is totally legit and awesome'

<comment><USER31> I do Android dev full time and it's pretty rare to actually _need_ to look at the source. The only time is when encountering a strange bug that you suspect is caused by the underlying implementation.

Google has generally been good about releasing emulator images prior to releases, though usually it's only a few weeks. Luckily, it takes time for Android versions to achieve large market share, so any bugs can be squashed before it's a big problem.

<comment><USER32> Sometimes when I'm in a bad mood, the API and online doc are not cutting it - I start wondering why it doesn't work the way I'd expect it to, and from there I have multiple options, from StackOverflow to Google Groups to ordering a book on Amazon.com, and this is the true productivity killer because of, you know, the internet.

The definitive and fastest answer will always come from reading and understanding the source code, as I don't have to hope that someone had the same problem I'm having and someone else had an answer, or that someone will reply to my question before I give up. Eclair, Froyo and Gingerbread sources were enough for 99% of my needs though, but there was always this shadow of doubt for Honeycomb-specific features...

For the most part, having the latest source readily available will greatly reduce the amount of open browser tabs, and for that I'm thankful :)

</comment></comment></comment></comment><comment><USER33> So, the Android website is packed full of information about how to clone the Android repository and build it from scratch, but I just want to browse it online. Is there some official "gitweb" site or something that I can poke at?

<comment><USER34> Android sources get mirrored to <https://github.com/android/>, which allows browsing of the code. The latest release is probably not be there yet, though.

For example, source of the MMS conversation list:

[https://github.com/android/platform_packages_apps_mms/blob/m...](https://github.com/android/platform_packages_apps_mms/blob/master/src/com/android/mms/ui/ConversationList.java)

\-- update: Another great place to browse the source, with working links to other classes, multiple versions etc, is grepcode:

[http://grepcode.com/file/repository.grepcode.com/java/ext/co...](http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android- apps/2.0_r1/com/android/mms/ui/ComposeMessageActivity.java)

<comment><USER35> github.com/android seems be a mirror of kernel.org, which isn't where Android is hosted any more...

</comment></comment></comment><comment><USER36> I'v never seen so many people BITCHING about getting free code. No less an entire OS that runs on hundreds of devices. Maaahhhh you didn't release it fast enough. Stop whining!!

</comment><comment><USER37> _Meanwhile at Daring Fireball_

crickets <http://www.youtube.com/watch?v=K8E_zMLCRNg>

</comment><comment><USER38> I criticized google for holding back honeycomb, now it's finally releasing the code again. Great! Thanks Google.

</comment><comment><USER39> That source tree is huge. Over 6GB of data and it takes several hours to sync on my machine (not done yet).

</comment><comment><USER40> 'bout time !

</comment><comment><USER41> Well done Google!

</comment><comment><USER42> Only the Honeycomb GPL modules are available. The entire platform source is not available. see here: <http://source.android.com/source/build-numbers.html>

<comment><USER43> I think that link is just outdated, it doesn't mention ICS at all.

The link for this submission says:

 _"This release includes the full history of the Android source code tree, which naturally includes all the source code for the Honeycomb releases. However, since Honeycomb was a little incomplete, we want everyone to focus on Ice Cream Sandwich. So, we haven't created any tags that correspond to the Honeycomb releases (even though the changes are present in the history.)"_

</comment></comment><comment><USER21> Many thanks to <http://gpl-violations.org/>! Without their pressure this would have taken considerably longer. (Or wouldn't have happened at all?)

<comment><USER21> To the person who downvoted this comment: Could you explain what's wrong with it?

<comment><USER44> From what i can see there is no pressure being put on Google from gpl- violations.org (presumably because the haven't made any violations).

Plenty of heat being put on manufacturers with Android devices but that is hardly Google's fault or related to the ICS release.</comment></comment></comment>


Microsoft turns an obsession with detail into micron-optimized keyboards - <AUTHOR> https://techcrunch.com/2019/07/26/how-microsoft-turns-an-obsession-with-detail-into-micron-optimized-keyboards/ <comment><USER2> > _The original Natural Keyboard was the first split-key, ergonomic keyboard, > the fundamentals of which have only ever been slightly improved upon._

This is just false. Split keyboards and sculpted bowls have been around since the 70s

<comment><USER3> Not to mention the Microsoft version is _very significantly fundamentally worse_ than earlier designs from the 1960s and 70s... and 80s... and 90s.... and later designs from the 2000s... and 2010s...

</comment></comment><comment><USER4> > Microsoft may be known primarily for its software and services,

Not to me. I ditched their software 17 years ago, but I love their hardware. I've used a Microsoft ergo keyboard since the first one.

I literally bought a new one yesterday after spilling water on my old one after having it for the last eight years.

<comment><USER5> Used to be a Microsoft hardware fan, until my MS Sculpt Ergnomic Mouse broke thrice in 2 months.

<comment><USER6> What did break in it? I'm using sculpt since it was released and the mouse is still alive.

But I can't say that about the USB receiver, it broke after 6 months (it stopped receiving anything frombmouse/keyboard and the plastic cover just broke). The replacement keyboard has almost the same issue with the receiver (loses contact depending ontthe way it is inserted), so I put it in an USB hub so I won't need to touch it and break the contacts. Besides that I love it, and I love that the useless numpad is not the part of keyboard (BTW.I why every 15 inch laptop keyboard is has those is beyond me), I store it in a drawer.

</comment></comment></comment><comment><USER7> Dang, I was reading this article, scrolled close to the bottom, and the site suddenly "reloaded" with completely different articles, removing the entire Microsoft keyboard article from the page. Why would they implement such a user-hostile design, making it impossible to access the content I came to the site for?

<comment><USER8> A/B testing showed that it increased the number of page hits ;)

<comment><USER9> Hahaha that actually sounds plausible

</comment></comment></comment><comment><USER10> I can't agree with the claims of this article.

Kinesis is far ahead of MS's so-called "ergonomic" keyboards. I know because I suffer from RSI and have tried every model I could get my hands on.

<comment><USER11> The wildly more hand-friendly Kinesis model 100 was earlier, ~1992 (from [https://kinesis-ergo.com/company/about-kinesis/](https://kinesis- ergo.com/company/about-kinesis/) ), and the ergonomic Matron was pre-1980, I think.

The Natural has always been a watered-down, cheap feeling keyboard by comparison to thm, with - it would seem - much more attention being paid to not looking too weird than to actually being ergonomic, such as not straightening out the key columns, going convex, putting control keys where the thumbs can reach them, etc. It's pathetic. The only truly positive attribute specific to the Natural when compared to other ergonomics keyboards is that it was cheap, < $100. Although it also felt cheap, wore out relatively quickly making it more expensive per year of potential use, and had a terrible key mechanism that may have negated a good part of any ergonomic benefit - especially after some wear.

I'm biased, of course, I've typed on the "Naturals" and have several Kinesis Ergos. The latter keyboard style is the only thing that's made typing comfortable, and in the office I work in, I'm no alone in preferring them.

<comment><USER10> One I want to try is the Ergodox EZ. It's basically a mashup of my two favorite Kinesis (Advantage 2 and Edge). Have you tried it yet?

<comment><USER12> Not the OP but I have one that's collecting dust. I've chosen single profile keycaps for it (the keycaps have the same "shape" for every rows) because I wanted to use the Colemak layout, but I was never able to get used to it.

To be honest didn't tried too much. I also have an old Kinesis Advantage model, the one with the rubber function keys (I hate them, the Advantage2 has new function keys but they still look cheap membrane buttons) anyway I'm quite satisfied with a TECK 209, it's not perfect but it's more portable than the Advantage if I'm on the go.

I suppose the next one to try would be a Maltron.

</comment></comment></comment></comment><comment><USER13> I was curious what "micron-optimized" meant but it's just catchy headline copy.

</comment><comment><USER14> >> I may as well say at the outset that this piece was done essentially at the invitation (but not direction) of Microsoft...

Bad habits die hard.

Reminds me of the good old days we were fighting Microsoft in Israel, where the local marketing team would prep journalists (one especially made a career out of it) in its offices, who would later publish articles explaining why Linux is so bad for you and why it has no future. The good old "get the facts" campaign and such.

</comment><comment><USER15> Micron-optimized keyboard sounds like horrible reliability. Speck of dust and laptop is ruined (Surface laptops can not be repaired in non-destructive way).

I had 4x Natural 4000 keyboards, they had constant problems due to bad design. Space bar got stuck. Keyboard wiring was prone to corrosion and shortcuts, keys would randomly stop working. Had to disassemble keyboard, wash inside with mild acid and leave it to dry.

At end I did this repair once a month and had multiple keyboards on rotation. I put up with that, there was no alternative at that time.

</comment><comment><USER16> Reading about how diverse their testers are made me wonder: why is the end result only a single size? Why do they not go all the way and offer their keyboards and mice in multiple sizes?

<comment><USER17> Likely not profitable to have so many SKUs.

</comment></comment><comment><USER18> Their soundproof room is NEGATIVE 20 decibels?!

<comment><USER19> You could probably hear your own heartbeat in those conditions...

</comment></comment><comment><USER20> I get a distinct impression from this article that the target user is a trained typist. It would be interesting to find out if an ergonomist would think differently about a keyboard to be used by users who do not touch type, that is, the vast majority of users.

</comment><comment><USER21> There used to be notebooks with slightly curved keyboards, can't recall the vendor (HP? Dell?). I really wish Microsoft (and Apple) would re-set this trend.

</comment><comment><USER12> Yeah right, obsessed with shaving some µm from keyboards but then let's put laptop style "short travel keys" keyboards on a desk because it looks cool. And not get me started with using the same horizontal staggered layout that was necessary 200 years ago on typewriters but it makes absolutely no sense today.

The fun thing is I've seen "ortholinear" keyboards sold for kids because horizontal staggered layout is for adults...

P.S. in my personal experience vertical staggered should be the default layout

P.P.S. and yes bikeshedding

<comment><USER21> Is vertical staggered the same as ortholinear? Haven't encountered the term before.

Agree that default physical layout + qwerty as status quo is disappointing, though.

<comment><USER22> Ortholinear is no stagger in either direction.

Column stagger is what you see on the Ergodox or Atreus or Mitosis or Iris or any of the recently vast proliferation of ergo designs.

<comment><USER21> Thanks for the references! I see that all three of the above favor split-hand design alongside with vertical staggering.

</comment></comment></comment></comment><comment><USER3> Unfortunately, being a big company, they can't do anything very radical or work from first principles. Just like every other big company today, all of their keyboard designs end up being mediocre spinoffs of a basic keyboard designed in the 1870s which had evolutionaruy changes (not all ergonomically positive) in the 1920s–30s, and then again in the 60s, then again in the 90s.

The IBM keyboards produced from 1960–1990 are better than anything Microsoft puts out today: faster to type on, more ergonomic, much more reliable, sturdier, ... and of course much more expensive to produce. For particularly nice examples, take a look at these, [https://deskthority.net/wiki/IBM_Beam_Spring_Keyboards](https://deskthority.net/wiki/IBM_Beam_Spring_Keyboards)

Or pick your favorite other vendor. Pretty much all of keyboards sold in the 70s–80s were better than anything available at mass scale today. Back then computers were competing head to head with typewriters, and the best electronic typewriters were really nice to type on. I'm partial to the Canon typewriters of the early 1980s with nice Alps switches, but e.g. some Olympia typewriters of the early 80s were deliciously clicky.

For at least the 2 decades from 1980–2000, pretty much every change in mass- market keyboards was driven by cost cutting. It's not too surprising that quality degraded.

Even if we assume we can't change the basic keyboard shape, one of the important features that Microsoft (and most other) keyboards have dropped since the 90s is that further-away rows on keyboards used to be elevated above the home row in a sort of step-like pattern. This makes it much easier to reach the tops of those keys, and therefore speeds up typing them. The original designs from the typewriters of the 60s and 70s were based on research done by Honeywell and IBM and imitated widely, but later keytop profiles (including for modern Microsoft keyboards) were designed by people who didn't understand the reason for the design, and just imitated a progressively watered down form. (Indeed an even _more_ aggressive step than the ones used on those old keyboards is ergonomically preferable for most typists.)

* * *

All of Microsoft's fancy lab studies seem to me like A-B testing all of the possible choices of features for a penny-farthing bicycle without ever considering adding a chain. [https://en.wikipedia.org/wiki/Penny- farthing](https://en.wikipedia.org/wiki/Penny-farthing)

If what we care about is ergonomics (which is to say, reducing static strain on muscles in the hand/arm while using the strong and efficient part of the main finger flexors' range of motion to type, and reducing the finger and arm motion required to reach the keys), then the Maltron from the 1970s is much better than any of the dome-shaped Microsoft keyboards [https://en.wikipedia.org/wiki/Maltron](https://en.wikipedia.org/wiki/Maltron)

Better still, my favorite concept is a never-mass-produced ergonomic keyboard design called the DataStealth from the 1990s, [http://web.archive.org/web/20000601172323/http://www.protomi...](http://web.archive.org/web/20000601172323/http://www.protomic.com/products/products_01.htm) which is in my opinion the most anatomically informed design ever seriously undertaken, developed by an expert from first principles.

But also check out this awesome IBM patent from 1964, [https://geekhack.org/index.php?topic=63415.0](https://geekhack.org/index.php?topic=63415.0)

Or see the Japanese TRON project keyboards, [http://xahlee.info/kbd/TRON_keyboard.html](http://xahlee.info/kbd/TRON_keyboard.html)

Or more recently, Keyboardio, [https://shop.keyboard.io/](https://shop.keyboard.io/)

<comment> dao- > basic keyboard designed in the 19th century

You seem to mean the 20th century.

<comment><USER3> The basic design is from the 1870s.

<comment> dao- Ah, fair enough. I thought it could be possible but all your actual examples were from the 20th century.</comment></comment></comment></comment>


Programming without objects - <AUTHOR> http://www.falkoriemenschneider.de/a__2014-09-17__Programming-without-objects.html <comment><USER2> What this article seems to miss is part of the raison d'être of Object Oriented Programming. It's not just about how you encapsulate state and how you act on that state. Forget the exact way the type system works, or what extension methods are, or even what polymorphism is.

The big advantage of OO is that it acts as a distillation of how humans think. We're accustomed to thinking in terms of 'things that do stuff'. What OO provides is essentially a skeuomorphic element to your code, where your basic units have some resemblance to real items and concepts. This makes it a lot easier to reason about large codebases, and makes them easier to document (in theory). It means the most important thing you need to understand how a piece of business logic works is knowledge of the business. You don't need to know anything about the data, or how the application is composed in order to comply with the needed use case. If you know the concepts and their behaviour in the problem domain, you will be able to make sense of how the code is written.

FP has its place, as does procedural code, but advocating either of them as a complete replacement for OO is short-sighted. Claiming FP is a solution to OO's shortcomings is too. Each has its place. If anything, we should be working towards next-generation models, that combine the advantages of both and mitigate the downsides of both.

<comment><USER3> > The big advantage of OO is that it acts as a distillation of how humans > think.

Honestly, while I think OO programming in the broadest sense does that, I think class-oriented OOP (what the article mostly focusses on) languages, particularly statically-typed class-oriented languages in the C++/Java lineage --don't do a great job of either supporting that intuition or facilitating applying it intuition to the construction of correct, maintainable computer programs. They aren't _useless_ in that respect--there is a reason why they flourished--but there's also a reason that after them an important programming paradigm for several decades, and a dominant one since at least the late 1980s, there's a whole lot of moves away from traditional class-oriented OOP in newer languages.

I think that we're seeing a model--which is mostly viewed as being within the FP tradition but which has learned a lot from OOP languages and supports a lot of OO thinking--emerge (and that this article points to a lot of its elements) that provides a framework that better matches the intuition than class- oriented OOP does, _while also_ better supporting building correct, maintainable, easy-to-reason-about systems.

<comment><USER4> >don't do a great job of either supporting that intuition or facilitating applying it intuition to the construction of correct, maintainable computer programs

My first thought is that this is dependent on implementation. It is possible to write classes in a way that aligns with intuition, but it is sometimes hard to do that, and even if you're great at OOP it is hard to do consistently. I think the Smalltalk message-sending way of thinking has huge value because it is easy to reason with, and facilitates this intuition.

That said, I do see tremendous value in FP, and I'm encouraged by the elements of FP that I've seen popping up in Swift. So I guess ultimately I do agree with you. I'd like to see OOP continue to flourish, but borrow elements from the Functional style that make it very difficult to write fragile code.

<comment><USER2> I'm exactly in your camp. I would love to see more functional influence in OO, and more careful thought about what to use at what time.

</comment></comment></comment></comment><comment><USER5> This article, like many that cheer functional programming, falls into a certain cognitive bias, that prevents it from seeing what OO is good at.

Alan Kay wrote _" The key in making great and growable systems is much more to design how its modules communicate rather than what their internal properties and behaviors should be."_

To start to see what this means, consider the annoying String / Data.Text split in Haskell. String is very much in the "leave data alone" mindset, baring its guts as a [Char]. Now you're stuck: you can't change its representation, you can't easily introduce Unicode, etc. This proved to be so rigid that an entirely new string type had to be introduced, and we're still dealing with the fallout.

Great and growable systems! The large scale structure of our software, decomposed into modules, not just at a moment frozen in time, but in the future as well. We are tasked with thinking about relationships and communication.

So here is how "the better way" is introduced:

> Data is immutable, and any complex data structure...

There's that insidious FP bias: to immediately dive into data structures, to view all programs as a self-contained data transformation. So reductionist! It's completely focused on those "internal properties and behaviors" that we were warned about above.

I would end here, but I just couldn't pass this up:

> To come up with a better solution [for dispatching], Haskell and Clojure > take very different approaches, but both excel what any OO programmer is > commonly used to.

"Any OO programmer?" No way! OO as realized in truly dynamic languages exposes not just a fixed dispatch mechanism, but the machinery of dispatch itself, i.e. a metaobject protocol:

 _"...there are not only classes for workaday tools, such as UI widgets, but there are also classes that represent the metastructure of the system itself. How are instances themselves made? What is a variable really? Can we easily install a very different notion of inheritance? Can we decide that prototypes are going to work better for us than classes, and move to a prototype-based design?"_

This is far richer than the anemic switch-style dispatch that Haskell's guards and pattern matching provide. For example, try modifying a Haskell program to print a log every time a string is made. You can't!

I'm not familiar with Clojure but I'll bet its object model has its roots in CLOS. Whether or not you call it "object oriented," CLOS is solidly in the spirit of having a dynamic meta-structure.

<comment><USER6> I think you and the author have posed a false dichotomy.

I avoid "traditional" OO in my own work for the some of the same reasons the author points out; not least of which that traditional classes are a kitchen sink.

But many of the _ideas_ of OO; notably extensionality (what the author incorrectly calls intensionality), I could never do without. I agree with you, that exposing the innards of my data structures is a crime: not only do I lose control over their construction and use (including defining equality), but I'm restricted from ever modifying the structure.

But nothing in FP prevents hiding structure. You can see it all the time in OCaml: a module signature will declare an opaque, possibly parametric, type, as well as a set of operators over that type. _The internal structure of that type is never exposed._ All creation and use, and ideally comparisons (though it is unfortunately not enforced in OCaml) must go through the module's API.

(Module signatures, it should be noted, may be shared by multiple implementations, permitting compile-time dispatch.)

Yet while maintaining opacity, I am free to dispense with the excess baggage an OO class entails: run-time dispatch; a single "self" (i.e. the "friend" problem); that abomination known as inheritance; all these things I need no longer worry about, and my code can be cleaner and more efficient.

<comment><USER5> The module system in OCaml sounds very nice (and we all know what the "O" for!). But there's still a bias towards a sort of static-ness in FP. For example, the use of abstract data types where a Java programmer may use a class hierarchy. Clients cannot extend an ADT: I can't make my own List in Haskell and pass it off to a function.

Regarding the OO "excess baggage," I would respond that what is "excess" depends on the nature of the system. I can understand dismissing that stuff when your program is self-contained. When the only code at play is your own, when you can statically enumerate every type, function call site, etc, it may be hard to see the value in those features.

My project is a shared library, and so is dynamically linked with code written by other teams, perhaps years ago, or even yet-to-written. The system is thus not my program in isolation, but an intimate collaboration between my component and client components. Runtime dispatch, inheritance, reflection, and even occasional mucking with meta-objects are the tools we use to cooperate. This is a type of extensibility that Haskell doesn't even try to support. I don't know about OCaml here.

(Alan Kay called this the "negotiation and strategy from the object's point of view.")

<comment><USER3> In the same way that many recommend programming to interfaces rather than concrete classes in static OO languages, programming to typeclasses rather than concrete types (when you can't avoid that kind of dependency and write completely generic code) is an important recommendation in Haskell.

</comment></comment></comment></comment><comment><USER7> Every OOP developer is on a journey, they just don't know it. Some of them will never make it. But some will reach a point of realisation where writing well-designed software comes naturally to them because they've inadvertently stumbled upon the core concepts of functional programming. It then requires them to realise that what they've found is just FP and then requires a further minor step to actually learn a more appropriate language. Once this developer makes that jump he reaches a new plain of development happiness and a feeling of power over OOP practicers because his level of productivity has magnified by about 3x. Enabling themselves to allocate brain power to more important issues. That's just called progress though.

Having said that, I dislike articles like this because they shout too loudly. Just use a proper hybrid OO-FP (ala F# / Scala etc) language and be done with it. These languages are designed for business productivity - not academic box ticking. Everybody happy.

<comment><USER8> What arrogant hogwash.

I was exposed to functional programming my first year at university (it was used in the introductory courses) and quickly noticed that contrary to the hype (similar to yours), functional programs tended to be more bloated with trying to work around limitations of the less expressive programming model/language and not particularly more robust.

That doesn't mean certain aspects can't be nice to have ('let' is kinda nice), but even that is mostly for programming-in-the-small.

Your unsubstantiated claim of 3x productivity increase is, er, "interesting".

<comment><USER7> Don't worry, you haven't reached the right level of experience yet. You'll get there, though you have some attitude problems to overcome first like most young programmers.

<comment><USER9> I wonder why the parent comment is downvoted. He's dead on.

<comment><USER10> nbevans made a post dripping with condescension and arrogance. mpweiher pointed that out. nbevans replied with... more arrogance and condescension. And you wonder why he got downvoted?

He's also (at least partly) wrong, and so are you. FP has it's place. But what people like you and nbevans never seem to realize is that the rest of the programming world is neither stupid nor ignorant. Yes, there are better ways of working than the ways that we work. Yes, we don't know all of those ways, even though some people do. But _that 's true for you, too._ There are people who are ignorant about FP. There are also people who are both smarter than you and more experienced than you, who do not use FP _for good reasons._ But you and nbevans arrogantly tell us that once we learn enough, we'll see that you're right. Your inexcusable assumption that everyone who disagrees with you has to be both wrong and ignorant is why you're getting downvoted.

<comment><USER7> OOP people are too sensitive!

I still use OOP just not as much as I have another tool in the box (FP) that is sometimes (often?) more appropriate.

</comment></comment></comment></comment></comment></comment><comment><USER11> I think that contrasting OOP with FP brings too many implicit assumptions to the discussion. The value of immutability, for example, seems to be orthogonal to the technique used to structure a computation and is more closely related to the problem to be solved.

In my opinion OO languages popularized the idea of having separate internal and external representations by providing language constructs that made it practical. But they also promoted the coupling of data with the methods to manipulate it -- this is not a necessary characteristic of OO but it is common in popular implementations. This association of data and methods turned out to be a limiting factor in the face of changing (maybe unknown) requirements. The flexibility of more dynamic run-times that allow to mutate this relationship during execution (monkey patching) was not a satisfactory solution as it inhibits static analysis. In my experience this is generally the main motivation when looking into alternatives.

Modeling computations as dynamic data threaded through a series of statically defined transformation seems like a sensible solution to the issue. It also brings additional benefits (e.g.: easier unit testing) and makes some constructs unnecessary (e.g.: implementation inheritance). This approach is commonly used in FP languages and I think is the main reason why they are contrasted as alternatives.

Since it's not always possible or desirable to re-write a project, sometimes the technique is dismissed because it is confused with the languages that favor it. The relative lack of resources explaining how to use FP techniques in OO languages doesn't help either.

Separating the techniques from the implementations has practical value and it allows evolving existing bodies of work.

</comment><comment><USER12> One reason I think Objects and classes get a bad rap is the mutability and lack of intentionality that comes from getters and setters.

When the innards basically are laid bare by setters, you lose a lot of control of state and flow and object lifecycle that really hurts good design.

Looking at objects that need some kind of validation run on them, in many cases the validations aren't run every mutation but rather on some kind of save or persistence event, long after the validity of the object should have been checked.

OO can lead to great design, and there are some great techniques in FP, but average software written with either is probably terrible.

<comment><USER13> The point of getters and setters (rather than having public fields) have always been to control how an object's users access the internals of the object and how state is changed if at all. The idea that you should write them as a ritual or a boilerplate is just bananas.

In this discussion of major programming paradigms it is important to realise a couple of things: That this is very old discussion and that there are no clear winner. The productivity and usefulness of a language is ultimately shown when it is put to the test of big practical development projects. Currently business is dominated by the object-orientated languages (C#, Java, JavaScript, Objective-C, C++ etc.) and probably for good reason: The dominant problems that software spends its line count on seems to be things like user interface and interface to other "platforms/paradigms" such as relational databases, web services or data files. Object-orientation have arguably shown itself to solve these problems well.

</comment></comment><comment><USER14> That's a pretty underwhelming case against objects, and equally underwhelming in favor of functional programming.

<comment><USER10> Agreed. The problem is, what you're asking him to do is really hard.

Why was OOP considered a good idea? Before OOP, programs were just structs and functions that operated on them. But as programs got larger, that approach broke down. Someone on a team of programmers would create an instance of a struct, but would initialize it in a way that some function (written by a different programmer) would regard the struct as having an inconsistent state. Or some function, which was meant to only be a helper function for other functions that were the API, would be called directly by some ignorant and/or lazy programmer. The result was increasing chaos as programs got larger.

OOP was viewed as the fix to that kind of problem. It was somewhat successful as a fix, too.

So the problem with most of these pro-FP articles is that they show you small examples. But the pre-OOP style worked fine on the small examples, too. In fact, almost any style works on small examples.

And showing that I can write the same thing in fewer lines by using FP isn't the answer, either. It's like saying that your algorithm has a smaller scaling constant than mine does. That's fine, but _first_ let's talk about whether your algorithm is O(n^2) and mine is O(n log n). That is, if your approach scales worse than mine for large problems, then showing me that your way is more efficient for small problems completely misses the point.

But to build a convincing case for that, you'd have to do something like having a team of competent OOP programmers write a large-ish program (say, 10 person-years of work), and have a team of competent FP programmers write the same thing, and report on the results. Oh, yeah, and have the teams maintain the programs for five years. _That_ could be a convincing paper, because it would address the actual issues.

<comment><USER15> This is the argument I would use against FP. It's an open question -- to some degree.

Couple of notes. First, have you seen what real-world large-scale OO looks like? Dude, it ain't pretty. We're swimming in projects that are staffed at 10x or 20x the number of coders they probably really need, and a lot of time is spent in support activities.

Second, maybe the real question here isn't one of scale, it's how the model falls apart under strain. A good encapsulated system should offer you a bit more defensive programming protection than an FP one. But if you're using compsable executables, while testing at the O/S level? Meh.

I know why we went to OO. And let's not forget OOAD, a beautiful way of joining analysis and design about the problem with the solution itself. I'm of a mind that OOAD might live on even once the world moves to mostly FP.

I think maybe that OOP was a stopgap position; a place to try to build a firewall against the encroaching overstaffing associated with Mythical Man- Month management. Now that programming is a commodity, however, we're seeing diminishing returns. Don't know.

I am much less convinced of the "We need OO for large scale projects" argument now than I was two years ago. I expect this trend to continue. We might be able to solve the scaling problem with things like cyclomatic complexity limits on executables, or DSL standards. Not sure of the answer here, but I think we're going to find out.

<comment><USER16> Programming is a commodity? In a generation I hope so - now?

And to be fair I think that OoP and FP are the wrong paradigms for handling bad management of a large project. Open source methodologies are eating into that (I have just started at a major Fortune 500 with effectively a huge open source project inside it's employees) and even without that a good focus on risk management will help

In short, talking about your problems and taking early steps to resolve them will do more to fix a project than moving from OoP to fp.

</comment></comment></comment></comment><comment><USER17> All this FP revolt kind of start to remind me Whitehead's and Russell's attempt to invent a formal system which would be paradox free...

<comment><USER18> Martin-Lof Type Theory doesn't actually have any paradoxes in it.

<comment><USER19> Well, it does—Girard found one. It also has lots of troubles with equality.

</comment></comment></comment><comment><USER20> The Equality point focuses on Java's issue with string equality but doesn't mention that other OO languages let you overload == in order to provide the type of equality you want, such as C#.

</comment><comment><USER21> The OO being addressed here is the statically-typed variant made popular by C++ and its followers. Many of the points made (classes being types, interfaces, type variables, etc.) do not apply to dynamic OO languages in the Smalltalk vein.

There's even a footnote referencing Kay-style message passing OOP, but it suggests that message passing languages are not "available today in the mainstream". There are several major OO languages today based on message passing, so I don't know how that claim is justified.

<comment><USER22> Notably Ruby and Objective C.

<comment><USER23> Objective-C is probably the saddest story of any programming language.

Absolutely fantastic libraries, incredibly easy to write high-level abstractions over very low-level C code, and completely useless outside of one platform.

I wish projects like GNUStep would get more love.

</comment></comment></comment><comment><USER15> I've been taking a similar journey in my blog, where I talk about the difference in _thinking_ in FP and OOP. ( [http://tiny-giant- books.com/blog/real-world-f-programming-pa...](http://tiny-giant- books.com/blog/real-world-f-programming-part-2-types/) ) I use C# and F#.

I was at a Code Camp a few years back where one of the speakers was introducing F#. He was looking at a map function or some such on the screen and muttered something like "Well, you know, you can see the C# this compiles down to. It's all just a while statement. So there's really not much here."

At the time, I was concerned that he missed the point.

It's tough moving from 20 years or so in OOP over to FP. Whatever you do, you don't want to give folks the impression that you're just a fanboy for some new latest whizbang tech eye candy. Yet it's important to convey that there's something different going on here too. Yes, it's all just ones and zeroes, but while true, that observation is not important.

You reach a point where you say "You know, an object is just a function with closures. A function is just an object. It's all the same"

Yeah, it's all the same. But it's not. Just like that C# guy, you understand that at the end of the day all we have is state machines, but you missed the part about how thinking about things in various ways is better or worse for creating certain types of solutions.

This author tries to make the case for FP by taking apart the wild and wooly world OOP has become, where you're not just coding a solution, you're creating a extension to the type system for your very own stuff. Very cool stuff. But I think once you go down that path, you're arguing the wrong thing.

Thinking about problems in pure FP leads to small, composable functions. These group into small, composable executables. These can be scheduled and pipelined across many different O/Ses, networks, and machines. This land of unix-like coding has a multi-decade track record and solid tools that any administrator can use and understand. Thinking in terms of object graphs almost inevitably leads to very complex and nuanced solutions, with lots of hidden dependencies, that only work under certain conditions, and where you may need an expert or two around to help out when things go wrong.

FP is not nirvana. Nothing is. But it is very refreshing to have it solve the same old problems in a much less complex way. I don't see any future except for pure FP -- although my money says it might be 20-30 years until the industry catches on. Now's a good time to get an early start!

<comment><USER5> I wonder how much of the "small, composable functions" nature of FP can be attributed to the types of programs you write in functional languages, and the types that you don't.

Unix-like tools such as grep (or ghc) are very much like pure functions: programs that accept input, and produce an output data. It's not surprising that they lend themselves well to FP techniques. But other programs, like the web browser I'm using now, have lots of "inputs" and "outputs." There's many knobs that can be turned, and output goes to screen, disk, network, other programs...

I suspect these programs have a larger essential "hairiness." grep only has to search text. But Find in a text editor has to show a progress bar, cancel button, intermediate result count, etc. These features are intimately intertwined with the algorithm itself, and that's often hard in FP. Try writing a Haskell function that does text find/replace with live progress reporting. It's not easy, and it ends up looking a bit like Java.

Note that the land of unix-like coding isn't very good at UIs either!

<comment><USER15> Great question!

I'm finding that FP tends to shave the "hairiness" off things, many times in ways I had not anticipated.

UIs are a completely different animal. I've done a lot of UI stuff in the OO world in the past, and some in C/C++. The couple of apps I wrote in F#? I ended up doing a kind of functional-reactive thing. I really like the FRP paradigm for UI work, but I need a lot more experience to say anything useful about it. One of the things I started doing was setting up derived types from Win32 objects. Looking back, with that kind of attitude I was probably headed down the wrong road.

A web browser, eh? that's very interesting. One of my projects does some screen scraping. I found that scraping could be done in a pipeline -- get the page, score the sections, run some rules, do some QA, etc. Each stage did some work and left things for the next stage. But, of course, I was processing many pages at the same time. Rendering one page for a user sitting in front of a screen is a completely different scenario. I think.

Writing a pure FP browser would be a hoot.

</comment></comment></comment><comment><USER24> First I'll comment on footnote #1 in the text:

> "Here, I refer to OO concepts as available today in the mainstream. > Initially, objects were planned to be more like autonomous cells that > exchange messages, very similar to what the Actor model provides. [...] "

There is _absolutely nothing_ in modern OO languages (Java, C++, C#) preventing you to design systems as if object instances were actor instances with method invocation corresponding to message passing. His text criticizes therefore the wide-spread (mis)understanding of OO, _including his own_.

Second, he equates "concurrency" with "shared memory, mutation-based concurrency". Well, there's message-passing too, and it works perfectly fine in OO programs.

\---

His problems with OO stem _exactly_ from the reductionist approach of OO=encapsulation+polymorphism. If you make the object ~ actor conceptual jump, you'll suddenly get a new perspective on how to use objects in program design.

(In the actor model, actors do _not_ share state and are conceptually immutable. However, there's a "become" operation which the actor can use to change its future behavior on incoming messages, in effect giving you means to implement a memory cell -- not that you'd really want to do it.)

</comment><comment><USER25> Another article that fails to see mainstream FP languages are actually multi- paradigm.

First of all the article fails in a few points regarding OO programing.

Single dispatch is not a synonym for OOP, Common Lisp, Dylan, Julia are all examples of languages with multiple dispatch.

Second, unless Erlang, Miranda, Caml Light, Standard ML, Scheme, pure Lisp are being used as examples of FP, most certanly the language will have support for some type of OOP.

The only difference is if the language is functional first or object first, concerning which paradigm is usually the one to reach to first.

I guess we need to have a few blog posts with UML examples mapped to OCaml, F#, Clojure, Common Lisp, Haskell.

At very least it would make these comparison posts focus pure FP languages, I guess.

</comment><comment><USER26> It does not follow that a poor OO implementation in one language (Java) means all OO is poor (and, in fact, the article agrees with this when it decides Haskell is an ok way to do OO).

Yes, _every_ concept in OO can be accomplished without OO and, in many cases, are reduced implementations of more general concepts, so polymorphism is a simplified kind of type-based function dispatch. The power comes in the consistency and in the simplification itself. Instead of having multiple implementations of polymorphism that have to be developed and managed by multiple teams, you have one that is developed and managed by the compiler and understood by everybody who writes the language.

Java was very opinionated about certain aspects of OO, missing the mark of why OO is valuable in some places. It also made some very poor decisions in the implementation of its VM (int/Integer, ==/.equals) that made things worse. Finally, living in the Kingdom of Nouns[1] just sucks. But this feels like a lispers rant against Java more than a true critique of object oriented programming.

1\. [http://steve-yegge.blogspot.com/2006/03/execution-in- kingdom...](http://steve-yegge.blogspot.com/2006/03/execution-in-kingdom-of- nouns.html)

</comment><comment><USER14> One thing where I think OOP is particularly elegant compared to FP is refinement.

Say I have a class with five methods on it. I realize I need to create a new class that has almost the same behavior: I want to reuse four of these five methods but the fifth one is different. This is a very common problem.

This is trivial to do in OOP: create a base class, override the method whose behavior you need to change, done.

I've never found an FP language that makes this as elegant.

</comment><comment><USER27> It seems to me that everyone is missing the point behind object-orientation.

Object-orientation sucks for everything except user interfaces. If you don't believe me, try writing a UI library without objects and see what happens. UI is OOP's best (and only compelling) use case.

For all other algorithms classical data structures/ADTs are much better. If you don't believe me, try writing an OOP compiler.

<comment><USER28> I write a lot of interactive SVG based user interfaces in JavaScript and always default to using "classes" to represent composable elements in the UI. I've recently been wondering about whether writing UI code with a functional language would even be possible. When it comes to data manipulation though I will _always_ use underscore.

<comment><USER27> My thesis is that by trying to write functional/imperative UI code you will create your own ad-hoc OOP system.

</comment></comment></comment><comment><USER6> I think you've confused "intensional" and "extensional".

("Intensional" means "identity determined by structure"; "extensional" means "identity determined by behavior". You seem to use them in the exact opposite sense.)

</comment><comment><USER29> I'm not a good programmer but I've never understood OOP. For me it feels much more logical to work with pure functions with consistent output based on input. At work I'm told to use more OO but it feels really enforced and not intuitive at all. The only time it makes sense for me is in game development where you have many entities of the same type that all have their own states.

I feel I should learn OO properly and maybe try Java or something where you have to code OO. On the other hand I also feel I should go with my gut feeling, forget about OO and just learn FP instead. It feels wrong though to "skip" OOP seeing most serious programmers seem to have a background in it. What do you think?

<comment><USER22> The secret about real world Java applications is they tend not to be very object oriented at all, in the way OOP is taught in textbooks.

Interfaces are very heavily used, along with dependency injection (boy, do Java programmers love their dependency injection).

Inheritance is now widely discouraged. "Java Beans" are everywhere, which are glorified structs breaking every single rule of encapsulation.

Java runs fast, is garbage collected, has great support for multithreading, great Unicode support, and many other advantages. But it's certainly not very object oriented, especially in the Alan Kay sense.

</comment></comment><comment><USER30> What does large scale applications look like in Haskell or Cloujour? Why can't both co-exist? Can we have a humanized OO language that compiles to something immutable?

</comment><comment><USER31> Pattern matching seems very limited compared to subclass-based method dispatch. Using pattern matching requires you to know every case in advance. But most "standard" OO languages allow subclasses to be created without touching the original base class. This allows injecting new behavior into existing systems. AFAIK, pattern matching alone can't do this.

<comment><USER32> That's because it is limited. It's not meant to be a way to provide polymorphism. One of the things that it does provide is the knowledge of every possible case and a reminder from the compiler if you missed one. This is not possible in many OO language.

FP languages have different ways to inject new behavior. You could for example define a function a -> (a -> Int) -> Int. This function now works for any type for which you can also provide the "interface" a -> Int.

<comment><USER33> You could also define a typeclass Intable, and a function (Intable a) => a -> Int, which will work on any type that implements Intable.

</comment></comment></comment><comment><USER34> The whole OOP vs FP argument is like food vs drinks argument. I am empowered and capable of using both. What is the problem?</comment>


'Smart glasses' help fix failing vision - <AUTHOR> http://www.bbc.co.uk/news/health-27768890

<comment><AUTHOR> It's great to see different solutions to tackling vision loss/blindness. It doesn't seem like it will be too long before people using these types of glasses will have better vision (thinking Geordie!).

The trouble is the prototypes are often very clunky, but with things like Google Glasses I see the prototypes getting to be near 'invisible' like modern hearing aids.

<comment><USER2> Saw the report this morning on the BBC impressive technology, real time high fidelity edge detection (looked something like a Sobel but they where correct for depth of field and it looked like closer objects had more detail).

They are looking at using something like [http://www.epson.co.uk/gb/en/viewcon/corporatesite/products/...](http://www.epson.co.uk/gb/en/viewcon/corporatesite/products/mainunits/overview/12411) (showed on the report) for the next generation.

<comment><AUTHOR> That looks impressive, a lot less bulky. I know applications are wider than for people with vision loss. Especially if it's opened up to application development through Android or similar like indicated.

</comment></comment></comment><comment><USER3> I am disappointed: I hoped the article was about a kind of glasses that would slowly improve your eyesight by keeping your eyes under constant exercise.

<comment><USER4> Can you even fix eyes like that?

<comment><USER5> Actually, yes. Most doctors would call it fringe science, but I've been able to improve my eyesight with what's called Plus Lens Therapy. It has you wear glasses that are the opposite of those you've been subscribed, or that are significantly less strong, and using them while actively trying to focus at the edge of blur, e.g. by reading a book and keeping it far enough away so it's ever so slightly blurry but not too blurry either, forcing your eyes to clear the image. It's not clear why it works – do your eyes actually start changing their shape, or is it simply the eye muscles that get stronger? – but if you're willing to put in the months and months of effort it requires, for many it does help.

See [http://gettingstronger.org/2010/07/improve-eyesight-and- thro...](http://gettingstronger.org/2010/07/improve-eyesight-and-throw-away- your-glasses/)

<comment><USER6> You may want to see this: [https://news.ycombinator.com/item?id=7266233](https://news.ycombinator.com/item?id=7266233)

It could be a neurological thing. Their visual system gets more practice but the eyes themselves don't change (just speculation.) But there are now better methods of doing that which are (supposedly) very effective.

</comment></comment></comment></comment><comment><USER7> Off topic really but check out Google Scholar for a fair number of papers showing that anthocyanins (colored fruit and vegetables) work positively in terms of eye function.</comment>


Design better Web pages with Firefox extensions - <AUTHOR> http://www.linux.com/feature/126439 <comment><USER2> FireBug and Web Developer plugins are all I need.

edit: I'm going to try that GridFox, sound interesting.

<comment><USER3> Don't forget YSlow.</comment></comment>


One problem worth solving: how to choose an area to live in ? - <AUTHOR>

I thought to share this with all of you. One of the biggest problems I have constantly faced is deciding which area to live since I have moved many times in my post college days until now. Obviously, there are guiding factors such as place of employment, family, friends, preference (city life vs suburbian) etc. What if there was an app that interactively asks us these questions and suggest some zipcodes/places to live ?<p>I for example want to know that if I work in NYC and my spouse works in the suburbs of NJ (actually true in my case), where should we buy a house? Logically, should be somewhere in the middle of the 2. but where, why, how ? May be we are not as interested in good school districts at this time? May be I want to live at a walking distance from a major train/bus station ? Possibilities are endless here. <comment><USER2> I've been moving around a lot lately myself and been looking for something that can help solve the same problem, but the thing is the problem is quite complex. Where we want to live isnt necessarily somewhere we can afford, and somewhere we can afford, isnt necessarily where we should live. Then there is consideration of amenities and distance from relatives and so on.

Given all these variables and equations if everyone had an app that helped them pick the best spot, my guess is, some areas would get focused on much more heavily than others causing a rather skewed increase in demand for some areas.

Anyway, maybe just going on off a tangent here, but certainly the idea could do with further exploration.

<comment><AUTHOR> Good point. But the idea is not to suggest an exact match but recommendations based on the user's preference/inputs. It could be different for everyone of course.</comment></comment>


HTML5 Anonymous Bitcoin Poker - <AUTHOR> https://www.bearcoinpoker.com

<comment><USER2> The only gambling occurring is the gambling that this is a trust-worthy implementation of multi-player poker.

<comment><USER3> Fair enough, but you stand to make a lot more from being trustworthy than not... I think this is an excellent idea.

<comment><USER4> > you stand to make a lot more from being trustworthy than not...

What? How do you justify that conclusion? That seems at odds with most of the history of gambling.

You make the most money if you _appear_ trustworthy but aren't.

<comment><USER3> No. Casinos are trustworthy, or at least you know the house always wins :-)

</comment></comment></comment></comment><comment><USER5> I experimented with this a few years ago. Even going as far as creating [https://bitflop.me](https://bitflop.me). I came to the conclusion that the future legal battles would just not be worth it.

<comment><USER6> is this project in development?

<comment><USER7> > I came to the conclusion that the future legal battles would just not be > worth it.

So, no. Wise decision, at least if you're Stateside. Government wants to preserve its monopoly on gambling.

</comment></comment></comment><comment><USER8> What assurances are there that the house isn't cheating?

<comment><USER9> The house makes money from rake. This means it's not in the house's interest to enable any cheating, since cheating makes the house less trustworthy, and therefore, there is less rake being generated.

<comment><USER10> Unfortunately the criminal mind discounts the possibility of getting caught. There have been several big scandals of this sort in online poker. Scams at Absolute, Full Tilt and others have been uncovered.

<comment><USER9> Most poker-room scandals are separate from the house cheating and more to do with bad accounting/book keeping practices and out right stealing.

The Ultimate Bet / Absolute scandal involved super-user accounts being used to reveal hole-cards of opponents and that most certainly _was_ cheating.

The end result is that room went down in infamy and most of the people associated with it at the highest levels are looked down upon in the poker community.

On the other hand, Poker Stars ended up picking up the tab for Full Tilt, which is now a fairly trustworthy room thanks to Poker Stars' management.

<comment><USER11> Not to mention that fult tilt probably could have gotten away with it indefinitely if they weren't shut down. They were basically practicing a form of fractional reserve.

</comment></comment></comment></comment></comment><comment><USER12> I deposited 0.6 btc, messed around with the site a little bit (didn't play a single game) and ended now there's only 0.07 btc on my account.

I'm not sure if losing your customers coins is such a great business model.

<comment><AUTHOR> Please provide me your username, I'll check and make sure this never happened.

</comment></comment><comment><USER13> how does it stop collusion at the tables ?

<comment><USER14> Look left; look right. If you're not colluding with either of those guys, then they're probably colluding against you. :-/

<comment><USER15> Not reassuring. If there's money to be made, people will try to make it. It's reasonable to assume a group of friends would take a weekend trying to collude at poker.

There are a few things you could potentially do to make it not worth their time. The first is to take money before assigning a table, and then randomly assigning the person. The second is to have the house take such a large cut that even with collusion it's not profitable.

You still have to worry about Sybil attacks. It's one thing for me and my 3 friends to play poker together and try to land at the same table. It's another for me and my 1000 bots at different IP addresses (bots who will, of course, play computationally perfect games and collude any time they are at the same table) to try and beat the odds.

</comment></comment></comment><comment><USER16> I think a site like this can easily make more money then say a drug-store on darknet, but perfectly legal.

There are some challenges though, like multi account cheating, and bot players.

<comment><USER17> I thought online gambling was generally not legal.

<comment><USER18> I'm in the United States. To my knowledge online gambling is not strictly illegal, but it's illegal for online casinos to send or receive money to or from any banking or crediting organization, therefore preventing users from transferring money into casino accounts. Bitcoin is still in a weird realm where it's considered property rather than a currency, which I imagine would make it similar to gambling with gold. (My knowledge is outdated by a couple years, so please correct me if I'm wrong.)

<comment><USER9> This is my understanding, as well.

The anti-gambling/anti-poker laws from "Black Friday" in 2011 actually have to do with banking and USD.

This is why there are actually several US-facing card rooms operating out of country semi-legally - they do not do banking in the US, so they are not afoul of laws in most states. I believe New York is a notable exception along with a few other states which sites like Bovada will not accept US users from.

<comment><USER19> i'm mildly terrible at poker, but trying to improve. unfortunately, it's hard to practice unless money is on the line. i'd like to be able to play online (with smaller blinds and rake than a brick and mortar casino). i'm not interested in being able to "cash out" ... it's a purely money losing proposition because of my lack of skill

any idea if there's a way i could play on any of these sites in this manner ?

<comment><USER9> The crypto currency sites I'm aware of such as seals (swcpoker.eu), shibes (pokershibes.eu), and betcoin (betcoin.ag) all have "microstakes" levels.

On the other hand, all of them have low volume of users, so you may not find a game immediately on any of them.

</comment></comment></comment></comment></comment></comment><comment><USER20> Using something like Ethereum, it's actually possible to prove that the house is fair: [https://forum.ethereum.org/discussion/comment/2944/#Comment_...](https://forum.ethereum.org/discussion/comment/2944/#Comment_2944)

It involves a clever trick for keeping hole cards and the deck initially secret, despite the fact that everything in the blockchain is public.

</comment><comment><USER9> It seems like the basic poker-game-algorithm is broken here. I have been able to play without paying blinds, which is not how poker works, generally.

<comment><AUTHOR> Ahah, yeah, that's a quick bug we introduced today, you were able to join a table without paying the first blind :D It's been fixed for a few hours now :)

</comment></comment><comment><USER21> frequently loses connection and when i reconnect the old dealt cards for a hand are not redrawn, only the newly dealt cards for that hand are drawn.

<comment><USER22> That's a feature. Don't want to look like a noob, peeking at your hole cards more than once...

<comment><AUTHOR> Thanks for the bug report, fixed now :)</comment></comment></comment>


NIPS 2016 Spotlight Videos - <AUTHOR> https://nips.cc/Conferences/2016/SpotlightVideos <comment><USER2> Clicking through these out-of-order, I happened upon this one: [https://www.youtube.com/watch?v=SWR5Z4HWxbM](https://www.youtube.com/watch?v=SWR5Z4HWxbM)

It's definitely different from the others on the list, and I quite enjoyed it :)

</comment><comment><USER3> fwiw, I made a playlist out of it - [https://www.youtube.com/playlist?list=PLqQszSyK-y5hxeYoPr6qX...](https://www.youtube.com/playlist?list=PLqQszSyK-y5hxeYoPr6qXkx6yicYeFQlk)</comment>


China flight systems jammed by pig farm's African swine fever defences - <AUTHOR> https://www.scmp.com/news/china/society/article/3042991/china-flight-systems-jammed-pig-farms-african-swine-fever <comment><USER2> > Chinese state media reported last week that gangs were exploiting the > African swine fever crisis by deliberately spreading the disease by using > drones to drop infected items on to pig farms. The farmers are then forced > to sell meat cheaply to the gangs, who then sell it on as healthy stock, > according to China Comment magazine, which is affiliated to state news > agency Xinhua.

WTF, China?

<comment><AUTHOR> This story really has it all.

Drones, aircraft, electronics jamming, industrial farming / animal husbandry, epidemics, and organised crime slash terrorism.</comment></comment>


What Makes the Thunderbolt Cable Lightning Fast - <AUTHOR> http://www.ifixit.com/blog/blog/2011/06/29/what-makes-the-thunderbolt-cable-lightning-fast/ <comment><USER2> Can anyone explain why the chips need to be inside the cable? why cant they be inside the hosting device port?

<comment><USER3> [http://arstechnica.com/apple/news/2011/06/why- apples-2m-thun...](http://arstechnica.com/apple/news/2011/06/why- apples-2m-thunderbolt-cable-costs-a-whopping-50.ars)

"active cables are commonly used at data rates above 5Gbps. These cables contain tiny chips at either end that are calibrated to the attenuation and dispersion properties of the wire between them. Compensating for these properties "greatly improves the signal-to-noise ratio" for high-bandwidth data transmission."

<comment><USER4> Instead of the cable actually managing this itself, though, couldn't the cable just contain a single, simpler chip containing the metadata on the cable's particular make and properties, which would allow the host port (and client port) to perform variable compensation based on the information received? I suppose this would create a more complex low-level protocol, or possibly require more pins, but for a "universal connector" type of cable I imagine they're going to see a lot of wear, so I would have imagined moving hardware out of them would have been a goal...

<comment><USER5> Separation of concerns and flexibility for the future are probably what drove this design decision.

<comment><USER6> It is probably cost. Motherboards are high-volume products, and therefore the engineers who design them are fanatically cost sensitive. Adding $5 to the bill of materials for a feature that hardly anybody needs would be a career limiting move. Conversely, the people who actually need a 10 Gbps links are exactly the people who can be up-sold to a $50 cable.

In a few years it will be everywhere natively: competition will have driven the parts cost to pennies per board, and average customers will be demanding it.

</comment></comment></comment></comment></comment><comment><USER7> Read the article and still don't know why it's lightning fast. All cables are lightning fast.

<comment><USER8> Presumably these cables are _greased-lightning_ fast

</comment></comment><comment><USER8> I predict Monster Cable offers gold-plated chips in their cables

<comment><USER9> I'm waiting for the Triple-Oxygen Free cables.

<comment><USER10> For the uninitiated: electricity + O2 = O3 (aka ozone; aka that smell you get from electric motors, e.g. electric slot cars).

<comment><USER11> Apologies for my layperson chemistry, but if the source of O2 is CO2, would that explain the streaks of carbon residue on the track?</comment></comment></comment></comment>


China Obstructs Hunt for Covid-19 Cure by Canceling "Promising" Gilead Study - <AUTHOR> https://www.zerohedge.com/geopolitical/china-obstructs-hunt-coronavirus-cure-canceling-promising-gilead-study <comment><USER2> It was known from early on that the arm for severe cases had trouble recruiting the target amount of patients. The study design clearly forbade patients who had received prior treatments with other antivirals. In the beginning when testing was scarce and hospitalization was very delayed that was not an issue for recruitment. As tests became more available and patients were hospitalized earlier and with national guideline recommending antivirals it became increasingly harder to recruit patients who could meet stringent trial conditions. It is likely that they ended that arm early so that they could deblind the trial and publish the data sooner. If they really wanted to withhold information the way to do it is to prolong the trial so that data could not be published at all.</comment>