The iPad's new cursor and keyboard - <AUTHOR> https://techcrunch.com/2020/05/06/how-apple-reinvented-the-cursor-for-ipad/ <comment><USER4> Having used the iPad with a mouse and now a trackpad for a while, I've got to say I don't like the mouse cursor turning into the button. It feels like the cursor gets "trapped" in the button, and often I can lose track of which button has focus since the hint can be rather subtle on some buttons.

Mostly, I just want a normal mouse cursor.

Of course, Apple isn't designing for a user like me, though, I'm really not sure what user they've designed this mouse cursor for.

<comment><USER5> You can turn off that behavior in accessibility settings, then it behaves like a normal mouse.

<comment><USER6> It is interesting how Apple's accessibility menu is growing to control so many aspects of UI. I still have this notion that "accessibility" are mostly settings for people with special needs, not with different UI preferences

<comment><USER7> I'm not sure if it's deliberate or not, but it seems like a subtle way of reducing the stigma of standing out when needing accessible accommodations to work effectively with computers. Keeping tweaks to UI behaviors to accommodate ways folks have to work along side with ways folks _like_ to work blends them all together.

<comment><USER8> It's not "political", it's devs realizing that real humans have different interface needs. We're all "disabled" from the point of view of a computer: computers have no need for silly mouse and keyboard and monitor for getting work done.

<comment><USER9> All art is political, it turns out.

</comment></comment></comment></comment></comment></comment><comment><USER10> This article uses a number of enormous GIFs instead of videos. Please don't ever do that. They're drastically wasteful of bandwidth (16MB should have been much less), ignore the user's "don't autoplay videos" preference, yield lower quality results, and load extremely badly.

<comment><USER11> It also completely hijacks the back button on iOS Safari for me. It's impossible to leave the site by pressing back or swiping.

<comment><USER12> Yeah, you have to long press on the back button and then select the previous site from the history dropdown. I hate sites like this, and actively avoid them

<comment><USER13> This has been annoying me too. I'll definitely be avoiding TechCrunch now.

What I don't understand is, what exactly are they trying to do? Is this just a bug, and it's only supposed to hijack the back button once? I can see (reluctantly) how a single hijack might nudge users to stick around longer, but surely there's no upside to infinite hijacking...?

<comment><USER14> > _what exactly are they trying to do? Is this just a bug_

It might be important for SEO:

 _It assesses the number of people who leave your page by hitting the back button to return to the search listing page. If Google sends 1,000 people to one of your web pages and each of those 1,000 people hit the back button within a few seconds, it tells Google your web page isn't relevant._

[https://www.quicksprout.com/ranking- factors/](https://www.quicksprout.com/ranking-factors/)

<comment><USER13> Ugh, that's nasty!

Sounds plausible, though.

</comment></comment></comment></comment></comment></comment><comment><USER15> I've been using a mouse on my 2016 iPad 9.7" iPad for a few days now. Here are my thoughts:

\- Anything related to selecting or copying text is improved, including web browsing.

\- Sometimes right click brings up context menus and sometimes 'long left click' brings up context menus. Sometimes both work but with different options.

\- I would like to change the cursor to an arrow pointer.

\- I would like to change the scrolling direction (it's the opposite of Windows).

\- Scrolling doesn't feel smooth, many people report different scrolling issues.

\- You can assign different actions to different mouse buttons, this has made multitasking more efficient for me.

<comment><USER16> I don't think you will ever be able to change the cursor to an arrow pointer because Apple is more interested in being different than they are interested in being useful.

This became very clear to me when I realized that you have not ever been able to even change the color of the pointer in macOS, nevermind the shape. I wanted it to be white so it would stand out more. Apple doesn't care - <USER2> are too busy projecting style to care about users petty practical needs.

<comment><USER17> I remember doing this with ResEdit, on Mac OS 9. Not sure if it was ever possible on OSX

<comment><USER18> Don't think there was ever a setting for changing color and cursor shape native in macOS (though size and such is in Accessibility), but it's always been possible by digging into the system a bit (just like all the icons are simply .icns bundles in /System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/ and can be easily replaced to change the mediocre current icons with better ones). There have long since been many 3rd party utilities to make it easier/more automated, though some of them seem to have gotten abandoned. Here's an open source one called Mousecape if you're curious for example, but you have to fork it and remove the sparkle framework to make it work in 10.15:

[https://github.com/alexzielenski/Mousecape](https://github.com/alexzielenski/Mousecape)

There's various commercial pointer modification utilities, as well as simpler highlighter-effect ones like Mouseposé and Pinpoint.

Theming on macOS was a big awesome thing at one point, kind of too bad it seems to have fallen away a bit (in part because Apple's new security efforts have made it ever more work). At least it's still doable though.

</comment></comment></comment></comment><comment><USER19> Unrelated to the post, but related to TechCrunch: is there a way for me to prevent them from hijacking my back button? There's nothing more frustrating than clicking back to go to my previous page, only to be redirected to the same exact page I already am on.

<comment><USER20> They ruined this site with the automatic "smooth" navigation to other stories and the homepage. I don't know anyone who likes it.

<comment><USER21> I don't think it's designed with us users in mind. It's likely designed that way so they can boost story views (which allows them to sell more ads)

</comment></comment></comment><comment><USER22> "The iPad is the most versatile computer that Apple makes" ??

Bro, I can't even run extensions in my browser. Not to mention the other things you can only do on a real computer. It brings nothing except for touch, but loses a lot of things.

<comment><USER23> It's an odd statement. It's literally less versatile than a laptop or desktop because you can do much more on a laptop without being locked down

</comment></comment><comment><USER24> The nice thing about the "linear" spaces on MacOS and Windows is that in the vast majority of cases there's a 1:1 mapping between the pixels on the screen and the UI elements.

What makes me nervous is when they start making the pointer space non-linear. Is there a risk that you just can't get the cursor to activate a part of the screen because it keeps getting sucked into a nearby control? Or is the pointer space just a reversibly-warped version of the screen space?

<comment><USER25> Most likely the Human Interface Guidelines that Apple enforces for all of their software is a major enabler for this, as it mandates minimum touch areas and spacing that should eliminate that type of issues. No other platform has as much native UI adoption - used to be the case for Mac too until Electron and others came along.

<comment><USER26> Do minor platforms count? I suspect Sailfish has higher native UI adoption. IIRC back when I had a Sailfish phone, all the apps I used including the third-party ones used the same standard UI elements.

<comment><USER27> They probably meant out of the platforms Apple competes with. Presumably I could find a platform with, say, 12 users and only 1 non-native app, and if that app followed native UI guidelines I could say it has 100% native UI adoption and thus the "highest" out of every platform ever, but that is a useless statement.

</comment></comment></comment></comment><comment><USER28> My only gripe with the smart keyboard is the touchpad uses a mechanical button for clicking. It feels clunky compared to the crispness of the last few mbp generations which use a haptic electromechanical component to (perfectly) simulate a click feel.

<comment><USER29> Wow. This so perfectly simulated a click feel for me that I didn't even know this was a fake click until reading your comment.

<comment><USER30> I've known it's fake for years, and I still feel like it's moving.

<comment><USER31> Right? It's a masterpiece in design. I know, I look, and I still feel the movement of a click. How?!

</comment></comment></comment></comment><comment><USER32> Although like many I probably would prefer a traditional cursor, I appreciate that people are exploring the possibilities of the space. I hate change for its own sake. But there are so many choices that go into graphical user interface design. Even if we've hit a local maxima, I don't think we've hit on the best paradigm. We've only been at this for ~60 years or so. Not to mention the personal preference that goes into this. Keep exploring! Keep experimenting! (Just please don't force me to change how I use my computer against my will.)

</comment><comment><USER33> I don't think this (meaning the cursor) is "reinventing" anything, it's actually a work around because the iOS UX doesn't have good non-touch affordances. It will be dumbed down over time, and apparently you can turn it off.

<comment><USER34> Android devices, with a mouse or trackpad connected (e.g., Asus Transformer series), have shown an alpha-blended disc instead of an arrow pointer since forever ago, so not even that bit is an Apple innovation.

<comment><USER8> Custom cursors have been in OSes for decades.

</comment></comment></comment><comment><USER35> I just have to chime in on this. While I don't use the mouse with an iPad on a daily basis, I have found a new use for it yesterday.

Once every <insert-some-time-frame> I start missing games and decide to play something. I have a dedicated relatively powerful PC for that. What I have recently found out is that I can play XCOM2 on my PC through my iPad with Steam link. The experience was good enough out of the box but the way the cursor was controlled through an iPad screen felt a bit out of place.

Yesterday, I suddenly realized that I can use a Bluetooth mouse with my iPad and holy crap, the experience is like playing on the PC but I am not attached to the desk! There is only one minor issue of not being able to move the mouse to the bottom of the screen without triggering the applications bar, but this was not too annoying.

Not sure how important this is to anyone, but I was amazed that I could do this.

<comment><USER36> > not being able to move the mouse to the bottom of the screen without > triggering the applications bar

Is it possible to fix that by using the method described here? (start at 1:10 mark):

[https://youtu.be/7dxLcr68lLc?t=71](https://youtu.be/7dxLcr68lLc?t=71)

<comment><USER35> Oh my! This is amazing! It is exactly what I need to fulfill the picture!

To those, who can't or don't want to watch the video: you can configure iPad to lock you in a single app and unlock with either biometric or pin entry. This is available in the accessibility settings.

<comment><USER36> I think this is what a lot of those restaurants like Sushi places use on their iPads.

</comment></comment></comment></comment><comment><USER37> Article is an editorial content advertisement.

<comment><USER38> Breathlessly worded and everything as well, I mean, nobody in tech would genuinely describe a fucking cursor on screen as "This stir fry of path prediction, animation, physics and fun seasoning is all cooked into a dish that does its best to replicate the feel of something we do without thinking: reaching out and touching something directly." That's lifted straight out of an Apple ad. Unapologetically plastic.

</comment></comment><comment><USER39> This was btw invented in Finland by the failed kickstarter project, the Solu computer:

[https://www.kickstarter.com/projects/676993694/solu-a-new- br...](https://www.kickstarter.com/projects/676993694/solu-a-new-breed-of- computing)

For people understanding finnish, this podcast tells the whole story:

[https://areena.yle.fi/audio/1-50499091](https://areena.yle.fi/audio/1-50499091)

<comment><USER40> Too bad they failed. I want one.

</comment></comment><comment><USER41> The new cursor is like being handed a jumbo marker when you are used to a fine point pen. I've been using iPads since the second one came out and I think Apple is just as confused about making a mobile interface into a desktop as Microsoft has been making a desktop interface into mobile. The iPad has never been more powerful, confusing and unintuitive.

</comment><comment><USER42> Reminds me of Android's "Show Taps" option in developer settings. Albeit with much more physics and animation.

<comment><USER43> It's sad that this is a hidden option; I can't imagine using a capacitive touchscreen that _didn 't_ do this. The instant feedback on an input channel as fiddly as that is simply invaluable.

</comment></comment><comment><USER44> Link redirects me to `guce.advertising.com`, which my adblock blocks. If I unblock it, it redirects to yahoo, where I have to agree with YAHOO's terms of use, and only after agreeing I'm taken to techcrunch's home page.

When did the web become such an unusable place?

<comment><USER45> You've got a point here about the complexity of the web or maybe advertising models, but it's hard to criticize usability when you have installed a browser plugin that breaks it. Use the thing or don't, but don't complain when your own reassembly of the product doesn't work.

<comment><USER44> The web is a lot more unusable WITHOUT adblockers.

In any case, even disabling the adblocker resulted in multiple redirects and having to accept multiple privacy policies before seeing the article.

</comment></comment></comment><comment><USER46> Slightly off-topic but I glad that the article mentions "Mother of all demos" [1]

I watched this for the first time last year and I was shocked - <USER3> Engelbart demonstrated what happens after 50 years. The mouse is the least amazing one but the demo featured real-time video conferencing and Google Docs-like real-time word editor with shared mouse pointers.

It is hard to believe it's 1968 and he actually implemented them 50 years ahead.

[1] [https://youtu.be/yJDv-zdhzMY](https://youtu.be/yJDv-zdhzMY)

</comment><comment><USER47> Now that I'm using the trackpad on the iPad for a bit I wish websites also had a way to make the cursor behave like this.

Maybe it could use role="button" as hint?

<comment><USER48> Hopefully Apple patented it and I won't see it on websites, normal cursor works fine.

</comment></comment><comment><USER49> I haven't tried the mouse/trackpad on the ipad, but it looks really fun to use. Kind remind me of how much fun, simply scrolling on the iPhone was, back when it was released.

I am not, however, investing over 1.000 USD just to play with it. Has anyone build a demo I can play with from a laptop?

Also, I wish the bubble would deform when entering and exiting an icon.

<comment><USER47> @ USD 1000:

you can try this with a bluetooth mouse using any iPad that supports iPad OS

(you don't need an iPad Pro + Magic Keyboard w/ Touchbar)

[https://en.m.wikipedia.org/wiki/IPadOS](https://en.m.wikipedia.org/wiki/IPadOS)

<comment><USER50> I've been using a BT keyboard & mouse (Logitech Keys & MX Master 3) with my iPad since they announced the proper mouse support. Combined with the USB-C to HDMI multi-port adapter (which provides a USB-C pass-through port, USB-A port, and an HDMI port), it's close to using a desktop.

I'm used to coding over a terminal, so I use the app Blink Shell to do anything like that since it fully supports external displays (most apps and the iPad interface will display windowboxed). Blink is open-source, and they provide instructions on their github repo, but you can also fund the project by buying it via the App Store.

<comment><USER47> Blink is great, can highly recommend as well

</comment></comment></comment></comment><comment><USER51> Unrelated to the actual article but the animated headline/hero image nauseates me. It's such a huge and inappropriate area for animation in general much less a choppy loop of a glaring bright iPad screen.

</comment><comment><USER52> Jesus. It's a dot, not a fusion reactor.

</comment><comment><USER53> Can't Apple throw more money at revolutionary stuff rather than at evolutionary stuff that already works just fine?

</comment><comment><USER54> I can't even click the link, it's going through an advertising netwok, and is blocked by my DNS

</comment><comment><USER55> Absolutely atrocious writing

<comment><USER56> Disagree. Perhaps not your style.

</comment></comment><comment><USER57> I get angry just watching it.

</comment><comment><USER58> I think this is another sign that iOS/iPad OS and Mac OS are converging. If I had to guess, once Apple adopts ARM processors for the Mac, there won't be much of a distinction between the two.</comment>


Shanghai: 1990 vs. 2010, one picture says it all - <AUTHOR> http://i.imgur.com/AqNdG.jpg

<comment><USER2> Words fail me. Although this provokes wonder about everything from sustainability to the forms of social and artistic evolution that are taking place in the midst of such rapid change, as soon as I look back at the photo _any_ observation I could possibly make looks laughably trivial. _20 years_.

I know we have had spy satellites operating for that long and more, and presume several of them have been tasked with watching China almost as closely as we observed the former USSR. I hope the digital data has been properly archived and can be declassified sooner rather than later; think what we could learn about economics and human development by assimilating all that information into a temporal model. Information that we in the developed world didn't think to collect or organize properly during our own economic expansion is hard to estimate, but with even moderate-quality photographic and thermal data we could make far more educated assessments of energy costs, trade flows, micro-climates and so many other things by studying our records of this experiment.

Great, great link OP. How did you come across it?

</comment><comment><USER3> ><http://i.imgur.com/AqNdG.jpg>

At first I thought it was strange that they'd removed the high-rise buildings that were already there. But then I noticed that the two images don't show the same area. If you look in the night image the left-most 2 towers are the left- most towers in the day image; the clock tower is just left of centre.</comment>


Nvidia in Advanced Talks to Buy SoftBank's Chip Company Arm - <AUTHOR> https://www.bloomberg.com/news/articles/2020-07-31/nvidia-said-in-advanced-talks-to-buy-softbank-s-chip-company-arm <comment><USER2> Dupe: [https://news.ycombinator.com/item?id=24009177](https://news.ycombinator.com/item?id=24009177)

</comment><comment><USER3> I wonder if it would be possible for a consortium of companies like Apple, Microsoft, and Google to swoop in and outbid Nvidia? All of them rely on customization agreements with ARM and Nvidia, being a chip maker, would be competition. And a consortium like that would allow the consortium members to keep their changes to themselves so whatever Qualcomm and Microsoft are doing with the SQ1 or Apple with their Silicon stuff wouldn't have to be shared will all consortium members -- or a competing chip maker like Nvidia.

<comment><USER4> Apple, Qualcomm and possibly Microsoft already keep all the changes to themselves. They have a Perpetual multi-use licenses.

</comment></comment><comment><USER4> Normally I would be critical, and call these rumours BS as it doesn't make any sense for Nvidia to own ARM. But First Bloomberg has a decent track record with regards to leaks on M&A, Second being Jensen is one of the best CEO in Silicon Valley.

Assuming this rumours is true, He must have some grand plan or better insight on how this will play out.

Personally I would like ARM to stay independent just like TSMC.

</comment><comment><USER5> Bargain of the century, given the emerging dominance of ARM.</comment>


Clarity.fm will be your Startup's BFF - <AUTHOR> http://blendah.com/post/51559217654/clarity-fm-will-be-your-startups-bff

<comment><USER2> I got to talk to Dan during his beta testing phase of Clarity. He's passion and knowledge really shines through.

<comment><USER3> Agreed this seems like a project that he will be able to work on for quite some time.

Def. a long play.</comment></comment>


Building Tiny Rust Binaries for Embedded Linux - <AUTHOR> https://jamesmunns.com/update/2018/04/01/tinyrocket.html <comment><USER2> Note that one of these steps, the one where you replace jemalloc with the system allocator, is quite likely to become the default behavior sometime after the global allocator API stabilizes (which should happen this year). It's a bit of a shame because jemalloc really is faster than the system allocator, often by a significant margin, but in practice jemalloc is a very large burden to package in-tree, plus it largely contributes to binary bloat as seen here, and also tools like valgrind don't play nicely with anything other than the system allocator. Of course, we won't make the switch until we have an easy way to get jemalloc back via crates.io, for our users who really want jemalloc's performance benefits.

<comment><USER3> I think GLIBC 2.26 added a per-thread cache, so it might no longer be that slow when compared to jemalloc.

<comment><USER2> I'm under the impression that what also makes jemalloc fast is that it has a richer API than glibc malloc (in a way that isn't drop-in compatible, so libc- compatible malloc can't ever provide it), thereby giving it more info that it can use for optimization (but also stymying tools like valgrind).

<comment><USER3> That's sized deallocation, right? Unfortunately, GLIBC doesn't seem to provide it.

</comment></comment></comment></comment><comment><AUTHOR> Hey all, I was able to attend the Rust All Hands this year, and this is a write up of a cool project I worked on there. Let me know if you have any questions!

<comment><USER4> The article mentions the Flash storage size at 8meg. What was the ram size of the target?

UPX can be a bit of mixed bag. It doesn't necessarily cause load delays, If decompression is faster than data loading it can actually speed things. You can't mmap it though which could be an issue depending on RAM. If using an underlying compressed filesystem it might be providing on-paper-only gains.

It would be interesting to see breakdowns of the size of the text and data section at each stage of the size optimization.

</comment></comment><comment><USER5> I find the number for xargo, without stripping or UPX to be by far the most interesting. It almost gets you all the way (1/6th of the default release size), while not breaking anything.

Stripping removes useful things from your binary, and UPX tends to be a no-go for many things.

<comment><USER6> We've been talking about "unforking xargo", and treating libstd/etc more like any other crate, which would mean that you could do this in a more easy way. It's gonna take some time though.

<comment><USER7> This sounds like a really good idea! Would there still be prebuilt versions for the sake of faster builds out of the box?

<comment><USER2> Details are still up in the air. All we know for sure (decided at the Rust All-Hands last week) is that we definitely want to extend cargo in a way that obviates xargo (a plan which xargo's maintainer has enthusiastically endorsed).

</comment></comment></comment></comment><comment><USER8> For comparison's sake I just compiled the Jester hello world example using Nim:

        import asyncdispatch

        import jester

        routes:
          get "/":
            resp "Hello World"

        runForever()

Command: nim c -d:release --opt:size file.nim

The size on my Mac is 349K and that's with very little tweaking.

<comment><USER9> Many people have complained about the Rust Evangelism Strikeforce, but the few nim users here on HN are taking it to the next level…

<comment><USER10> I don't think that's fair towards GP – they only provided a data point using a language that is competing with Rust in some areas.

(Unless I misread your comment, and "RustEvStrFo" doesn't have the same negative connotation to you...)

<comment><USER9> You're right, it not really nice on that specific comment. I just noticed this trend the past few months, and this time I reacted.

Edit: if you look at the commenter's profile, you'll see that he does that really often, on threads talking about Rust, Go or C. I think the comparison to the Rust Evangelism Strikeforce holds.

<comment><USER8> I think there is a difference between a core developer of Nim (me) trying to raise some awareness, by showing how easy it is to achieve what the article achieves in Nim, vs. a random developer proclaiming "Why haven't you written this in Rust?".

Isn't that what the Rust Evangelism Strikeforce is known for?

<comment><USER11> It's what people think the "RESF" does, but as is consistently mentioned whenever it is brought up, there seems to be more people replying to any comment about Rust with complaints of "RESF" (even if the original comment is just "trying to raise some awareness", etc.) than people actually proposing rewriting anything/everything in Rust.

In any case, I think being a core developer on something means a much higher bar for accuracy/relevance/general public behaviour when discussing it and its competitors: everything one says about the project is a semi-official representation of it. Certainly the Rust core developers try to be careful about conveying an accurate picture of costs as well as benefits when answering questions or correcting misconceptions[1]. That is certainly something I found weighed on my mind a lot when I was on the Rust teams: anything I said about it could become part of "the Rust project" (as an idea people have) itself.

[1]: One extra point is that, IME, this is often how Rust team members interact with social media: they won't be the first person to bring up Rust in a thread. Of course, it's fair to say that Rust has a bigger mindshare and more people outside the project team members will bring it up/compare to it than Nim, but one possible alternative approach to awareness is more whole threads (i.e. submitted articles) about Nim rather than just comments within threads about other technologies.

(To be clear, this is just a reply to the parent comment, I'm not trying to say the original Nim comment was "NESF"-ish or "RiiN".)

<comment><USER12> > there seems to be more people replying to any comment about Rust with > complaints of "RESF"

[https://www.reddit.com/r/programming/comments/83n32i/the_def...](https://www.reddit.com/r/programming/comments/83n32i/the_definitive_c_book_guide_and_list/)

<comment><USER11> I didn't say it _didn 't_ happen. I acknowledge it, and I've even personally written many, many comments calling out/correcting comments that are too enthusiastic in their promotion of Rust.

In any case, for that specific comment, see Steve's analysis in response to your ping:

 _> But a brand new account with three trolly comments is different than an actual Rust advocate. Just like I'd ignore our local anti-rust trolls, I'd also ignore any pro-Rust trolls._

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER13> This gets confused right off the bat between file size and mapped size. The whole "strip" nonsense could have been skipped if the author looked at .text/.data/.rodata (and .bss too -- often the resource you're trying to conserve is RAM and not storage!) sizes instead.

Likewise the playing with upx isn't really relevant to a rust article per se. That's a generic executable compressor that will work with anything.

But some stuff here was really interesting. I honestly had no idea that rust was statically linking its own heap implementation into every binary it created! Come on, guys, jemalloc isn't even in rust and doesn't benefit from static linkage. If you're going to distribute your own runtime (and if you're using your own heap, you're distributing your own runtime!) at least distribute it in a shared-by-default way.

<comment><USER14> > Come on, guys, jemalloc isn't even in rust and doesn't benefit from static > linkage. If you're going to distribute your own runtime (and if you're using > your own heap, you're distributing your own runtime!) at least distribute it > in a shared-by-default way.

Our users consistently indicate that they prefer the convenience of being able to copy all-in-one binaries from system to system to the space savings of dynamic linking. Rust used to dynamically link by default, but based on popular demand this was changed prior to 1.0.

Look at what people say they like about Go, for example. Static linking for easy deployment is high on the list.

<comment><USER15> [http://harmful.cat-v.org/software/dynamic- linking/](http://harmful.cat-v.org/software/dynamic-linking/)

<comment><USER14> I don't agree with this. Dynamic linking is perfectly reasonable for OS libraries like kernel32.dll, for instance. Dynamic vs. static linking is a tradeoff like any other.

<comment><USER15> Sure, but NT is a totally different story since you just aren't given another stable ABI other than linking against .dlls.

But there is a lot of value on Unixen of static linking (or only linking against VDSO equivalents).

</comment></comment></comment></comment></comment><comment><USER16> What is left in such a binary? 800K of code seems on the high side even for a http framework.

<comment><USER17> While not answering the question directly, you can peek into Cargo.lock to see what all libraries are used by the project:

[https://github.com/spacekookie/tinyrocket/blob/master/Cargo....](https://github.com/spacekookie/tinyrocket/blob/master/Cargo.lock)

Of course what of those end up in the final binary is an open question. It would be kinda cool to see a dependency tree with size annotations, but I suppose that might be bit tricky to produce.

But I did find "cargo-bloat"[1] tool that gives following output:

         File  .text     Size Name
         4.8%  19.5%  98.2KiB core
         4.0%  16.3%  81.9KiB std
         3.9%  15.8%  79.4KiB rocket
         2.4%   9.9%  49.9KiB hyper
         2.0%   8.1%  40.6KiB [Unknown]
         1.7%   7.0%  35.3KiB alloc
         1.6%   6.5%  32.7KiB toml
         1.1%   4.5%  22.5KiB url
         1.0%   4.3%  21.4KiB yansi
         0.5%   2.0%   9.9KiB tinyrocket
         0.5%   1.8%   9.2KiB time
         0.3%   1.3%   6.4KiB ring
         0.2%   0.8%   3.8KiB ordermap
         0.1%   0.5%   2.4KiB idna
         0.1%   0.4%   1.8KiB percent_encoding
         0.1%   0.4%   1.8KiB unicode_normalization
         0.1%   0.3%   1.3KiB serde
         0.1%   0.2%   1.2KiB std_unicode
         0.0%   0.2%     880B pear
         0.0%   0.1%     576B log
         0.0%   0.1%     338B cookie
         0.0%   0.1%     307B unwind
         0.0%   0.0%     198B unicode_bidi
         0.0%   0.0%     161B state
         0.0%   0.0%     160B httparse
         0.0%   0.0%     124B memchr
         0.0%   0.0%      94B alloc_system
         0.0%   0.0%      77B typeable
         0.0%   0.0%      52B smallvec
         0.0%   0.0%      45B compiler_builtins
         0.0%   0.0%      28B rustc_tsan
         0.0%   0.0%      25B unicase
         0.0%   0.0%      11B panic_abort
         0.0%   0.0%      11B panic_unwind
        24.6% 100.0% 502.6KiB .text section size, the file size is 2.0MiB

When the stripped binary on my system is 979K. So it manages to account for about half of the binary size. From what is accounted, I suppose yansi (ANSI terminal lib) is the most superfluous, followed by toml parsing. Other than those, most of the stuff seems kinda relevant for a web framework.

I'm now bit curious what the 979 - 502.6 = 476.4 remaining kilobytes are.. and totally nerdsniped. Running size gets me following:

        [zokier@zarch tinyrocket]$ size -A -d target/release/tinyrocket
        target/release/tinyrocket  :
        section                size      addr
        .interp                  28       624
        .note.ABI-tag            32       652
        .note.gnu.build-id       36       684
        .gnu.hash                28       720
        .dynsym                2568       752
        .dynstr                1532      3320
        .gnu.version            214      4852
        .gnu.version_r          288      5072
        .rela.dyn             40320      5360
        .rela.plt              2328     45680
        .init                    23     48008
        .plt                   1568     48032
        .plt.got                  8     49600
        .text                519185     49664
        .fini                     9    568852
        .rodata              294652    568864
        .eh_frame_hdr         15580    863516
        .eh_frame             82544    879096
        .tdata                   48   3060064
        .tbss                   136   3060112
        .init_array               8   3060112
        .fini_array               8   3060120
        .data.rel.ro          34984   3060128
        .dynamic                576   3095112
        .got                    872   3095688
        .data                   201   3096576
        .bss                    464   3096784
        .comment                 69         0
        Total                998309

So almost 290k in .rodata, that seems suspicious. Quick look at it shows about 17k of html as steveklabnik mentioned, but other than that I can't really identify any major blocks. I suppose this is the end of the dive, unless someone knows some tools to get more insight into .rodata data. I suppose in theory it should be possible to track down where in the code each bit of .rodata is accessed from, but that seems bit of a stretch.

[1] [https://github.com/RazrFalcon/cargo- bloat](https://github.com/RazrFalcon/cargo-bloat)

<comment><USER18> > I suppose this is the end of the dive, unless someone knows some tools to > get more insight into .rodata data. I suppose in theory it should be > possible to track down where in the code each bit of .rodata is accessed > from, but that seems bit of a stretch.

My tool Bloaty ([https://github.com/google/bloaty](https://github.com/google/bloaty)) attempts to do exactly this. It even disassembles the binary looking for instructions that reference other sections like .rodata.

It doesn't currently know anything about Rust's name mangling scheme. I'd be happy to add this, though I suppose Rust's mangling is probably written in Rust and Bloaty is written in C++.

<comment><USER17> Cool. So I ran bloaty (with -d sections,segments,rawsymbols) on tinyrocket and used rustfilt[1] to demangle the symbols, and we have numbers for .rodata:

        demangled                                                   Filesize (KiB)
        idna::uts46::find_char                                            89.25
        unicode_normalization::normalize::d                               69.52
        [384 Others]                                                      43.48
        rocket::config::RocketConfig::override_from_env                   23.59
        unicode_bidi::char_data::bidi_class                               15.16
        idna::uts46::decode_slice                                         12.23
        unicode_normalization::normalize::compose                         10.29
        core::num::dec2flt::algorithm::power_of_ten                        5.97
        unicode_normalization::tables::normalization::canonical_comb       3.91
        [section .rodata]                                                  1.99
        idna::uts46::validate                                              1.95
        <hyper::status::StatusCode as core::fmt::Debug>::fmt               1.79
        tinyrocket::main                                                   1.46
        core::num::flt2dec::strategy::grisu::CACHED_POW10                  1.27
        rocket::config::config::Config::set_raw                            1.15
        time::display::parse_type                                          0.99
        hyper::server::listener::spawn_with::{{closure}}                   0.96
        percent_encoding::percent_encode_byte                              0.76
        <hyper::status::StatusCode as core::fmt::Display>::fmt             0.71
        rocket::catcher::defaults::get::handle_431                         0.66
        rocket::config::init::{{closure}}                                  0.65

Lots of unicode and idna stuff there. I think the binary size would be reduced significantly if we could drop those somehow.

Most likely those embedded HTML (error) pages are accounted in "rocket::config::RocketConfig::override_from_env", which sort of makes sense.

> It doesn't currently know anything about Rust's name mangling scheme. I'd be > happy to add this, though I suppose Rust's mangling is probably written in > Rust and Bloaty is written in C++.

I suppose you don't want to have a (optional) dependency to Rust code? It should be pretty easy to provide C interface to rustc-demangle[2] which would be usable from Bloaty.

[1] [https://github.com/luser/rustfilt](https://github.com/luser/rustfilt) [2] [https://github.com/alexcrichton/rustc- demangle](https://github.com/alexcrichton/rustc-demangle)

<comment><USER17> This was easier than I thought:

[https://github.com/google/bloaty/compare/master...zokier:rus...](https://github.com/google/bloaty/compare/master...zokier:rust_demangle?expand=1)

and here is the wrapper for rustc-demangle:

[https://github.com/zokier/rust-demangle-clib](https://github.com/zokier/rust- demangle-clib)

Seems to work just fine for my simple use at least:

        [zokier@zarch bloaty]$ ./bloaty -d sections,segments,symbols -C rust /tmp/tinyrocket/target/release/tinyrocket
             VM SIZE                                                                                FILE SIZE
         </comment></comment></comment></comment></comment><comment></comment><comment>--                                                                                </comment><comment></comment><comment>--
          52.0%   506Ki .text                                                                              506Ki  24.8%
             100.0%   506Ki LOAD [RX]                                                                          506Ki 100.0%
                  65.6%   332Ki [967 Others]                                                                       332Ki  65.6%
                   5.1%  25.7Ki hyper::server::listener::spawn_with::{{closure}}                                  25.7Ki   5.1%
                   3.6%  18.3Ki <yansi::Paint<T> as core::fmt::Display>::fmt                                      18.3Ki   3.6%
                   2.9%  14.5Ki rocket::ignite                                                                    14.5Ki   2.9%
                   2.5%  12.8Ki rocket::config::config::Config::set_raw                                           12.8Ki   2.5%
                   2.1%  10.7Ki core::ptr::drop_in_place                                                          10.7Ki   2.1%
                   1.9%  9.78Ki std::sys_common::backtrace::output                                                9.78Ki   1.9%
                   1.9%  9.62Ki tinyrocket::main                                                                  9.62Ki   1.9%
                   1.6%  8.16Ki <alloc::raw_vec::RawVec<T, A>>::double                                            8.16Ki   1.6%
        ...

I can try to clean it up bit more etc if you want a proper pull request for this?

<comment><USER18> Cool! If the dependency is optional I think this would be great and I'd love to see a PR for it. It could be configured at CMake time.

I think I'd prefer to just make this part of shortsymbols/fullsymbols instead of making a separate "rustsymbols". I assume that Rust symbols won't successfully demangle as C++ (and vice-versa), so we can just try both demanglers and use whatever works. That seems like it will be more graceful for mixed C++/Rust binaries.

<comment><USER17> I created [https://github.com/google/bloaty/issues/110](https://github.com/google/bloaty/issues/110) to track this. I'll try to find time to clean up the patch, but no promises. Lets continue the discussion in the GH issue.

</comment></comment></comment><comment><USER19> I know it is about rust but I just don't see the point. If you want for whatever reason small binaries, rust is just wrong, take c (or asm). The closest you go to processor instructions, the smaller the binary is and rust is compleatly wrong lang. for that.

Actually I think go has beaten rust at anything relevant... (I am c/c++ fan so I have no preference to either. Rust has become hacker news click bait.)

<comment><USER20> Can you explain why? How is C closer to processor instructions then Rust?

<comment><USER21> My experience with using C was that, while it isn't necessarily closer to processor instructions, the instructions it does generate are far more predictable than the ones generated by Rust. And when it does surprise you, it's usually either a pleasant occurrance, or a compiler defect.

This is a combination of many things, the big ones being: 1) My temporal experience with C dwarfs my temporal experience with Rust by at least an order of magnitude 2) The Rust ABI is [still - last I checked] opaque. 3) Every operating system environment I have interacted with has been _deeply_ C-oriented, so the platform utilities for exploring the C to ELF / PE transition are much more accessible.

I would _love_ to be able to have the same familiarity, predictability, and indegenous feeling with Rust that I have with C, but each time I attempt to interact with the ecosystem, I come away feeling alienated and like I've just interacted with a 'the compiler knows best' cult.

<comment><USER20> \- "the instructions it does generate are far more predictable than the ones generated by Rust."

I am wondering how that might work? Isn't this extremely depending on the compiler and flags? To be honest, i would assume that a modern compiler with many optimizations would generate a very different list of instructions then some simple compiler. C has a large list of available compilers..

\- "I would love to be able to have the same familiarity, predictability, and indegenous feeling with Rust that I have with C,"

To be honest, all that seems to be mostly time and experience. Surely you won't get the same familiarity with Rust compared to C in a fraction of the time. It just sounds like you feel comfortable enough with C and see no reason to change, which is good for you in a way :)

<comment><USER21> The best I can come up with is examples:

      enum State {
        UNINITIALIZED,
        STARTING,
        RUNNING,
        SLEEPING,
        STOPPING,
        TERMINATED
      };

      struct Thread {
        State state;
        int32_t threadID;
        MemoryMap * memoryMap;
        LockTable * lockTable;
      };

The memory layout of a Thread object is highly predictible: +0 state, +4 threadID, +8 memoryMap, +(12/16) lockTable

I can predict the symbol name for a function:

      Thread *
      createThread(void *stackArea)

I know that stackArea is going to be in RDI, and the resulting Thread* is going to be in EAX (or their well-specified equivalents on another platform)

      switch (thread->state) {
        case UNINITIALIZED:
        case STARTING:
          error("Not ready yet");
          break;
        case STARTED:
          sleep(thread);
          break;
        case SLEEPING:
          error("Already asleep");
          break;
        case STOPPING:
        case TERMINATED:
          error("Thread is terminating");
          break;
        default:
          critical_error("The world is on fire");
          break;
      }

Given a compiled set of instructions, I can link the compiled instructions corresponding to the switch statement (like a jump table) back to the C code.

      for(size_t i = 0; i < SOME_MAXIMUM; ++i) {
        unsigned char const working_value = input1[i];
        unsigned char const mask = ((unsigned char) -1) - (working_value >> 7);
        output[i] = input2[i] &= mask;
      }

I've probably screwed that up, and I don't claim that it's doing anything useful here, but assuming it was doing something useful, I would be able to identify the instruction associated with it, figure out if there was some deficiency present (like say, a conditional) and have a decent idea of how to fix it.

Rust, on the other hand, does a bunch of things that are (so far) opaque to me.

One example is passing a borrowed slice of something, and somehow, not just a pointer to the thing itself is getting passed, but also seemingly, potentially one or more boundary indices, as well as a lifetime (maybe?)

Another example is a match on the type of an object, clearly [on second thought, perhaps not] there's some run-time state being kept around along with the explicitly declared fields inside that object, what does that object look like in a memory dump?

As final example: generics, how and when do they get expanded into discrete functions? What do the symbols get named? How do I know if a generic expanion is likely going to overly prolific? Inlining and templates can do wonderous things for performance, but they can also drown it.

Anyway, hopefully that wasn't too overwhelming, or ranty. You asked nicely twice; I felt compelled to give you a real answer.</comment></comment></comment></comment></comment>


Ask HN: Blog series - 17 years of an Internet "startup". Interesting? - <AUTHOR>

We started as a classical web development and hosting company back in 1996. Almost right from the beginning I started to write a kind of "company log" to record all kinds of information about our team, projects, customers, partners, lessons learned etc.
Although it's not a spectacular story, we had some interesting highs and lows over the years. I'm currently considering making a "little" blog post series out of it, because it can be quite funny, sometimes yet exciting, to read such stories with a personal touch. (They also include many business lessons we had to learn.)
But that's just my own opinion. So what do YOU think about a project like that? Would such a "long-term study blog series" be interesting for you, too?
Thanks for your feedback! <comment><USER2> I'm interested even if I can read it only as a .doc

<comment><AUTHOR> I've already thought about publishing it as an ebook sometime, but the whole contents have to be translated (currently German) and revised first. This wouldn't be a small project (for me). So the blog series would be a good start if there's enough interest.</comment></comment>


Sergey Brin's Search for a Parkinson's Cure  - <AUTHOR> http://www.wired.com/magazine/2010/06/ff_sergeys_search/all/1 <comment><USER2> I'm a computer scientist working in a Parkinson's lab that is very closely tied to the names in the article. My main duty is data analysis simply because there is so much information to process. If you want some more information regarding state of the art treatments, our website is <http://neurosurgery.ucsf.edu/bankiewicz> .

I also maintain our website, so if you see anything that needs fixing, drop me a line :)

<comment><USER3> I'm interested in learning more about bio-tech research, genetics and synthetic biology. I hope to finish my doctorate in CS soon, and after that I'm going to take some time off to travel and read. Any advice for a computer geek who wants to learn how to program biology for the good of mankind? What do you, or others who work in the industry, think would be the best way for me to bootstrap myself in the area?

<comment><USER2> My lab brought me on because they realized that they needed to use computers more effectively with the amount of data they generated. I came in with little bio knowledge, but they did a good job of filling me in very quickly.

I'd suggest getting involved in any lab doing any form of computer work. Lab meetings are a great place to find out what problems people are having, and most of the time you'll be able to use your skills to solve them. After taking on a few projects, people will start to realize what you can and can't do, and they'll start to give you a lot of related work.

Good luck!

</comment></comment></comment><comment><USER4> If Sergey Brin thinks the current medical research establishment stifles certain kinds of research avenues, fine. But let's not cast this as him "proposing to bypass centuries of scientific epistemology in favor of a more Googley kind of science". He's not the next Francis Bacon, and this isn't some deep insight into the nature of science.

<comment><USER5> Why not? Can you explain?

<comment><USER6> Because he's not suggesting an experiment. This method involves taking data already obtained and doing analyses on it, to look for something, it's really a different way to form a hypothesis. After he finds something this way it'll go "back" to the standard rigors of the scientific method.

<comment><USER5> "it's really a different way to form a hypothesis"

Isn't that enough?

<comment><USER7> By different, he doesn't mean revolutionary.

</comment></comment></comment></comment></comment><comment><USER8> The world would be a better place if more young billionaires would have incurable diseases.

On a serious note, I hope they can find a cure for him and millions of others who can do nothing about their illness other than playing a waiting game.

<comment><USER9> _The world would be a better place if more young billionaires would have incurable diseases._

They do. Aging may not technically be a disease, but it's currently unavoidable and cripples your body and often your mind. If I had a few extra billion dollars lying around, that's what I'd focus on.

</comment></comment><comment><USER10> I'm surprised that he didn't invest more than 0.3% of his net worth (if it really is $15B) into this. It's his choice, but I think that if I was in his position, I'd spend more than that (but yeah, I guess that's easier to say when it's not you).

Maybe there are bottlenecks that make it so more money wouldn't speed things up, but I bet there are ways to use resources to help alleviate or remove these bottlenecks.

<comment><USER11> Why would it have to be a percentage of his net worth? He's contributed $50MM which he feels is enough to "move the needle". Medical research moves slowly and simply throwing money at it may not offer any incremental benefit.

Edit: I thought I'd add an example, since my father has Parkinson's so I know a little bit about it. One promising area of research is stem cell therapy. However, one known side effect of stem cell injection is cancer. (It takes years to develop but there have been enough studies already to show a strong correlation). Now, Parkinson's doesn't kill per se - it makes life miserable towards the end, but as a rule, people with Parkinson's live just as long as people without. So let's say you had really high net worth and wanted to spend it all to cure Parkinson's. Would you be able to "buy" people to trade a low chance of improvement in their lifestyle for a very real chance of cancer? I don't think so. Of course, this is just one example, however, it shows that things are not that simple.

<comment><USER10> I'm just saying what _I_ would do if I was worth 15 billion and knew that I had a high chance of having a serious disease like that.

Throwing money blindly at a problem doesn't always help, that's very true. But I'm sure there are many intelligent ways to use more than 50m effectively.

You mention stem cell therapies; helping get them to the point where they don't cause cancer anymore might be an area of research worth pushing, especially if some of it is under-funded. Giving out scholarships to people studying in areas related to the disease might be a way to help improve the supply of researchers. And when you can't hire more people, you can usually upgrade the equipment with faster/better stuff (shortening the upgrade cycle might help accelerate progress). You could help pay for conferences where the leading minds working on the problem can meet and exchange information (and if there's already enough of those, you can help make them better). You can probably find high-risk/high-reward research projects that aren't getting funded through the regular channels because those usually favor low-risk/low- reward projects. Etc.

But I repeat: What Brin did is _awesome_. Kudos to him. All I'm saying is maybe I'd do it differently if I was in his shoes.

<comment><USER12> Surely the most logical thing to is invest the $50M now to get things started and wait to see what needed funding next..

This almost certainly will not represent the sum total of his donations.

<comment><USER10> Good point. We'll have to wait and see.

</comment></comment></comment></comment></comment><comment><USER11> The article sites the average American's risk of developing Parkinson's at 1%. I really question that. My husband's father died of Parkinson's several years ago, my own father is currently living with Parkinson's, my best friend's father has Parkinson, and so on. Am I the only one surrounded by Parkinson's disease, or is it a growing epidemic? I wonder if that 1% number is an old statistic. I can't find any sources, links?

<comment><USER13> Here's a summary article of a large epidemiological study:

<http://news.wustl.edu/news/Pages/20150.aspx>

Doing the math (450,000 cases out of 36,000,000 million Medicare recipients in the US), the adult incidence rate of Parkinson's is 0.0125, or 1.25%.

Sadly, I can't find a full copy of the study which isn't behind a pay wall. But, from the summary, it appears Parkinson's has some "clustering" based on both genetic and environmental factors. The text under the map on the article indicates areas in red have an adult incidence rate of 13.8% or more, so experiences such as yours are normal (albeit frightening).

So, yes, you're right to question that 1% statistic. It isn't sufficient to describe the situation at all when standing by itself.

<comment><USER11> Thanks wooster. You are the only person who actually answered my question. I guess this forum has a chance :)

I wonder if with the "graying" of baby boomers, the statistic is going to shoot up. I wouldn't be surprised if by 2020 the numbers would double, along with the projected retirement numbers. Of course, that would mean that the cluster areas would see rates close to 1 in 4 older adults, which would be truly scary!

</comment></comment></comment><comment><USER14> This isn't a new kind of science, since this is the kind of science that we've been doing since ~2007-2008. They are basically describing GWAS.

<comment><USER15> GWAS = Genome-wide association studies

<http://en.wikipedia.org/wiki/Genome-wide_association_study>

<comment><USER14> Good link. At the end of the day, they're doing association studies... So they're taking a phenotype (even survey answers are a "phenotype" in a manner of speaking) and correlating it with a genotype (whether SNPs, exome data, or genome data). I'm a believer in this approach to science and am in no way poo- pooing their effort; I merely wanted to comment that, from the article's description of their approach, they're doing nothing iconoclastic.

</comment></comment></comment><comment><USER16> I think if I had that kind of knowledge of a fucked up disease hanging over my head, I'd put more than .3% of my net worth into the research. I'd want to REALLY move the needle, like alot.

</comment><comment><USER17> Just take a look at this silly hand wringing editorial about the innovation described in this article

[http://plosgenetics.org/article/info:doi/10.1371/journal.pge...](http://plosgenetics.org/article/info:doi/10.1371/journal.pgen.1000965)

When the response to new and cool is "you didn't do it according to protocol", something is definitely wrong.

<comment><USER18> IRB review is a very important part of modern science, and the system is simply not setup to deal with research that hasn't been throughly cleared by a review board. You could consider IRB approval the first step in peer-review: your study is worthwhile and you aren't going to do anything unethical.

IRBs are designed to protect the subjects/patients, the researchers, and the institutions. To skip that step is pretty unusual, and some hoops had to be jumped through in order to deal with it. I think the fact that the 23andMe study was published at all was a big leap, and represents the flexibility inherent in the scientific community.

The response to "new and cool" wasn't "you didn't do it according to protocol". It was: since you didn't do it according to protocol, we need to verify that you did this ethically.

Imagine what would have happened if they used someone's DNA in their study without their knowledge. When you're talking about publishing links between diseases and people's DNA, you better be damn sure you have permission to use their genetic data. That is what IRBs are good for.

In a world where movies constantly are pointing out how scary/evil/unethical scientists can be (Andromeda strain, Splice), these checks are very important, even if it slows things down a little.

<comment><USER19> > Imagine what would have happened if they used someone's DNA in their study > without their knowledge. When you're talking about publishing links between > diseases and people's DNA, you better be damn sure you have permission to > use their genetic data.

Apart from privacy and "ownership of one's genetic material", why?

Saying "Joe Smith's DNA contains a vital clue to solving parkinson's" doesn't affect Joe's ability to monetize.

Saying the same about "unspecifed_37" doesn't affect anyone's privacy.

<comment><USER20> Look up the story of Henriette Lacks and her family's reactions to finding out scientists were using her cells in all kinds of experiments.

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

There was a good episode of Radiolab about her, as well as a good interview on Dr Kiki's Science Hour with the author of the book written about her life and legacy.

Her family was deeply disturbed by what was happening at first. Progress is necessary, but so is people's dignity.

<comment><USER21> _Her family was deeply disturbed by what was happening at first. Progress is necessary, but so is people's dignity._

I don't want to be callous, but look at the cost-benefit calculation:

Cost: One disgruntled family.

Benefit: Polio vaccine. Treatments for cancer, HIV, various toxins, and other stuff I don't know about in the 50,000 research papers on HeLa. I am not exaggerating. There really are over 50,000 papers about HeLa.

I think the system worked very well in this case.

<comment><USER18> That doesn't really change the fact that there were issues with her informed consent. When HeLa cells were first derived, most of the benefits weren't even on the radar. I don't think the initial investigators could have imagined what would have happened, let alone the patient.

I think this is a case where the system didn't work... but more because the science got ahead of the ethics. Sure, excellent science has been done with HeLa cells, but it all started with an ethically ambiguous beginning. For example: why do we know her name? This alone should never have happened.

<comment><USER21> _When HeLa cells were first derived, most of the benefits weren't even on the radar._

Excuse me? It was the first human cell line that could grow in culture indefinitely. Doctors and researchers immediately recognized the potential of HeLa cells. It took less than three years before the cells were used to mass- produce Jonas Salk's polio vaccine.

I am not exaggerating when I say that millions of people today owe their lives to HeLa. Had doctors been forced to do what you call ethical, those people would be dead. With so many lives at stake, the objections of the family (or the individual) simply don't matter.

 _For example: why do we know her name? This alone should never have happened._

Originally she was anonymized. Later, researchers wanted to get genetic information from her living relatives. Somehow the press found out. Perhaps a relative told them.

</comment></comment></comment></comment></comment></comment></comment><comment><USER22> He of all people I would expect to just google for it.

</comment><comment><USER23> Hehe. His "search" for the cure.

<comment><USER23> I was just pointing out the amusing headline that Wired chose. On purpose I'm sure.

</comment></comment><comment><USER24> Data sample, n = 1. Michael J. Fox supposedly smoked like a demon in younger days. Has Parkinson's.

<comment><USER25> "Cigarette smokers also seem to have a lower chance of developing Parkinson's"

I realize it's not really a science article (it's even possible all the information on Parkinson's came directly from Brin himself), but they didn't say cigarette smoking staved off Parkinson's completely - they said it lowered the odds of it developing.

Thing is, the human body is so complicated, you can do all the right things and still come up on the short end. Load up on omega-3s and still get clogged arteries. Eat a well balanced diet and still get cancer.

Doing the "right" things can only improve the odds - something's going to get to you in the end.

<comment><USER26> "Thing is, the human body is so complicated, you can do all the right things and still come up on the short end"

It's complicated, but it's not magic. If you are doing things to avoid a problem and you get the problem, then you were not doing "all the right things" - your understanding was wrong.

<comment><USER19> > If you are doing things to avoid a problem and you get the problem, then you > were not doing "all the right things" - your understanding was wrong.

Nope. "All the right things" isn't a guarantee and since you can't do anything about your dna, some folks are going to have risks no matter what they do.

For example, you can get unlucky wrt a mutation or a cosmic ray.</comment></comment></comment></comment>


Amazon raises overtime pay for warehouse workers - <AUTHOR> https://www.reuters.com/article/us-health-coronavirus-amazon-com-exclusi/exclusive-amazon-raises-overtime-pay-for-warehouse-workers-idUSKBN2180Q1 <comment><USER3> If Amazon wanted to win immediate trust and lasting goodwill, they should secure suppliers for "Amazon's choice" cotton surgical masks, providing priority service to hospital systems in regions of need, but also (publicly), their own warehouse and delivery workforce. They have the leverage, analytics, and supply chain to make it happen.

Edit: We need to provide enough masks so that people don't feel like they are depriving the hospital system. Also, we need more corporations in America to step up and set an example, protecting their workers and customers. People should stay home, but when they have to venture out (or are needed for work), they should be wearing masks!

<comment><USER4> Why are we paying almost a trillion dollar in taxes if the government can't get its shit together and we have to rely on mega corporations.

When looking at Wuhan news, everyone is wearing a mask. How did they make that happen for millions of people. Singapore mailed 4 masks per household. South Korea nearly tested every citizen.

Sure China is an authoritarian government but we can't deny it can do manufacturing and logistical wonders.

The corporate greed and govt incompetence clearly shows when COVID-19 hit us (usa). It will dip our economy way harder than it will hit China.

Could someone share if China is also doing massive stimulus and billions of dollar bailouts?

<comment><USER5> We are blowing it all on the stupid military when we could have been spending it on cutting edge medical research. We spend trillions blowing stuff up instead of spending trillions searching for ways to improve our health and lives.

</comment></comment></comment><comment><USER6> I've been thinking that in this new reality Amazon warehouse workers and delivery folks are doing something pretty amazing by helping the rest of us.

IMOH Jeff Bezos should really consider this and put something amazing together for these foundational people.

(I say amazing because I think they should be rewarded in a big way - <USER2> stock maybe?)

<comment><USER7> They used to be paid in stock... they wanted $15/hr instead.

<comment><USER8> Wow.. such bubble, much removed from reality. 78% of Americans live paycheck to paycheck. And spoiler alert: it's not because of buying iphones! Yeah, fuck these people for not having proper financial education and a savings account.

<comment><USER9> All the paycheck to paycheck people I know are literally taking out loans to buy $2.5k MacBooks which they mistreat and break within a year only to buy another one.. They go through $1k iPhones and Samsung phones every couple of months due to cracked screens and have new car loans of $650 per month which they completely trash.

<comment><USER10> Seems you know only a certain type of people. I know or have met quite a few people who almost every month worry how to get food on the table or what to do if their old beat up car breaks down.

<comment><USER9> Food is Max $150-$200 per month and a decent working car can be had for less than $2k, which can easily be afforded on even a McDonald's job, which is mostly just a socializing group. I am friends with several fast food workers and they are too busy having sex with their coworkers and partying to be concerned with any of this.

<comment><USER10> Maybe you should expand your circle of friends.

<comment><USER9> I am friends with lots of people of all types including doctors, lawyers, construction workers, programmers, day care providers, you name it, and have met many more. All of them that live paycheck to paycheck are like this, just my observations. Anyone not living paycheck to paycheck is usually much more responsible, "boring" and is capable of planning more than a week in advance, but it's not hard at all. Even when trying to educate these people they do not really take it to heart and will go out and waste $200 in a night of drinking after getting their paycheck.

<comment><USER10> I totally agree that if a doctor, lawyer or programmer lives paycheck to paycheck there is a problem with their financial habits. But there are plenty of other people who are very frugal but never can get ahead because their pay is very low or maybe they have medical problems that eat up their disposable income.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER11> It's also worth noting that if our economy starts deflating (basically inevitable at this point), real incomes will rise. So $15 an hour next month is like $20 an hour last month (or some ratio like that).

<comment><USER12> Why do you think it's inevitable that there will be a deflation? Genuine question, it seems the money supply is going to be increasing?

<comment><USER13> Nope. The dollar is so strong that other countries are trying really hard to get as much USD as possible. This means that liquidity is drying up and there is a shortage of dollars world-wide. This is deflationary right until we see the banking sector collapse.

<comment><USER14> That's one factor, I'd argue it is caused by the $12 trillon is usd denominated debt, and due to the economic situation, no cashflow to pay it. But the Fed has been ramping up printing presses, creating a tug of war. How long before the latter overtakes the former?

The Fed just expanded repo to $1 trillion per day: [https://m.theepochtimes.com/fed-expands-repo- to-1-trillion-p...](https://m.theepochtimes.com/fed-expands-repo- to-1-trillion-per-day-to-avert-liquidity-crunch_3280317.html)

<comment><USER13> You're totally right about repo and massive amounts of loans, but the impact of other countries trying to get USD outweighs this - at least in the short term.

Checkout currency trading right now - the USD is surging compared to every other world currency. That's because demand for USD is extremely high world wide.

</comment></comment></comment></comment></comment><comment><USER15> I hope all these raises, unemployment resources, remote work and collectivization measures stick around after. Flexibility is great.

What has all this coronavirus action made me feel?

The virus effects everybody equally (generally there are age things in there)

We're all about austerity of social benefits, "I get mine". How did the wonders of the free market help when we were in trouble?

We don't share nearly enough. We criticize each other too much. We miss opportunities to improve the social system democratically because we fall for the intoxicating allure of being sidetracked by narrow groups pushing to get more, just for them. Enough to break up the vote to give us multi-pronged, layered, comprehensive, and fair social security. The nod to only help one group to spite everyone else draws ire, to keep the cycle repeating as an emotional back and forth. Every time. We don't fix the statutes.

I hope anything that doles out benefits universally sticks around and becomes normal in life, after this.

I hope after this labor and health policies get more generous. Way more generous. And value people for being human beings, without preferential treatment based on who is most this or that. Raise the bar for all natural persons.

</comment><comment><USER16> Glad to see this from Amazon, although I see it heading off the inevitable. Wouldn't this be the most powerful moment for employees in 'essential' services to engage in worker strikes? Is there any legal precedent for what governments would do?

With all this war rhetoric thrown around, it seems a reasonable jump to declare essential workers troops on the frontline deserving of what we give other troops (free health care, pension, heavily subsidized secondary education)

<comment><USER17> Striking in order to exploit a global disaster for personal gain would be a great way for organized labor to turn many people against them for a life time. It may work in the short term, but even that is debatable. Many people would gladly see the national guard break a strike if it's between them and basic essentials. Long term, the optics of that kind of move are so damning that it would likely be a net-loss.

<comment><USER16> Depends on the spin. Couldn't you argue this is exploitation of the health of desperate low-paid workers, their family and their communities?

<comment><USER18> As everyone notices their packages stop arriving, comparatively few will buy into the idea that people making $17/hr are being 'exploited', especially as many people find their own working hours being reduced or eliminated.

<comment><USER19> People making $16/hr aren't the ones living on Amazon Prime package flow.

<comment><USER20> If you've ever wondered if you're out of touch and in your own echo chamber, you definitely are.

</comment></comment></comment></comment></comment></comment><comment><USER21> I think this is a great idea.

I also think it was pretty horrible to prevent shipments of non-essential items from 3rd-party sellers (we can still purchase these items now, but sellers can no longer ship these items to amazon FBA warehouses).

Many of these sellers will now have to layoff their own staff, because they will be unable to make payroll/ship out products.

</comment><comment><USER22> One of the Danish consumer NGOs called tænk recently tested the security of things bought off amazon, wish and other online retailers. More than half of the smoke alarms bought on amazon didn't work. Around half of the baby toys didn't meet choking hazard safety.

Not sure why anyone still buys things from there. Or anywhere online really, all the other retailers failed as well.

<comment><USER23> > More than half of the smoke alarms bought on amazon didn't work

I've bought multiple name-brand ones off Amazon, sold by Amazon. The one by my bathroom absolutely works. I can't count how often a steamy shower set it off. Were they buying knockoffs from third-party sellers?

<comment><USER24> A steamy shower should not set off a smoke alarm. Perhaps it has a higher false positive rate.

<comment><USER23> [https://www.cpsc.gov/s3fs- public/WPI2015SmokeAlarmReport.pdf](https://www.cpsc.gov/s3fs- public/WPI2015SmokeAlarmReport.pdf)

> photoelectric smoke alarms should not be placed near bathrooms or similar > locations that create steam. Even though location recommendations are > already common on alarm packaging, nuisance alarms persist in homes due to > inappropriate alarm placement

Which I suppose is on me, but it is a known issue with some smoke detectors.

</comment></comment></comment></comment><comment><USER25> Amazon workers should unionize immediately now that the virus has given them leverage.

<comment><USER26> I understand what you're saying, but walking out or forcing negotiations during a global pandemic is sociopathic, and the union would gather a massive amount of political venom.

<comment><USER27> I don't know how you think bargaining works, but they don't just demand "do XYZ or we'll all walk out". There's _lots_ of levers on both sides. The point of negotiation is to arrive at a mutually beneficial solution. Striking is always a last resort, and quite rare, since it's bad for workers, too.

</comment></comment></comment><comment><USER28> This is a PR stunt from Amazon. Amazon has sophisticated software to schedule employees so that no overtime is given. I think they would rather shut down than pay overtime.

</comment><comment><USER29> Give these people, grocery store workers, sewers .. all the low end workers who we need more then ever at least $30 US dollars an hour. As well in other countries do a similar match!

</comment><comment><USER30> I run in mostly "Fuck the man" circles, so i feel weird saying this, but amazon has consistently been a good leader for other businesses in terms of compensation. I wish they'd go to 25 an hour, as that's the minimum I could live on

<comment><USER31> The slightly dimmer view is that amazon has consistently been a leader for precisely the same reason ford was a hundred years ago

[https://www.forbes.com/sites/timworstall/2012/03/04/the- stor...](https://www.forbes.com/sites/timworstall/2012/03/04/the-story-of- henry-fords-5-a-day-wages-its-not-what-you-think/#4bacffed766d)</comment></comment>


Code.google.com was shut down, Go packaging is broken - <AUTHOR> https://go-review.googlesource.com/#/c/18952 <comment><USER2> I think the only realistic solution to this is to vendor your go dependencies. If Github ever changes its URL schema, a whole bunch of stuff is going to break.

The Go maintainers have conflated _what_ a library is and _where_ a library is. That's an important distinction that should not be glossed over like this.

<comment><USER3> I've been using Go professionally since 0.8 and in production since 1.0; this is correct.

Since day one we have forked every (external) package dependency in production code to our own github account and for all the constant complaining I hear, it has been very little heartache for us.

This has worked great, we periodically update our forks from upstream, once or twice a year need to fixup our code to match, run our unit tests an integration tests, do a little manual testing and call it good.

<comment><USER4> Vendoring through tarball dumps of GOPATH I can understand, but how do you deal with the dependencies of your dependencies when vendoring through forking?

<comment><USER3> Of our 40 or so external dependencies (huge project), only a handful themselves have dependencies we needed to also vendor. Its sounds painful, but in practice it hasn't been. We actually stopped using godep, we were getting no reward for the hassle and added complexity.

Unless there is a bug, or new feature we needed, we often just update this stuff when we update the Go release we are using.

My thoughts; KISS until more complexity is _actually_ needed.

<comment><USER4> _> My thoughts; KISS until more complexity is actually needed._

Well, isn't that exactly what this artice is about…?

</comment></comment></comment></comment></comment><comment><USER5> It will be great fun when Github is shut down. Many npm packages, jspm, and more are using hard coded links to repositories or even paths in repositories.

<comment><USER6> Do you foresee GitHub shutting down in the next 5 years? I certainly don't.

<comment><USER7> Actually perhaps. If the current team continues to own and run it, it'll be around forever. But eventually they'll want to sell it, the team will change, and its goals will become more feature-oriented for the sake of grabbing more premium members. This will give it less value (due to the removal of simplicity) to the average user, so its userbase will gradually shrink until a few years later they pull the plug. It's happened to almost every web service more than a decade old.

<comment><USER8> Remind me of this Slashdot comment about killing the goose that laid the golden eggs:

[http://news.slashdot.org/comments.pl?sid=7754987&cid=5019893...](http://news.slashdot.org/comments.pl?sid=7754987&cid=50198935)

Perhaps GitHub will be able to resist "change for change's sake".

</comment></comment></comment></comment><comment><USER9> Please note that the linked URL is just a commit to remove support from code.google.com in go get, and add a warning to users trying to go get from it.

Also remember that while not very widely used, Go does provide support against this problems via custom URLs and canonical import paths [0].

And most importantly, whatever your programming language, remember to vendor your dependencies.

[0] [https://texlution.com/post/golang-canonical-import- paths/](https://texlution.com/post/golang-canonical-import-paths/)

</comment><comment><USER10> I just got into Go, and I'm a fan a lot of language design decisions. But a lot of configuration leaves me wondering: is it me who doesn't understand something, or did the same folks who designed such a good language actually screwed up configuration stuff?

No way to specify a version of library or language I'm working with is already a little bit annoying, although I haven't actually discovered problems because of it. But the $GOPATH just drives me nuts: why the hell would the language infrastructure work out of assumption that all my projects that are based on a single language are contained in a single folder? On the contrary, I often have projects that include several different languages and frameworks in them, and I'm usually keeping client and server in the same repo. Language is a part of a project, not the other way around. I ended up with this hackery in my server Makefile:

      build:
          GOPATH=$(shell pwd) go install main

Overall, just as Go itself is transparent and simple, it's `import` statement and build infrastructure is not. "Convention over configuration" may be a good approach for simple web apps, but when this convention just doesn't fit your workflow, it brings more bad than good.

<comment><USER11> My opinion: What they got right is what Rob e.g. concurrency, better C, etc., had figured out (so it was version n). Other stuff he apparently doesn't understand at the same level (e.g. [type systems, versioning,] hard coding repo locations in package imports <head smack>) ...

[edit]

<comment><USER10> Could you elaborate more about type systems? I don't have a definite opinion about Go's type systems so far, and it surely has it quirks, but TBH, I like the concepts. In particular, the complete separation of data types (structs) and behaviour types (interfaces) is something that I've never actually seen before.

<comment><USER11> That horse has been beaten to death elsewhere. Go is [a] sweet language, don't get me wrong, but it is a mixed bag of extreme brilliance ('select') & head- scratching wtfs (OP).

Interfaces are hardly new. Go's novel take is the 'auto-morphism'[1] of types that (happen) to implement the function set aggregated in an interface. And this approach has its strengths and its weaknesses.

[1]: ok, I made that up.

</comment></comment></comment></comment><comment><USER12> I've flagged this editorialized title (Code.google.com was shut down, Go packaging is broken). Apart from being against the rules, it's intentionally misleading. It gives the false impression that Google Code shutting down somehow caused go get functionality to fail _in general_ , which is false.

Go get works as always; of course you can't go get go packages on Google Code, because Google Code doesn't exist anymore! The link just points to a change that fixes some trivial Go _test_ which didn't impact anything else; something that people working _on_ Go have to deal with, not something _users of_ Go have to deal with.

As for the news about Google Code itself, that was announced almost an year ago. The Go project itself migrated to git well before that, and of course, every Go package that's maintained also migrated off Google Code in the meantime. This is (misleading) non-news.

<comment><USER13> Thanks for your clarifications.

</comment></comment><comment><USER14> The "website going out of business destroyed my content" problem is one that needs to be addressed. One promising idea is content-addressable storage, like IPFS-hosted repos -- anyone can self-host at a stable URL. (I don't know if IPFS has a good solution yet to the problem branches solve in git, namely having a named, auto-advancing pointer to the content address of the latest version.)

<comment><USER15> Just host it yourself. People act like managing a server is akin to brain surgery these days. The 'cloud' is great, but this is what you have to plan for and deal with if you don't want to do it yourself.

</comment></comment><comment><USER16> Google shuts down yet another service developers rely on. Its getting quite a bad track record. Trust is not so easily rebuilt. I think more developers will avoid depending on google services in the future if they have another choice.

Edit. What happens to the thousands of webpages that link to jquery or google fonts on google.code. This must break lots of things ...

<comment><USER17> To be fair they did give ten months notice so people had time to manage the change, and what we are talking about here isn't "correct" use for that service anyway (it was for source and issue management, not library hosting or a more general CDN).

<comment><USER18> Doesn't help the fact that Google repeatedly shut down services that are in use. It is getting harder and harder to use Google services in business because it has become a liability.

<comment><USER19> "it" being "The idea they might shut down a free service with only 10 months notice".

If your company relies on Google to this extent, and does not have the staff to fix the issues inside 10 months then you need to reconsider your business plan.

</comment></comment></comment></comment><comment><USER20> I never really understood why would they map package names to the sites that host the sources. It was obvious something like this was going to happen and it's happening on smaller scale all the time. Projects move.

<comment><USER21> Less impactful, but docker images have to be tagged with the docker registry URL they will be pushed to.

<comment><USER20> That's another thing I always disliked. I'd have preferred a configurable prefix, or something like Git remotes.

</comment></comment></comment><comment><USER22> 'go get' is a highly useful bag of cats. The fact that code.google.com needed to be hard coded rubs me in such the wrong way for what should be a generalized tool. I wish instead of magic self resolving paths, it just took git repo ssh/http paths.

</comment><comment><USER23> I hate go packaging. I want to fork a package for my private purposes, maintain it in my hosted repo or somewhere private, but no, I have to change all the required import paths to my repo path. Or I have to provide it in vendor folder, or have custom gopath folders, but then go get does not work, I have to git clone and put it in some weird old repo's path. You could use relative paths, or package names but no, you had to use site urls so you could make it harder for anyone that does not work open source or private. I have not found a better solution for forking a repo and working it on my own besides vendor folder solution.

<comment><USER24> > I have to change all the required import paths to my repo path

GO15VENDOREXPERIMENT=1 will be default behaviour in Go 1.6. So you don't have to rewrite the import paths anymore.

> Or I have to provide it in vendor folder

What's wrong with that?

<comment><USER25> > What's wrong with that?

Vendoring external dependencies adds a lot of noise to your git history. Especially with github's UI it's easy to miss an important change because of skipping trough the vendor changes or getting the "too many changes to display" message.

<comment><USER26> > Vendoring external dependencies adds a lot of noise to your git history.

This is my concern as well. Is it possible to use git submodules in vendor directory? Looks like it is possible [1].

[1]: [https://github.com/golang/go/issues/12573](https://github.com/golang/go/issues/12573)

</comment></comment></comment></comment><comment><USER13> "This change drops support for code.google.com and fixes test."

How was packaging broken?

<comment><AUTHOR> Some apps/packages still use packages hosted on code.google.com. Basicly you have to update dependency tree for packages that were hosted there. If you vendor packages then you are not immediately affected but it still poses a problem in long term.

</comment></comment><comment><USER27> How Nix solved the issue:

1\. Each go package has an attribute name in nix, like anything else, that is not tied to its url.

2\. Each go package has an url where to fetch the source from, which is not the import path to use the package.

3\. Each go package has a number of old import url aliases (e.g. "code.google.com/...")

4\. Whenever a package X depends on Y with an old import url, then X is rewritten to use the new url path of Y using govers.

So the problem is solved at our packaging level.

This is not to say it's the best solution, but certainly a good alternative solution.

</comment><comment><USER28> Uff just in time I moved some projects I relay on from CG to Gitlab... developers didn't bother.

</comment><comment><USER29> Isn't any packaging system reliant on a server and ultimately fragile if you don't vendor? I don't want to see an overengineered packaging system. Go is open source, has anyone looked at improving "go get"?

</comment><comment><USER30> I cannot blame Google, they ditched the Reader and various other free services. the Code service may not have been a core thing for the company.

Github on the other hand does have a core focus on hosting code. I would expect them to be in this business as long as it is profitable for them.

</comment><comment><USER11> Someone needs to let the Gophers know about this little concept known as 'indirection'.

</comment><comment><USER31> This is exactly why I am trying to avoid Google's product as much as possible and suggest people avoid them as much as possible.

They want just shove the internet to your throat. With all of their product.</comment>


Microsoft is now selling ARM-Based Windows 10 Machines - <AUTHOR> https://www.windowscentral.com/asus-novago-hp-envy-x2-always-connected-pcs-now-available-microsoft-store <comment><USER2> Bootloader still locked? Or is this the "new open Microsoft" ?

<comment><AUTHOR> Looks up to the OEM.

"Requirement 10: OPTIONAL. An OEM may implement the ability for a physically present user to turn off Secure Boot either with access to the PKpriv or with Physical Presence through the firmware setup."

[https://docs.microsoft.com/en-us/windows- hardware/drivers/br...](https://docs.microsoft.com/en-us/windows- hardware/drivers/bringup/uefi-requirements-that-apply-to-all-windows- platforms#security-requirements)

EDIT: It looks like these two come with windows locked in S mode. I don't know if that impacts the bootloader, but the stock OS is limited to windows store apps I think.</comment></comment>


Apple tells developer to kill iOS app widget after the company promoted it - <AUTHOR> http://mashable.com/2014/10/29/pcalc-widget-ban/#:eyJzIjoidCIsImkiOiJfanB3bjJuZDI1MXVzMmlqeCJ9

<comment><USER2> This is a head-scratcher. I have two ideas about why Apple may have done this:

1\. They are planning on releasing their own calculator notification center widget. 2\. This is the hypothesis put forward in the article, that Apple conceives of notification widgets as essentially read-only sources of at-a- glance information.

Either way, it's clearly a case of the right hand not knowing what the left...etc.

<comment><USER3> Or a case of early validation for speedy AppShop deployment (which in 99.999% of the cases doesn't pose any further question), followed by human control and judgement (which takes a little more time).

I would rather see that as a good thing.</comment></comment>