Interpreter, Compiler, JIT - <AUTHOR> https://nickdesaulniers.github.io/blog/2015/05/25/interpreter-compiler-jit/ <comment><USER3> Hey all, happy to take questions/feedback/criticism.

Funny anecdote: while developing this post, once I got the JIT working I was very excited. I showed a few people in the office. Our CTO walked by and came to take a look. He's worked on numerous VMs in the past. SpiderMonkey's first JIT, TraceMonkey, being his PhD thesis. He took one look and asked "Is it self hosted." I replied, "well...not yet." To which his response was "pffft!" and walked off. I found that pretty funny. Maybe in the next blog post!

<comment><USER4> You could try using C2BF[1] in an attempt to make it self hosting. :)

[1] [http://esolangs.org/wiki/C2BF](http://esolangs.org/wiki/C2BF)

<comment><USER3> Hey! I like the way you think, my friend!

</comment></comment></comment><comment><USER5> Maybe one day someone will write a native JIT for x86[-64]. Native x86 code in, optimized native x86 code out.

It should be possible to JIT native code and run it faster than running the native code directly!

It could do:

1) Peephole optimizations (and known sequence/function replacement). Utilize target instruction set extensions.

2) "Constant" folding. Replace code that processes values that can be proven to be immutable with a constant. Also removes unnecessary branches. Guards at loads, indirect stores, by marking page read only, etc.

3) Vectorization. This includes widening existing vectorization if target instruction set supports it.

4) Loadable library call inlining. This could even mean inlining system calls, but of course in that case the JIT would need to be running in kernel...

5) Profile guided optimization.

Of course there are some _very hard_ problems. For example, there'd need to be guards for the case the assumed constant value does change. Or that unexpected call target occurs. Etc.

Maybe this system could learn possible call targets and unexpectedly changing "constants".

<comment><USER3> Doesn't LTO do some of these things?

<comment><USER5> I was talking about runtime executable optimization. In general, I don't think this is possible at link time. If the binary is linked in 2015, it's not possible to know about CPUs available in 2035 or to utilize the new features, even if they're binary compatible.

Compiling (incl. linking) bakes in assumptions about target CPU. If these assumptions are incorrect, the performance will be sub-optimal. Even pathologic cases are possible, like order of magnitude lower performance in AMD Jaguar AVX stores.

CPUs have wildly different combinations of instruction set extensions. Instruction throughput and latency varies significantly. Cache subsystems are different.

So code that runs well on one CPU can run sub-optimally on another binary- compatible CPU.

</comment></comment></comment><comment><USER6> JITs don't have to repeat all their work every time they run. They can cache their output (this feature is planned for Java 9, I think). And while, as the article says, JITs are pretty much a necessity for languages with dynamic dispatch, which are nearly impossible to optimize ahead-of-time, they can be great for statically-typed languages, too:

1\. Their ability to speculatively optimize (and then de-optimize when the assumption proves false and recompile) makes it possible for them to implement zero-cost abstractions, such as inlining polymorphic virtual calls.

2\. They make it possible to optimize across shared libraries, even those that are loaded dynamically.

To those interested in the future of JITs, I very much recommend watching one of the talks about Graal[1], HotSpot's (the OpenJDK JVM) next-gen JIT. Like HotSpot's current optimizing JIT compiler, it does speculative, profile-guided optimization, but exposes an API that lets the language designer (or even the programmer) to control optimization and code generation. It is also self- hosted (i.e. written in Java).

It's still under heavy development but early results are promising. Even though it supports multithreading (which complicates things), it performs better (often much better) than PyPy when running Python[2] and on par with V8 when running JavaScript[3].

[1]: [https://wiki.openjdk.java.net/display/Graal/Publications+and...](https://wiki.openjdk.java.net/display/Graal/Publications+and+Presentations)

[2]: [https://docs.google.com/spreadsheets/d/1fFMWcRIuPKt7wSAM5Ox9...](https://docs.google.com/spreadsheets/d/1fFMWcRIuPKt7wSAM5Ox9Rho4BBRhA5xgX6oemGhVxAA/edit#gid=1)

[3]: [http://www.slideshare.net/ThomasWuerthinger/jazoon2014-slide...](http://www.slideshare.net/ThomasWuerthinger/jazoon2014-slides)

<comment><USER7> > JITs are pretty much a necessity for languages with dynamic dispatch, which > are nearly impossible to optimize ahead-of-time,

Depends what you consider "nearly impossible". A lot of compilers for dynamic languages are just awful for no particularly good reason so it's often hard to assess what is slow because it is hard and what is slow because the implementation disregards the last 30 years of experience with compiling dynamic languages.

E.g. I'm working on an ahead-of-time Ruby compiler. While it will need a JIT component for cases where people call eval, and while Ruby is particularly nasty to compile for a variety of reasons, the method dispatch is easy to reduce to one indirection via a vtable (you just need to propagate method overrides down the class hierarchy and update the vtables, but updates to the methods is much rarer than cals so it's ok for it to be more expensive), equivalent to C++ virtual member functions (though C++ compilers have better hope of being able to optimize away the virtual call).

Despite the pathological cases possible because of the singly rooted object hierarchy, for most typical applications the wasted space in vtables (for method slots for methods that are unimplemented in a specific branch of the class hiearchy) is easily compensated for by e.g. needing less bookkeeping for methods that are known statically at compile time (which is the vast majority for most applications).

If you're willing to compile a fallback path and suitable guards, you can sometimes optimize away many indirections entirely and even inline code ahead of time even for languages like Ruby (incidentally for example of that you can look at the work Chris Seaton has done on a JRuby Truffle/Graal backend - while that does these optimizations at runtime, many of them are applicable ahead of time too, though the JIT can get the advantage of not having to generate code for fallback cases unless they're actually needed at runtime)

Note that I agree with you that JIT's have many advantages. At the same time, while I love the flexibility of dynamic languages, I prefer the smallest number of moving wheels possible in production environment. Spent too long doing devops.. Makes me lament the lack of attention to AOT/"as static as possible" compilers for dynamic languages.

<comment><USER8> "E.g. I'm working on an ahead-of-time Ruby compiler.... easy..."

If you haven't already... it's 2015. You might want to go look at the sun- bleached bones of all your predecessors who confidently proclaimed that all the dynamic scripting languages were slow for no good reason and a JIT could totally just JIT all the slowness away.

If it's a journey you wish to take, by all means, be my guest, but, please, be sure you know what you're getting into.

(The aforementioned sun-bleached bones are the bulk of the reason why I no longer believe in the old adage that "languages don't have performance characteristics, only implementations do", at least in the full sense intended. Languages may not have performance characteristics but the evidence rather strongly suggests they _can_ put upper bounds on performance.)

<comment><USER9>
        You might want to go look at the sun-bleached bones of all your predecessors
        who confidently proclaimed that all the dynamic scripting languages were slow
        for no good reason and a JIT could totally just JIT all the slowness away.

I ask this with the best of intentions: where can I learn more about this?

(FWIW, I'm curious specifically about the ways in which Common Lisp (or Lisps in general) does or does not avoid the performance pitfalls of - say - Ruby or Python. But I'm definitely interested in the general topic as well...)

<comment><USER10> If you are coming from the perspective of a Ruby programmer, there are lots of papers on optimising Ruby in the Bibliography [http://rubybib.org](http://rubybib.org).

But what you want to do is take a look at a few of the VM papers there, and then look at their references and see what people have tried previously. The related work sections often talk about previous limitations.

Lisps in general are much more static than a language like Ruby, so it wouldn't be very instructive to compare against them. The trickiest Ruby features are things like Proc#binding and Kernel#set_trace_func, as these require you to modify running code and data structures which may have already been very aggressively modified.

I don't think (but am not an expert) that most Lisps have features like those. Lisps have code as data of course, which sounds like a nightmare to compile, but it's really not - the code trees are immutable (I believe) when generated, so just compile them whenever you see a new tree root and cache.

<comment><USER11> > Lisps in general are much more static than a language like Ruby

What?

You mean running code directly off of data structures like in Lisp interpreters, using late binding, dynamic CLOS dispatch with method combinations, a full blown meta-object protocol, etc. is more static than Ruby?

Okay...

<comment><USER10> > running code directly off of data structures

I specifically addressed this. You may need to re-compile if you see a new code data structure instance, but when you've compiled the fact it came from a data structure isn't interesting. All JIT compilers have code as data - <USER2> have an IR.

> late binding

This is no more troublesome than it is in Ruby.

> dynamic CLOS dispatch with method combination

But these are optional features that you sometimes use. In Ruby all operations, method calls and most control structures use the strongest form of dynamic dispatch available in the language.

> full blown MOP

So does Ruby.

So I can't say Lisp is any _more_ dynamic for the compiler than Ruby. A sibling of yours mentioned a trace extension but said people don't expect it to be fast so nobody is bothering. In the implementation of Ruby I work on, we've even made set_trace_func as fast as we can.

<comment><USER11> > All JIT compilers have code as data - they have an IR.

Lisp interpreters run mutable source code, not IR.

> > dynamic CLOS dispatch with method combination

> But these are optional features that you sometimes use. In Ruby all > operations, method calls and most control structures

If you look at actual Lisp systems it's not optional. IO, Error handling, tools, ... all use CLOS.

> use the strongest form of dynamic dispatch available in the language.

CLOS uses a more dynamic form of dispatch.

> So I can't say Lisp is any more dynamic for the compiler than Ruby.

Using a compiler or interpreter makes no difference for CLOS.

<comment><USER10> Well I'm not an expert in compiling Lisp and I guess you're not an expert in compiling Ruby, so we're probably not going to come to an agreement on this.

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER3> Over in the comments in proggit the inventor of brainfuck, Urban Müller, showed up and gave the Chuck Norris thumbs up: [https://www.reddit.com/r/programming/comments/377ov9/interpr...](https://www.reddit.com/r/programming/comments/377ov9/interpreter_compiler_jit/crkkrz4)</comment>


Lessons learned saving $10,000 bootstrapping a startup - <AUTHOR> https://abdoriani.com/cost-minimization-strategies-bootstrapped-founders-can-instantly-apply-to-save-over-10000/ <comment><USER2> > Bill Gates reads 50 books per week?

<comment><USER3> That was a typo … the article it referenced says he reads 50 books a year, or basically one a week.

<comment><AUTHOR> Yep. Typo. Corrected.

</comment></comment></comment><comment><USER4> Archive: [https://archive.fo/eoPr7](https://archive.fo/eoPr7)

</comment><comment><USER5> cant open

<comment><USER6> Same here. Found this online though.

[https://digitators.com/cost-minimization-strategies- bootstra...](https://digitators.com/cost-minimization-strategies-bootstrapped- founders-can-instantly-apply-to-save-over-10000-abdo-riani/)

Seems it's a marketing piece though.

> P.S. I am a partner with some of the companies I shared with you today. Some > of these companies will share a % of their sales with me if you joined. The > % is at no cost to you.

<comment><AUTHOR> That's weird.

Here it is: [https://abdoriani.com/cost-minimization-strategies- bootstrap...](https://abdoriani.com/cost-minimization-strategies-bootstrapped- founders-can-instantly-apply-to-save-over-10000/)</comment></comment></comment>


Take a pic of your creditcard and get a call from the fraud hotline in 30 mins - <AUTHOR> https://translate.google.is/translate?sl=is&tl=en&js=y&prev=_t&hl=is&ie=UTF-8&u=http%3A%2F%2Fwww.dv.is%2Fskrytid%2F2017%2F10%2F9%2Fdagur-tok-mynd-af-debetkortinu-sinu-stuttu-sidar-var-hringt-i-hann-fra-valitor%2F&edit-text= <comment><AUTHOR> The translation is a bit wierd but it's not totally Google's fault. "Map" in Icelandic also means "Card". And his name, Dagur, means Day.

But yeah, this guy takes a picture of his creditcard at 11:16 (a debit card but they all come with cc numbers as well now), because the numbers were so smudged that they were about to dissapear.

Then at 11:36, exactly 30 minutes later the local VISA company (Valitor.is) calls him. It is the emergency fraud hotline and informs him that someone in Indonesia is trying to use his card.

He used an iPhone and said the photo just went to his "Camera roll" and probably uploaded to his iCloud backup.

His card was immediately closed.

</comment><comment><USER2> I'm confused, how did someone get into his iCloud? Or was there a MiTM?</comment>


Runtime verification in Erlang by using contracts - <AUTHOR> https://arxiv.org/abs/1808.07937 <comment><USER2> Some day, after every language has taken its bits, we might actually see Eiffel in the real world.

Meanwhile, any of this available for Elixir, too? One of the languages on my 2019 list…

<comment><USER3> I wish Eiffel Software changed their dual licensing business model so that more people would consider using the language in production.

<comment><USER4> Bertrand Meyer is constantly at the top of my "people to read when I've read all of my unread books" list and unfortunately the last time I looked those books were out of print.

My feel at the time was that Meyer introduced Eiffel right on the cusp of the move to free compilers, and he never recovered from that tectonic shift.

Whether most developers of that generation could be convinced that rigor was useful I cannot say (but fear the answer is "no"), but they certainly weren't going to pay to learn or use a new language.

<comment><USER5> We certainly paid for our compilers and interpreters, even to learn a new programming language.

Alternative was making our own ones, from code listings.

That rigour is useful, having learned Eiffel, coming from Wirth languages background, reading Code Complete, completely influenced my way of writing C and I regularly used all the nice VSC++ ASSERT macros variants for pointer and argument validation.

Also adopted code contracts in Java and .NET years later.

Coming back to Eiffel, languages need a killer use case for business to adopt them, so they end up only having customers on domains where companies are required to take quality seriously, like high integrity computing.

</comment></comment></comment></comment><comment><USER6> [https://github.com/tamarit/edbc](https://github.com/tamarit/edbc) for those who want to see the implementation

<comment><USER7> When trying to write a demonstration of how something works, why not make it expressive, explicit, and dead simple when attempting to demonstrate the utility of something?

It just looks like a thunk of code, with little rhyme or reason.

<comment><USER8> I gotta agree. The readme itself describes nothing. The code to me feels useless without documentation on how to use it.

Otherwise, I have to painstakingly go through their source or read 19 pages of small font. I don't want to do that.

</comment></comment></comment><comment><USER9> I worked on a large C++ project with design-by-contract pattern a long time ago. It was not the most pleasant experience. There was so much more code to validate pre and post conditions and class invariants. It might have had a lot to do because it was a classic OO business system (think a large Java app now, but where all the code was C++), but I remember spending more time writing the contract code than the actual business code.

Is there any recent writings on this pattern on applying the idea more sanely? As it is, I think I prefer to write testing code outside of the core behavior and have to anticipate what values are valid, or create new tests as bugs are found.

<comment><USER10> I think in languages like Eiffel that have first-class support for DBC, there's less noise because the language is designed to propagate contracts appropriately (e.g. making subclasses inherit contracts from their base classes.)

Also, there's been a lot of work in the Racket community on contracts: I think it has something to do with making Racket/Typed Racket interop safe .

</comment></comment><comment><USER11> "Accidentally" erased footage of the moon landing?!?

<comment><USER12> Wrong thread: [https://news.ycombinator.com/item?id=19095849](https://news.ycombinator.com/item?id=19095849)

</comment></comment><comment><USER13> Every time is correct but machine work vreification is no more like human finger work</comment>


GitLab 13.0 - <AUTHOR> https://about.gitlab.com/releases/2020/05/22/gitlab-13-0-released/ <comment><USER3> Hi! There are a lot of new features with this update, so here are a few highlights:

-improved version of Gitaly service called Gitaly Cluster for high availability git storage [1]

-simplified deployment of GitLab to Amazon ECS [2]

-added epic hierarchy on roadmaps (+ other improvements to our epic and milestone features) [3]

[1] [https://about.gitlab.com/releases/2020/05/22/gitlab-13-0-rel...](https://about.gitlab.com/releases/2020/05/22/gitlab-13-0-released/#gitaly- cluster-for-high-availability-git-storage)

[2] [https://about.gitlab.com/releases/2020/05/22/gitlab-13-0-rel...](https://about.gitlab.com/releases/2020/05/22/gitlab-13-0-released/#auto- deploy-to-ecs)

[3] [https://about.gitlab.com/releases/2020/05/22/gitlab-13-0-rel...](https://about.gitlab.com/releases/2020/05/22/gitlab-13-0-released/#view- epic-hierarchy-on-a-roadmap)

<comment><USER4> -Reduced memory consumption of GitLab with Puma [1]

Puma reduces the memory footprint of GitLab by about _40%_ compared to Unicorn.

Considering one of the most frequent complains about Gitlab is memory usage. 40% is huge.

[1] [https://about.gitlab.com/releases/2020/05/22/gitlab-13-0-rel...](https://about.gitlab.com/releases/2020/05/22/gitlab-13-0-released/#reduced- memory-consumption-of-gitlab-with-puma)

<comment> boleary-gl It is! We're super excited about it. We've been running it on GitLab.com for some time now, and it's been great to see.

<comment><USER5> According to the blog post, the labels are saying that this isn't available on any versions (free, bronze, silver, gold) of gitlab.com?

<comment><USER6> We didn't mark it as a feature of GitLab.com since the company decides if it is used, we also pay for the hosting (memory) cost, and there should be no end-user difference between Puma and Unicorn. But I agree that there is an argument for marking it as available there since all of GitLab.com runs on it.

</comment></comment></comment></comment></comment><comment><USER7> I really like GitLab, especially the Kubernetes integration. Its nice to see some Terraform integration as well. I do hope some of the security scanning goes to lower tiers, that can be very helpful.

The biggest issue with GitLab I find is their stubbornness to have different prices for reporters vs developers[0][1]. It really makes no sense other than they just want more money (even though they are losing a bunch because lots of companies refuse to do it).

[0][https://gitlab.com/gitlab- org/gitlab/-/issues/3320](https://gitlab.com/gitlab-org/gitlab/-/issues/3320)

[1][https://about.gitlab.com/handbook/ceo/pricing/#reporter- user...](https://about.gitlab.com/handbook/ceo/pricing/#reporter-user- permission-pricing)

<comment><USER8> Are you suggesting reporter users should be more or less expensive than developer users?

If you've got some users at a higher tier how are they going to interact with other users within a group that isn't on that tier?

Features recently moved down to silver from gold enabled us to leave jira which has been great. Epics + roadmaps

<comment><USER7> Reporters should absolutely be less. They are there to either view code or view & submit issues.

There are a lot of companies with 10 developers but 100 reporters. Why should those two groups of people cost the same? The interaction is easy - <USER2> already works on the permissions with the different user types. And calculating cost is just as easy - how many reporters vs how many other types.

<comment><USER9> It does get slightly more complicated since those are project level features. I don't know how many users exist that don't have Developer access on at least one repository.

Enforcement of that seems less than ideal. You would have to have GitLab check the number of Reporters and Developers any time someone gets Developer access to a repo. Which means that the repo owner gets the error when you run out of licenses, which is less than ideal. As opposed to a user limit, where presumably whatever team owns Gitlab gets the error when they add the user.

</comment></comment></comment></comment><comment><USER10> Exporting environment variables via artifacts sounds like a strange decision, but I guess its one way to do it. After years of waiting for jobs to communicate other then relying on file artifacts this is somewhat disappointing.

I would like to see parent/child pipelines recive some love as currently it does work but quirks are all around. For example, its not easy (or sometimes even possible) to pass pipeline variables from parent to child, pipline UI behaves differently when being part of relation (and many times unusuable or shows a wrong thing), not being able to repeat manual jobs with the same var initially passed, not even being able to run it again with any other var unless you delete all previous executions, strange limitations on masked secret vars, $ in your password will get evaluated as variable etc ...

Seems like an afterthought, rather then a carefully designed feature set. Too organic for my taste (I guess Conway's law is full blown there).

While Gitlab CI is getting better (or more capable, rather then better) then before in every release, it does seem bloated, overly complex, full of surprises, not reproducible locally, very slow (caching is ridiculous feature that makes job often run longer then without it) and with strange design that doesn't let me view my build log full screen or collect entire pipeline output easily.

Generally, Windows is also lagging behind (I can't use pwsh as runner shell today after 4 years in existence?). The worst recent offender: you display 'fail' on every job in color: " _WARNING: Failed to load system CertPool: crypto /x509: system root pool is not available on Windows_". This trips everybody that job has failed when it didn't.

I think Gitlab guys need to start taking CI/CD/runner more seriously or at least bring some fresh mind to it. After all, this is one of the major reasons for many people to use it.

<comment><USER11> The caching is so broken it's barely usable. You can't easily exclude files. The cache can't be updated incrementally. It's often slower than downloading all dependencies on every build.

<comment><USER12> Instead of caching node_modules, cache node_modules.tar.szt

Then wrap your job in a untar/tar:

        tar --use-compress-program zstd -xf node_modules.tar.zst || true
        YOUR NORMAL JOB
        tar --use-compress-program zstd -cf node_modules.tar.zst node_modules

(and you can delete things you don't need if you want)

<comment><USER13> That's weird won't these all be docker layers somewhere in the guts? So it's already compressed.

</comment></comment></comment></comment><comment><USER14> It looks like it's now impossible to login to gitlab.com web interface via Tor. I only post it here because it was a recent sudden silent change that made gitlab.com unavailable to some, and there does not seem to be a response.

<comment> boleary-gl Can you try again - we are working on changes to our Cloudflare front end ([https://gitlab.com/gitlab-com/gl- infra/infrastructure/-/issu...](https://gitlab.com/gitlab-com/gl- infra/infrastructure/-/issues/10212)).

<comment><USER14> Works fine now, thanks! Sorry I made noise like this, I tried to find alternative channels of communication that presumably should work when someone cannot login via web for any reason, and failed.

</comment></comment></comment><comment><USER15> Terraform integration, and improved DAST scanner that will read in your OpenAPI doc and generate a dynamic scan, for my company which is striving for HiTrust certification, Gitlab has made my life easier. We switched last year and it keeps paying dividends for our security programs.

I hope they begin to focus on more production stability, this week alone we've had 3 disruptions due to issues (although one looked like Google Cloud outage).

</comment><comment><USER16> What keeps me from using gitlab.com is that they flat out reject a signup with an email from my email provider.

Anybody else having that problem?

I wonder if they have a whitelist and only accept users who use the big boys like gmail etc. Or if they for some reason have totally legit email providers on their blacklist.

<comment> boleary-gl GitLab Developer Evangelist here.

It could be that there is a legit email provider that got on the banned list inadvertently. Would you mind sharing the provider?

If you want to not do it in public you can DM me at olearycrew on Twitter or email boleary [at] gitlab.com

<comment><USER16> Hi! Yandex. Am I really the first to tell you? Yandex has a 30% market share in Russia.

<comment> boleary-gl No idea! But I'm going to find out :)

<comment> boleary-gl So we don't think we're explicitly blocking that and have users with that domain.

Could you DM / email me the details and a screen shot? I'll try and help as best I can.

<comment><USER16> Have you tried signing up with an @yandex.com email? The signup page just reloads with this message:

1 error prohibited this user from being saved: Email is not from an allowed domain.

You don't need to have a Yandex account for that. Just put in email@example.com as your email and you get the above message.

</comment></comment></comment></comment></comment></comment><comment><USER17> I really hope some of the the project management tools and scanning features will trickle down to the cheaper/free tiers some time.

I can understand that not everything has to be free but the current feature split of project management and scanning features among the tiers feels a bit haphazard with some crucial things at the highest prices, making it hard to justify the in-between tiers and impossible to buy the highest.

<comment><USER18> I hope the full Jira integration comes down to a level that would at least compare with BitBucket pricing. Right now it's more than double.

My company would switch if the cost was the same or close, but I can't justify paying double even with all the extra features in gitlab.

<comment><USER7> Its not likely. They are insistent on the pricing model, even if it does not make sense. See my post above.

</comment></comment></comment><comment><USER19> The Terraform bits are incredible, GitLab has almost made Terraform Enterprise irrelevant (aside from sentinel, for now). Will we see Vault management soon too?

<comment> boleary-gl GitLab Developer Evangelist here.

Short answer: yes.

Long answer: Also yes, but with a link to the relevant epic: [https://gitlab.com/groups/gitlab- org/-/epics/2875](https://gitlab.com/groups/gitlab-org/-/epics/2875)

<comment><USER20> I love this GitLab's transparency.

Most companies simply ignore questions like these because letting users know the roadmap is somehow scary.

<comment><USER8> +1 It is awesome to see a product manager, dev, and designer actively collaborating and commenting on a feature you're waiting for.

</comment></comment></comment></comment><comment><USER21> Since Gitlab is listening: users sometimes attach files to issues on my project and then regret it. There doesn't seem to be any way to permanently delete such an upload. Sometimes these files have passwords or their employers' secrets. I asked for help in the forums but got no response. Help?

<comment><USER22> Hi! Thanks for reaching out! There's an open issue related to your question:[https://gitlab.com/gitlab- org/gitlab/-/issues/16229](https://gitlab.com/gitlab- org/gitlab/-/issues/16229)

You can't delete attached files if some of them were uploaded by mistake - It's better to use the issue tracker for a feature request.

</comment></comment><comment><USER23> As said before it's frustrating that you can't browse source code or view replies to issues without javascript enabled. This is very basic functionality. I don't expect advanced stuff to work without javascript, but simple operations definitely should. Every other Git repository manager I know of, got this right. Just my two cents.

</comment><comment><USER24> I was so happy when I saw the attention paid to deployment on ECS that I thought maybe they finally (years later) put some more attention into GCP[1], but it appears not. Hopefully in some time in the next few months!

[1] [https://gitlab.com/groups/gitlab- org/charts/-/epics/4](https://gitlab.com/groups/gitlab-org/charts/-/epics/4)

<comment><USER25> Hi Dimitri. We are in the process of deprecating the current GKE listing which Google will be replacing with a single click to deploy listing, currently targeted to go live before the end of June. Thanks for your interest and patience. For more details on other GCP plans see [https://gitlab.com/groups/gitlab- com/-/epics/322](https://gitlab.com/groups/gitlab-com/-/epics/322). Larissa Lane, Distribution Product Manager

<comment><USER24> Awesome! I'll look forward to that release!

</comment></comment></comment><comment><USER26> I love gitlab but I run into two issues constantly:

1\. Gitlab CI with DinD kills the docker cache on every build. For a large monorepo this is a huge pain. Really needs to be addressed with some host volume mount of the docker daemon layer cache per concurrent job.

2\. No say to specify CPU/disk/memory usage of a CI stage. I have a large number of builds that need ~512mb of ram per build and another build that needs 4GB of ram. Because of this I need to make sure every instance of the runner has exactly 4GB of ram available. This is a large waste of resources.

Gitlab is a fantastic product and I'm super happy for migrating multiple companies to it and that they keep innovating.

<comment><USER27> On your second point, you can achieve this with tags. See here: [https://docs.gitlab.com/ee/ci/yaml/#configuration- parameters](https://docs.gitlab.com/ee/ci/yaml/#configuration-parameters) and [https://docs.gitlab.com/ee/ci/runners/#using- tags](https://docs.gitlab.com/ee/ci/runners/#using-tags)

On the runner side you can tell it which tags to accept, and on the .gitlab- ci.yml side you can tag your jobs.

We mainly use this to make most jobs run on AWS EC2 spot instances, but a few use on-demand instead. We also use it to give a couple of jobs a larger instance size.

<comment><USER26> Can you do that within the same repo? I mainly work in a large monorepo.

<comment><USER27> Yep - I use a monorepo too. You just set tags on your runners, and tags on your CI jobs, and Gitlab's scheduler will assign the jobs to correct runners for you. It's worked perfectly for us.

</comment></comment></comment></comment><comment><USER28> Already bumped our postgres RDS to 11 for this. Upgrade time! [edit] Upgrade went well

<comment><USER29> Is PG 11 required for this new release? Does PG 10 work?

<comment><USER30> Currently probably works, but they want to depend on the ability to use features supported only in pg11+ to be able to get better performance.

[https://about.gitlab.com/releases/2020/05/22/gitlab-13-0-rel...](https://about.gitlab.com/releases/2020/05/22/gitlab-13-0-released/#postgresql-11-is- now-the-minimum-required-version-to-install-gitlab)

</comment></comment></comment><comment><USER31> I am running Gitlab in Docker (using official images), how would you go with upgrading from version 12.10 without losing any data? I am using volumes for Gitlab data.

<comment><USER32> Please read through the upgrade notes for 13.0 as there are some important changes like PG11 being a minimum requirement.

As for the actual upgrade, you should be able to follow the standard process outlined here since you are persisting your data outside the container: [https://docs.gitlab.com/omnibus/docker/#update](https://docs.gitlab.com/omnibus/docker/#update)

<comment><USER31> Updated without any issues, thanks.

</comment></comment></comment><comment><USER33> The thing that is really missing in gitlab CI is the impossibility to define a matrix for builds.

We have to do the same actions on different environments and it is very troublesome.

<comment><USER34> Agreed! That's why we are working on it this release - [https://gitlab.com/gitlab- org/gitlab/-/issues/15356](https://gitlab.com/gitlab- org/gitlab/-/issues/15356)

<comment><USER35> I would love to see a situation where we could predefine a matrix and then toggle different products on or off.

For example, we have:

Models A, B, C, D Builds Debug, Release

Normally this would be

A Debug A Release B Debug B Release

And so on, and so on. In our case, where we have about 90 different models, it would be extremely useful to be able to configure, via a GUI of some kind, which of those intersections we want, rather than rebuilding the entire set for a configuration option which only affects one or two models.

At this point, the only option available to us is the Jenkins Matrix Build Plugin, which is awful in a few fairly frustrating ways _, but is also the only thing that does what we want.

_ Examples: configuring an SCM in a matrix build job results in one svn checkout for the matrix build job and one checkout each for the cartesian product, and then, since we have a separate child job for doing builds, one checkout each for the child jobs. We don't want the matrix job to do any checkout, but if you configure it with a Git or SVN URL then it will do it regardless.

<comment><USER36> You can get quite close with includes and yaml anchors

<comment><USER33> I have less than 20 environments to configure and it is already extremely messy in gitlab CI.

So messy that at the moment it is just a little toy and it will never actually work in production.

With 90? No there is no way you can create a reliable gitlab CI with so many environments.

Beside there are several bugs in gitlab CI and support is basically useless even for an organisation like ours where I believe we are one of their largest costumers. Our tickets (or at least the one I create) are simply ignored.

<comment><USER37> Oh wow! This is very much the kind of feedback we are looking for as we redesign our environments views. Can you share your issues here?

<comment><USER33> Hi there,

this in our jenkins.

[https://imgur.com/a/BkdgVHK](https://imgur.com/a/BkdgVHK)

The matrix that you see is one of the most complex one, jobs that build the documentation are much simpler.

If you need more, please let me know.

</comment></comment></comment></comment></comment></comment></comment><comment><USER38> Nothing against gitlab as I use and pushed for it in my company, but I feel it's heading towards Azure Devops(this might be entirely baseless). By that I mean it's geared more towards enterprise teams and business than startups looking to build stuff and deploy. I say this off the complexity of their UI, their feature set and what they seem to prioritize.

<comment><USER39> Most businesses prioritize what people pay them for (or they run out of money). Gitlab is accumulating enterprise features because enterprises are paying them for those features. Most places I've worked have used GitHub and it's good enough. Some also had Gitlab for "secret" stuff but if you trust GitHub with your main code then you already trust them with a lot so might as well just use them for all code hosting.

</comment></comment><comment><USER40> Too bad for me my company's IT team is going to force my group off of gitlab and on to azure devops.

</comment><comment><USER41> Does gitlab offer a stripped down version with only vanila 'git' ?

<comment><USER42> You might want to look at gitea: [https://gitea.io/en- us/](https://gitea.io/en-us/) it is a pretty minimal git web application.

<comment><USER43> I wouldn't call it minimal. It's got enough for many workloads.

</comment></comment></comment><comment><USER44> Issue edit history still has not enabled

</comment><comment><USER45> Hooray!</comment>


Ask HN: Structuring a revenue stake agreement on web work - <AUTHOR>

Recently, my side web development business has taken an interesting turn.
One current hourly client and one potential client have both approached me with revenue cut offers in exchange for long term arrangements and a reduced hourly rate.  At first, I shunned such an arrangement, but now realize I may be losing an opportunity and an ability to guarantee some level of future revenue.  It may  even be possible to earn more than I do right now in my current full-time job.
Both clients have stated they want a long term partner for the development of their web offerings, and feel offering a revenue stake is their best path to get there.
What questions should I be asking? How are agreements like this typically structured?
I'm asking so when I speak with a lawyer I have some semblance of the key points with which I should be concerned.  I'm sure other HN folks have been offered similar choices, and I'm having a hard time getting out of the "my time and experience is worth X per hour and any other arrangement is ripping me off" mindset.
I'd like to hear what you folks think, or if you have had experience in arrangements like this.
Thanks! <comment><USER2> To pay a consultant with equity, the company should have an incentive plan. It'll be called something like 2012 [COMPANY NAME] STOCK PLAN and they'll provide you with a copy. The plan matters for securities laws reasons. If they don't have one, it's more their problem than yours, but it'd be nice to know they're doing things legit (because if they're not, it could indicate they're not paying attention to tax issues that impact you - see below). The company's plan will probably have a few different types of instruments they make awards with. I'd assume they'd provide you with restricted stock or restricted stock units (RSUs). The first makes sense if the company has no value, the latter makes sense if they do. I would not want options or any other instrument that only has value based on the increased value of the company, in this case.

It may seem surprising, but hopefully logical, that you become an "investor" for securities laws purposes when receiving equity awards. It won't hurt to think like an investor. You might ask the company whether they've done any external valuations, and do your own diligence to ascribe some value to the company. You'll also want to get a sense of what the company's plan is and how/when they anticipate exiting, so you actually get something for that equity. You can defer to VC's judgment on liquidation concerns if the companies are VC backed, since that trajectory is typically pointed towards an exit. Ultimately, the value of your share of equity over the time you'll spend working for the company, adjusted for the time-value of money and risk you'll never get to liquidate might help you get out of the current mindset, though maybe it'll often yield the same conclusion.

As I mentioned above, there are big tax issues in all of this. If the company (uses the wrong)/(misuses an) instrument, you can be personally liable for a lot of money, without ever having received any cash to pay the burden. If you get stock, you've received property for services which constitutes income in the US (IRC Section 83(a)). If that stock has no value, you're fine, but need to make an 83(b) election if it vests. If the stock does have value, you need to use an instrument that defers your recognition of income until you have the ability to liquidate (RSUs can do this) or be paid in a combination of equity + cash to offset the tax burden.

Hope this helps you decide whether you want to invest in these clients.

<comment><AUTHOR> Thanks for taking time to reply. I had no idea this was so complex. Is this different if these are small, privately held companies? One's a retail hydroponic supply shop. I can't imagine they have a stock plan documented. I'm pretty sure they are not VC financed. Also, they mentioned a cut of revenue(unknown if it's from gross or net), not an equity stake.</comment></comment>


Conversation with GPT-3 on Nanotechnology as a Key to Human Immortality - <AUTHOR> https://medium.com/@kirkouimet/nanotechnology-6b3ebbae5e80 <comment><USER2> Who'd have thought Peter Watts would ever need to fear automation putting him out of a job?</comment>


Ask HN: What makes for a good forum experience (software-wise, not content) - <AUTHOR>

My new site will have a 'built in' forum. It's going to be an important aspect of the site so I would like to get it spot on.<p>Which forums do you find a joy to use and are there any common features you dislike?<p>* The forums will be inhabited by computer gamers. <comment><USER2> Minimum signup process (username & password, like HN)

No signatures

Maybe no avatars

No premature pagination (don't split threads to pages with 10 posts per page). HN doesn't have any pagination inside a thread.

up/down votes.

No crappy wysiwyg editor; use markdown like stackoverflow.

Minimum or no category hierarchy. Use tags.

<comment><USER3> these are gamers. They'll want avatars of their favourite characters, and sig lines with the time spent playing, hardware setup, etc.

<comment><USER2> Which would make the forum experience a bit annoying

</comment></comment></comment><comment><USER4> Personally, I dislike seeing the number of views a thread has, as all that shows is how attention-grabby the title is.

Quick-reply and notify by email are two features I find nice to have. Broken search is another mis-feature that I'd be happy to never see again.

</comment><comment><USER5> I need to be able to easily turn off all the other crap that people display, like avatars and sigs.

A good way to follow the posts I commented on is crucial.

</comment><comment><USER6> \- Editable quoting (no cut and paste)

\- Decent bbcode, but nothing complex

\- Good search functions (in this thread, in this forum, on all forums, for one user). Google Search sometimes gets it wrong and that can be very frustrating.

<comment><USER2> I disagree. I can't see why any of that really matters.

bbcodes are more frustrating than useful, most people make mistakes while trying to use them (forgetting to close a tag, specially when they nest tags, e.g. url inside a color inside a quote)

What's wrong with copy/paste quoting?

<comment><USER6> bbcode: So you'll let people enter HTML, or do you just not think anyone should have to include an image on a forum ever?

quoting: Taking your thought further, what's wrong with retype quoting?

</comment></comment></comment><comment><USER7> Gamers are notoriously rowdy. You will need good moderation tools. Make it easy to delegate administrative tasks to volunteers or paid helpers so you don't become a bottleneck.

</comment><comment><USER8> You are definitely asking the wrong people.

<comment><AUTHOR> I'm sure there's a HN/gamer overlap. Even if there weren't it doesn't mean there won't be some useful ideas here.</comment></comment>


SuPPort: Evented Python servers - <AUTHOR> https://www.paypal-engineering.com/2015/03/17/introducing-support/

<comment><USER2> This is a nice balance of the trade offs of the various concurrency primitives in Python.

Greenlets for lightweight concurrency, threads for preemptive concurrency and processes for parallelism / isolation.

</comment><comment><USER3> Interesting this is built using gevent since in Python 3.4 things are moving away from gevent in favor of Asyncio. The last time I checked (a few months ago) gevent is only supported on Py2.7 unless you're using a fork that has patched Py3 support which still has a number of outstanding bugs. I'm curious what the migration path is going to look like to 3.0+ since 2.7 is near EOL (2020?).

<comment><AUTHOR> That's a pretty coarse description of the Python concurrency landscape. "things are moving away"?

For one, there was never really official Python backing for gevent and other coroutine-oriented programming models. Remember asyncore? From our standpoint, Python 2.7 continues to be the industry standard, and we'll continue to target it for the foreseeable future. Should some major internal or open-source use case come along and make it advantageous for us to target Python 3, we would approach it like any other feature request. Python 2 will not be vanishing from beneath your feet anytime soon. ;)

<comment><USER4> It's less about where Python 2.7 is going and more about where the libraries themselves are going. If you use a library which is considered deprecated by a large part of the python community, don't be surprised not to aspire new contributors.

No one expects 2.7 to go away, that doesn't mean contributors _want_ to deal with Python 2 when 3 is available elsewhere.

<comment><USER5> It's tendentious to describe gevent as deprecated.

Like Twisted, there are many projects that continue to choose to use gevent, and consequently (for either of those libraries) Python 2. They solve real problems, as does the codebase we extracted SuPPort from, and we hope to help these projects rather than shun them.

Additionally, asyncio doesn't provide the same user API that gevent does: automagic task switching. Whether or not you _like_ that API is a separate issue.

Finally, even if a person has no interest in using SuPPort, we hope that it might provide her insights into problems she'll likely encounter when using asyncio (or Tornado or Twisted or eventlet or any evented system.)

<comment><USER4> I re-read my comment and found it to be unwittingly snarky, I apologize. I really like the fact you guys open sourced your stack. I just meant to warn you that 2.x-only stacks are unlikely to attract _new_ people because, as I said, when 3.4 is out there and usable, why would someone start something fresh on 2.x?

</comment></comment></comment></comment></comment><comment><USER6> stack looks solid, coroutine, stats, and utilities, i'm interested in giving it a spin. some interesting libraries in there i haven't seen before. even then its hard to reconcile statements like native gevent (sans monkey) with libraries like flask (thread locals) or even the std lib. one of the main benefits of gevent vs twisted or other async libs is the ability to actual reuse the python ecosystem via a handful of monkey patched modules, a position which this stack effectively disavows.

<comment><AUTHOR> gevent has lots of benefits outside monkeypatching! That said, historically we mostly chose gevent as it seemed like the better interface to greenlet, which we really liked. For the most part, we were (and in many cases still are) trying to cater to a Python community of beginners. Greenlet-based approaches seemed easier to explain than other options, and sure enough we rarely hear complaints about development complexity, etc.

</comment></comment><comment><USER7> OK kind of TLDR; I just took the packages that they use from the link they had provided.

boltons==0.4.1

cffi==0.8.6

clastic==0.4.2

cryptography==0.7.2

enum34==1.0.4

faststat==0.3.1

gevent==1.0.1

greenlet==0.4.5

hyperloglog==0.0.9

lithoxyl>=0.1.0

psutil==2.2.1

py==1.4.26

pyasn1==0.1.7

pycparser==2.10

pyjks>=0.3.0.1

pyOpenSSL==0.14

pytest==2.6.4

sampro==0.1

ufork>=0.0.1

six==1.9.0

Werkzeug==0.9.4

<comment><AUTHOR> they're so close to alphabetical; this is killing me</comment></comment>


Ask HN: Re-inventing an acquired & closed Startup, Need Advice - <AUTHOR>

Me & my co-founder started working on an idea 4 months back we are 50% into it. And two days back I stumbled across a post about another startup/product which had a same product(approximately it is a 90% overlap). This previous start-up ran for around 2-3 years, and was eventually bought by Google for rumored 10+ mil $. Google had shutdown the product(tech pundits commented that it was basically acqui-hired), Also founders have a patent about how they technically implemented the idea. The product was widely used and had an install base of 100+ mil. Me & my co-founder are not co located, and are working. This weekend I am travelling to meet him and decide the future course. Thought of getting some advice from HN community first. Please advice if you would continue with development, or start looking for another problem to be solved(Idea). <comment><USER2> Only do it if you very 1. objectively feel the problem is not solved well today 2. very much want to solve the problem.

Those are always the first two prerequisites.

</comment><comment><USER3> Go for it. Worse case scenario: you gain some experience.

<comment><AUTHOR> Thanks for response, I am also inclined o this only. Because I think it a void which needs to be closed, no matter it was caused due to lack of product or a product getting bought and closed.

<comment><USER3> Make sure that the business aligns with your goals and needs. A little research can go a long way.

Does it provide value that people are actively seeking, or will you need to put in long hours to convince people of its value?

How do others monetize the business and did it work? Why or why not? What will you do differently? Why?

Why was it bought and closed? Have you talked to anyone involved in that decision? Have you attempted to talk to someone who has knowledge of the situation? There are most definitely factors that you are not considering because you weren't involved. Like they say, you only know what you know.

Those are just some example questions to ask yourself. Figure out what questions make sense for you and your business/idea.

</comment></comment></comment><comment><USER4> I'm just curious (and not trying to be a dick), but how come you didn't come across the product sooner? It seems that it had huge appeal.

<comment><AUTHOR> No idea, even I am so dumbfounded. May be I didn't search enough.</comment></comment>


Pome – Postgres Metrics Dashboard Written in Go - <AUTHOR> https://github.com/rach/pome <comment><USER2> Anyone else have custom dashboard fatigue? I'm pretty tired of seeing custom dashboards written for different pieces of software.

I'd really like to see more effort going in to API's that allow you to pull data from (in this case) PostgreSQL in a meaningful way that are open, extensible and composable. Maybe this is a "big platform" problem, but for me all these once off dashboards just don't scale when you've got so many different parts of your stack.

<comment><USER3> also, "written in go" fatigue. Can't wait for this trend to die.

<comment><USER4> From a deployment standpoint, having a tool written in Go is a win for me since it is much simpler to get running than something in python or ruby which almost certainly has a larger dependency tree.

<comment><USER5> Except the Go deployment story is nothing new and is available to any programming language with AOT compilation to native code that has ever existed.

<comment><USER6> For Java/C#/Ruby/Python/Perl/Javascript etc which constitute huge amount of business related apps development it is new and convenient deployment strategy .

<comment><USER5> Scripting languages don't have AOT compilers to native code.

Java and C# do have AOT compilers to native code, capable of producing static executables, you just need to buy them.

<comment><USER7> C# will have free native compilation soon.[1]

[1] [http://www.hanselman.com/blog/ExploringTheNewNETDotnetComman...](http://www.hanselman.com/blog/ExploringTheNewNETDotnetCommandLineInterfaceCLI.aspx)

<comment><USER5> I know about that, but as of today you can only get it for free with Mono or Windows Store with VS 2015.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> Looks interesting, but supports fewer metrics than Zalando's PGObserver[1] which I've used and find to be very useful to monitor your PostgreSQL installation(s).

Also Pome only supports PG9.4, whereas PGObserver supports older versions (I used it on 9.3 and 9.1)

[1] [https://zalando.github.io/PGObserver/](https://zalando.github.io/PGObserver/)

<comment><USER9> Thanks for sharing this. I will look at which metrics that I can include from this project. I can also say that CPU can't happen to keep the project gathering data only through Postgres (except if you know a way)

The goal of Pome was to be very easy to setup for people who put nothing in place, which is why wrote it in Go. But if you have some time there is much better/complete tools like collectd.

</comment></comment><comment><USER9> Here the author. Glad and scare that this project reached the 1st page of HN. This project is at a very early stage but I had to release it at some stage. I wrote some explanation in the Readme [1] and in a blog post [2].

TL;DR: Pome aim to be very simple to deploy, opinionated and battery included tool to have a look at the health of your PG db. It's maybe not the case of anybody here but in my career, I have seen many PG db for which no health status were track (or because people think that RDS is magic). I assumed that if a very simple tool existed then it gives less reason to not track their health status.

At this stage, I don't think that Pome offers enough to be very useful but I hope that you will like the direction taken and where it's going.

Pome isn't aiming to be a tool for humongous Postgres instances which are already in the hands of a DBA who can have the time to setup more advanced monitoring tools. Pome won't be an alternative to a more configurable tool like collectd.

[1] [https://github.com/rach/pome#why-building- pome](https://github.com/rach/pome#why-building-pome)

[2] [http://rachbelaid.com/introducing- pome/](http://rachbelaid.com/introducing-pome/)

</comment><comment><USER10> Would be interested if it could do something like OpsDash[1]. Also, would it work with a AWS RDS Postgres?

[1] [https://www.opsdash.com/blog/postgresql- monitoring.html](https://www.opsdash.com/blog/postgresql-monitoring.html)

<comment><USER11> A quick glance at the README.md indicates that you can input the hostname, port, etc. of your db at the command line, so it should work with AWS (your hostname would be something like blah.blah.us-east-1.rds.amazonaws.com).

</comment></comment><comment><USER12> any equivalent for MySQL?

</comment><comment><USER13> The description is missing a t in two places in this sentence:

"Pome stands for _Posgres_ Metrics. Pome is a _PosgreSQL_ Metrics Dashboard to keep track of the health of your database."

It should be _Postgres_ instead of _Posgres_ and _PostgreSQL_ instead of _PosgreSQL_.

<comment><USER14> I made a PR: [https://github.com/rach/pome/pull/20](https://github.com/rach/pome/pull/20)</comment></comment>


How come Apple has great build quality products while other brands don't? - <AUTHOR> http://eve.community/t/how-come-apple-has-great-build-quality-products-while-other-brands-dont-manufacturing-techniques-and-their-effect-on-build-quality/ <comment><USER2> They don't.</comment>


Interplanetary Transport Network - <AUTHOR> https://en.wikipedia.org/wiki/Interplanetary_Transport_Network

<comment><USER2> Submitted several times, but never any discussion:

[https://www.hnsearch.com/search#request/all&q=title%3A(inter...](https://www.hnsearch.com/search#request/all&q=title%3A\(interplanetary+transport+network\)&sortby=create_ts+desc)</comment>


Amazon's Silk Browser To Be A Data Mining Jackpot - <AUTHOR> http://www.techdirt.com/articles/20110929/23172216142/amazons-silk-browser-to-be-data-mining-jackpot.shtml <comment><USER2> With Silk, Amazon will be able to see what webpages Kindle Fire readers are reading, and they can mine that data to figure out which web pages are read together. Based on the pages that are read together, Amazon can build interesting web page recommendation system using collaborative filtering techniques.

</comment><comment><USER3> Why would you use Silk over other browsers? It seems like the real benefit of precaching content does not really apply in the desktop case. You don't have near the restrictions on bandwidth, or computing power that you have on a tablet.

Also wasn't there some speculation that there might be serious issues with performance of Javascript throught the Silk system. While agree that it is a large amount of data being aggregated I would be suprised to see this anywhere other than the mobile space.

</comment><comment><USER4> I pre-ordered a fire. Honestly if i'm reading about some random topic (i was just reading a page about econometrics) if Amazon all of the sudden started recommending me books about econometrics, i'd be okay with it. As long as the recommendations are good.

</comment><comment><USER5> The "split browser" is not something new though. Microsoft had deepfish, Opera does that for its mobile browser I think. How do they address these concerns?</comment>


Trump threatens a 25% tariff on the iPhone and Apple laptops - <AUTHOR> https://www.fastcompany.com/90272668/trump-threatens-a-25-tariff-on-the-iphone-and-apple-laptops <comment><USER2> That table of cost structure of an iPhone seems pretty misleading. If China accounts for $8.46 of cost/iPhone, why not move the manufacturing over to US to counter the tariff challenges? Something seems amiss and is not being illustrated correctly. My guess is that the cost of labor plus the fixed cost of putting up a factory in US is probably the major breaking points.

</comment><comment><USER3> Yeah, but it's not just about Apple.

</comment><comment><USER4> Most people do not notice the hit in banning exports to China if soybeans and pork. And the Trump Administration is repaying farmers for at least some of the lost revenue.

However, Apple products are mass-market consumer items. I would expect the rage from any significant tariff on iOS devices to cost some measure of those who would otherwise support his presence in the White House.</comment>


IE team sends a cupcake for FireFox 5 - <AUTHOR> http://img.ly/5k48

<comment><USER2> The Internet Explorer team sent Mozilla a whole cake for previous Firefox releases.

[http://www.openbuddha.com/2011/03/22/another-version-of- fire...](http://www.openbuddha.com/2011/03/22/another-version-of-firefox- another-cake/)

What does this mean?! Perhaps Firefox 5's release is not as significant as earlier versions? ;-P

<comment><USER3> It means that the IE team clearly saw through Mozilla's transparent attempt to get more cake by releasing more often.

<comment><USER4> This may be the last cake.

<comment><USER4> I meant that in the sense that they are switching to rolling versions (i.e. no more versions, it's just 'firefox')

</comment></comment></comment></comment><comment><USER5> I'd like to see them send Google one for every Chrome release.

<comment><USER6> That would get expensive.

<comment><USER7> I think that's why they switched to cupcakes.

<comment><USER8> Smaller changes, smaller cakes.

</comment></comment></comment></comment><comment><USER9> They spent all that money on Skype and now this is all they can afford. It's the thought that counts.

</comment><comment><USER10> Sincerely, this is a lovely tradition.

<comment><USER11> I was just about to say the same thing — this is my favourite industry tradition. Hats off.

</comment></comment><comment><USER12> They should send IE text-shadow

</comment><comment><USER13> Now that Firefox 5 has a smaller release cycle, does that mean smaller cakes? :-)

</comment><comment><USER14> I like when developers can put aside the retarded faux hatred we are all supposed to have for each other as dictated by our corporate / OSS overlords and do things like this, of course I am sure many will find some demeaning/ulterior motivevs, because you know, no way the IE team actually has human beings on it.

</comment><comment><USER15> Too bad they didn't roll out a funeral procession like they did for the iPhone when Windows Phone launched...

</comment><comment><USER16> IE team loves to poke shots at other browsers. Anyone remember the giant E placed on the lawn of Netscape's office in Mountain View? I think it was ~1997. They then dominated the browser market for the next few years.

</comment><comment><USER17> That's awesome. Mozilla was very inconsiderate of the IE team on changing release cycles :D

</comment><comment><USER18> appropriately sized

</comment><comment><USER19> It's a trap!</comment>


GCHQ asked to step up action against cyber-attack threat to financial services - <AUTHOR> http://agrater.com/a.php?a=24143 <comment> wu-ikkyu That's all well and dandy, but what about asking financial services to step up their own security? There comes a point where neglecting your own security foils anyone else's attempts to do so for you.

The least they could do is update their password rules, update from SQL Server 2000, or implement single use credit card numbers like Final.</comment>


Top 3 Movies you have seen - <AUTHOR> Thought it would be interesting to know the Top 3 Movies seen by you. Selfish Interest to update  my online movie rental list.
My Top 3.
1. Pan's labrynth
2. Old Boy
3. children of heaven <comment><USER2> 1\. 2046 by Wong Kar Wai (Cantonese film) 2\. In the Mood for Love by Wong Kar Wai (Cantonese film) 3\. Baraka by Ron Fricke (No story, no language, just photography)

</comment><comment><USER3> 1\. Moon 2\. Planer of the apes ( original ) 3.... ah too many to list ! 3+ ) Eternal Sunshine of the Spotless Mind

Also the boy in the stripped pijamas is pretty good !

<comment><USER3> new lines not working

<comment><USER4> Read the formatting information. New lines don't create new lines, leave a blank line to create a new paragraph.

<http://news.ycombinator.com/formatdoc>

</comment></comment></comment><comment><USER5> 1\. Lock, Stock, and Two Smoking Barrels

2\. Dazed and Confused

3\. Caddyshack

</comment><comment><USER4> There are loads, but these come immediately to mind:

1\. The Princess Bride

2\. The Fifth Element

3\. The Englishman Who Went Up A Hill But Came Down A Mountain

</comment><comment><USER6> 1\. The best of Youth. (Italian movie, 6 hours long, completely moving) 2\. Empire of the Sun 3\. ...

</comment><comment><USER7> 1\. Raising Arizona

2\. Fear and Loathing in Las Vegas

3\. 12 Monkeys

</comment><comment><USER8> 1\. Pan's labyrinth

2\. Good Will Hunting

3\. Little Miss Sunshine

</comment><comment><USER9> 1\. Rashomon

2\. Apocalypse Now

3\. 12 Angry Men

</comment><comment><USER10> 1\. Gladiator

2\. Heat

3\. Michael Clayton

</comment><comment><USER11> 1\. Casablanca

2\. Chinatown

3\. The Maltese Falcon

They don't make 'em like they used to ...</comment>


Ask HN: So dunno how to reach Google but I think their bot is broken - <AUTHOR> So I was doing some webdev and playing around with my projects. Got a 404 and decided to check my Nginx logs and this stared back at me, just scrolling by
SNIP

  220.127.116.11 - - [04/Feb/2018:16:09:38 +0200] "GET /manual-motor-scania-dc12-53a-pdf-download.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
  18.104.22.168 - - [04/Feb/2018:16:09:38 +0200] "GET /15-incredible-uses-for-leftover-cake-the-craftsy-blog.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
  184.108.40.206 - - [04/Feb/2018:16:09:38 +0200] "GET /tab-top-curtains-drapes-youll-love-wayfair.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
  126.96.36.199 - - [04/Feb/2018:16:09:38 +0200] "GET /en-dwg-pdf.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
  126.96.36.199 - - [04/Feb/2018:16:09:38 +0200] "GET /the-fda-top-ten-pdf.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
  22.214.171.124 - - [04/Feb/2018:16:09:38 +0200] "GET /philips-fw-c785-user-manual-pdf-download.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"

 SNAP
I have no idea how long this has been going on but I have already over 40MB of this in just one log file starting at 06 in the morning. The IPs do match Google's, too. I mean, I did ask my site to be indexed but these don't even seem like something you'd index but something you'd use as search terms!
Did someone break a config? Am I just a n00b? Am I under an attack from a l33t h4x0r? What the heck is going on?
Find out in the next epis^Wfew hours of: Ask HN! <comment><USER2> It's possible that your site's IP was used previously for some other sites and it was indexed as [http://IP/..](http://IP/..). now google will retry to fetch the urls for a time.

Maybe you have someone's domain resolving to your IP. Seems to me that nginx is resolving the IP to the default site in the config.

<comment><USER3> I think it is likely the first option (site IP was previously used), as I searched for some of those paths and they look to be spread across different domains. Perhaps a shared host with many domains pointing to the same IP?

<comment><AUTHOR> I've had the same IP for 4 years. I think it's unlikely that Google started scanning after 4 years.

</comment></comment></comment><comment><USER4> are you saying Googlebot is accessing these URLs on your domain, but they should not/ do not exist? One possiblity is that your stie was hacked and somone did add these URLs for spammy purposes. Do a [site:yourdomain.com] search just to be sure.

And while you can't reach Google directly, you should be able to get more expert support in their Webmaster Help forum: [https://productforums.google.com/forum/#!forum/webmasters](https://productforums.google.com/forum/#!forum/webmasters)

<comment><AUTHOR> That's exactly what I'm saying. I'm rather confident that there's no one inside my machine.

And I mean, it doesn't affect me at all, I'm just curious why it's happening!

</comment></comment><comment><USER5> I don't know exactly what's going on but it may have something to do with referrer spam.

Those URLs may have appeared somewhere else or in some other way fed into Googlebot.

<comment><AUTHOR> Yeah, and they are valid documents at least by checking a few.

The interesting question is: why me and why isn't Google detecting such sillyness?

</comment></comment><comment><USER6> May or may not be related but I've seen similar looking spam traffic in my Google Analytics accounts historically.

[https://www.optimizesmart.com/geek-guide-removing- referrer-s...](https://www.optimizesmart.com/geek-guide-removing-referrer- spam-google-analytics/)

It might be a spammer spoofing the Googlebot user agent; the IP looks legit though.

Do you have a sitemap or robots.txt on the site?

<comment><AUTHOR> Yeah the first idea was of course that someone is spamming me but:

Like you said the IPs seem legit

And it's just a personal site, no ads or paid content or services.

No sitemap or robots.

</comment></comment><comment><USER7> I don't know the cause of the issue but searching for these documents in a search engine may help. I found this spammy page for example [http://cat2.inqbaytor.com.au](http://cat2.inqbaytor.com.au).

</comment><comment><USER8> Log a full request and check out the host header. That will tell you what domain they are hitting and you can check their DNS. They will probably be pointing to your ip.

</comment><comment><USER9> Are you on Dreamhost? [http://automodelista.com.au/](http://automodelista.com.au/) ?

<comment><AUTHOR> Nope, but it is from a VPS provider, though one I've had for many years.

<comment><USER9> Changed IPs recently?

<comment><AUTHOR> Nope, as far as I know I've had the same IP for years.

</comment></comment></comment></comment><comment><USER10> Are you running WordPress? At some point was it hacked? Is it hacked now? If it was at some point, maybe those were all real pages in the past. If it is now, maybe the bad guys just changed what they were doing. I've seen pages like this generated in hacked WordPress sites.

<comment><AUTHOR> Nope, never had WP on my machine.

</comment></comment><comment><USER11> Any spammer/automated URL scanner can set their user host was "Googlebot". Doesn't mean it's Googlebot.

<comment><USER12> Not really. A spoofed ip during handshake will fail. course, unless OP configures the log file format such that Nginx is told to log something not the real ip address. If your user enters your load balancer/proxy server (e.g. Nginx) and then you forward that HTTP request to your backend, the backend sees the ip address of your load balancer/proxy server, but conventionally you can set X-Forwarded-For header, then backend can read the X-Forward-For and "trust" that's the original IP.

But this header can be set to whatever the value you want, if you have the control of the load balancer/proxy server. You can also

<comment><AUTHOR> Default Nginx log format so the ip should be the real deal, at least according to Nginx. No load balancer or proxy is used.

</comment></comment></comment><comment><AUTHOR> As an update: still getting the traffic

</comment><comment><AUTHOR> A larger sample

      188.8.131.52 - - [04/Feb/2018:15:46:13 +0200] "GET /letters-papers-from-prison-pdf.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      184.108.40.206 - - [04/Feb/2018:15:46:13 +0200] "GET /xerox-phaser-8560-service-manual-pdf-download.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      18.104.22.168 - - [04/Feb/2018:15:46:14 +0200] "GET /syllabus-of-basic-education-2017-statistics-and.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      18.104.22.168 - - [04/Feb/2018:15:46:14 +0200] "GET /challenge-champion-305-tc-paper-cutter.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      18.104.22.168 - - [04/Feb/2018:15:46:14 +0200] "GET /frost-nixon-wikipedia.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      220.127.116.11 - - [04/Feb/2018:15:46:14 +0200] "GET /dremel-multi-max-3-3-amp-corded-oscillating-multi-tool.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      184.108.40.206 - - [04/Feb/2018:15:46:14 +0200] "GET /the-effects-of-fabrication-methods-and-cure-cycle-on-the.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      18.104.22.168 - - [04/Feb/2018:15:46:14 +0200] "GET /common-paint-problems-with-solutions-and-preventions.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      22.214.171.124 - - [04/Feb/2018:15:46:14 +0200] "GET /introduction-to-criminal-justice-university-of-texas-at-dallas.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      188.8.131.52 - - [04/Feb/2018:15:46:15 +0200] "GET /blank-business-card-template-free-premium-templates.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      220.127.116.11 - - [04/Feb/2018:15:46:15 +0200] "GET /performing-arts-bursaries-in-south-africa-2014-full-download.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      126.96.36.199 - - [04/Feb/2018:15:46:15 +0200] "GET /the-light-of-the-world-sermons4kids-com.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      220.127.116.11 - - [04/Feb/2018:15:46:15 +0200] "GET /sccm-ecmo-management-download-pdf.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      126.96.36.199 - - [04/Feb/2018:15:46:15 +0200] "GET /k-rcher-1-516-260-0-dampfreiniger-sc-1-amazon-de-baumarkt.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      22.214.171.124 - - [04/Feb/2018:15:46:15 +0200] "GET /career-coaching-career-counselling-services-barnes-london.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      22.214.171.124 - - [04/Feb/2018:15:46:15 +0200] "GET /panasonic-viera-tc-p42s30-service-repair-guide-pdf-download.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      220.127.116.11 - - [04/Feb/2018:15:46:16 +0200] "GET /symptom-checker-check-your-pdf.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      184.108.40.206 - - [04/Feb/2018:15:46:16 +0200] "GET /eny-228-ig124-springtails-pdf.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      18.104.22.168 - - [04/Feb/2018:15:46:16 +0200] "GET /empirical-research-explorable.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      184.108.40.206 - - [04/Feb/2018:15:46:16 +0200] "GET /baby-whale-nursery-decor-pdf.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      22.214.171.124 - - [04/Feb/2018:15:46:16 +0200] "GET /kubota-b26-shop-manual-pdf.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      188.8.131.52 - - [04/Feb/2018:15:46:16 +0200] "GET /best-online-genealogy-service-myheritage-vs-ancestry-vs.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      126.96.36.199 - - [04/Feb/2018:15:46:17 +0200] "GET /advanced-quantitative-precipitation-information.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      184.108.40.206 - - [04/Feb/2018:15:46:17 +0200] "GET /international-phonetic-alphabet-pdf-file-scholarly-search.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      220.127.116.11 - - [04/Feb/2018:15:46:17 +0200] "GET /developmental-disturbances-in-teeth-srm-university.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      126.96.36.199 - - [04/Feb/2018:15:46:17 +0200] "GET /viper-5706v-pdf-manual-download-for-free.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      18.104.22.168 - - [04/Feb/2018:15:46:17 +0200] "GET /1-18-27-1-loi-du-1er-ao-t-1987-nationalit-livre-1er-du.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      22.214.171.124 - - [04/Feb/2018:15:46:17 +0200] "GET /skybrary-aircraft-performance-pdf.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      18.104.22.168 - - [04/Feb/2018:15:46:17 +0200] "GET /richmond-va-office-of-budget-and-strategic-planning-home.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      188.8.131.52 - - [04/Feb/2018:15:46:18 +0200] "GET /exploring-aromatics-academy-of-nutrition-and-dietetics.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"
      184.108.40.206 - - [04/Feb/2018:15:46:18 +0200] "GET /proposed-four-storey-public-city-library-scribd.pdf HTTP/1.1" 404 169 "-" "Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)" "-"</comment>


Prime Number Music Composition - <AUTHOR> http://www.erase.net/projects/prime-composition/

<comment><AUTHOR> Processing language was used to produce visual effects and SuperCollider was used to sound synthesis.</comment>


Show HN: iSMS for iPhone - <AUTHOR>

iSMS is a group txting app for iPhone that <i>doesn't</i> live in the cloud, rather it relies on good old fashioned SMS, meaning that all replies go directly to the default IPhone SMS app. <comment><AUTHOR> Link: <http://itunes.apple.com/app/isms/id387007449?mt=8>

</comment><comment><USER2> LINK?</comment>


ASK HN: Is a worker-cooperative a model for sustainable and successful business? - <AUTHOR>

After watching this video posted on HN (http://www.nytimes.com/packages/html/business/2009-private-equity/index.html) and seeing Michael Moore's new release over the weekend, I am wondering how viable you think it is for a startup to succeed using a worker-cooperative model (http://en.wikipedia.org/wiki/Worker_cooperative)?
Here's some other good resources:
http://www.ncba.coop/abcoop_work.cfm
http://www.ica-group.org/2nd%20Row/FAQs.html
Example Companies:
http://www.belugasoftware.com/overview_s.html
http://www.webcollective.coop/
http://www.isthmuseng.com/aboutus/workerownedcoop/workerownedcoop.aspx
http://www.alvaradostreetbakery.com/coop.html <comment><USER2> There is one very interesting example at a fairly large scale, the John Lewis Partnership which runs very successful major department store and food store chains in the UK. This is a real partnership, owned by the permanent staff (no public shareholders), with a written constitution which sets out how the management operates and how the employee-partners participate and share the profits.

A FAQ about the organization with copy of its constitution is online:

[http://www.johnlewispartnership.co.uk/Display.aspx?MasterId=...](http://www.johnlewispartnership.co.uk/Display.aspx?MasterId=773891b4-4508-48a0-845e-f8bf003e0975&NavigationId=681)

<comment><USER3> Another popular success in britain is the group of companies simply called the Co-operative:

<http://www.co-operative.coop/aboutus/>

Note the cool domain name: *.coop

</comment></comment><comment><USER4> Incidentally, Does anyone have a good resource for understanding leveraged buyouts and how they work? I understand that this broadly means funding the acquisition of a company by placing the debt on the target company's balance sheet but every explanation I have read just leaves too many obvious holes: _The goal is to buy a company for $100m and sell it for $500m._ (why does such a gap exist and why are private equity funds the only ones jumping on it?) or _Instead of taking on the equity themselves, the fund will place this debt on the target company's balance sheet, not its own_ and statements like _target companies often have strong cash flow that can be used to service the loan_ (How does a company worth $100m take on $500m in debt _without_ going bankrupt? If it can do this [I assume they would be paying very junk bond rates of 20% or so], that means that they could have paid that amount in dividends to the owners instead and should be worth a lot more then purchase price.)

It reminds me of those hack video by Guy Kiyosaki about how rich people print money: _I create a company and invest $10,000 in it. At $0.01 per share that is 1,000,00 share. Then I take the company to IPO and sell the shares for $1-$2 each._ He then explains the math on whiteboard. $10,000 /0.01 * $1 - $10,000 = $990,000. Wow! This guy is one smart cookie.

In any case, if you know any books, articles etc. that will make a dim person like me understand, please tell.

<comment><USER5> Many companies are "under-leveraged". The example you gave is just an extreme. If borrowing a ton of money means you can build new factories / expand product lines / take on new markets, then it might put you in the red for a little while to service the debt, but over time those capital expenditures will pay themselves off.

You don't take out one $500m loan, you leverage yourself in many different ways to maximize the cash you can get out of it (with the rates you pay on it increasing over time.)

Also note that large companies that lose some money are "worth more" than smaller companies that make a little.

<comment><USER4> What you are describing is just normal financing. IE using debt or equity to fund additional business activities. My understanding of a leveraged buyout is that it usually means:

Buying a company using its own balance sheet. Borrowing at a high rate. Paying back the loan using the companies own cash flow. Selling the debt-ridden company off.

I feel like I am missing something. If it can service these massive loans, why isn't it worth more? How does it become worth more after taking on this (expensive) debt? If the company is so under financed that junk bond rate debt is going to be well worth it, any form of financing should do. Why would you need a private equity fund to do that? I never hear private equity funds described as "experts at finding under financed companies and growing them to full potential."

</comment></comment></comment><comment><USER4> I am not sure. How can I be? There aren't many examples of this existing and something like this would have to be answered empirically. If it is roughly as good as more common structures, then you might have an uphill battle because those other structures have the benefit of other people's experience. To succeed it would probably need to be an advantage of some sort.

In any case it is worthwhile (for society) having as many such experiments happening as possible.

In many senses, you might say that you are searching for a non coercive socialism.

</comment><comment><USER6> It is almost certainly very viable, provided you don't plan to get bought out.

Near as I can tell, a worker cooperative is nothing more than an LLP with a cool name. Many law offices, consultancies and family businesses are structured this way.

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

</comment><comment><USER5> I like consumer cooperatives like REI and credit unions. The incentive should be to serve people! The profit motive is just one way of trying to achieve that...

</comment><comment><USER7> A worker cooperative has the incentive to maximize wage expenditures, which isn't exactly ideal for thriving in the marketplace. The traditional corporation's incentive to maximize profits is healthier from a competitive standpoint.

<comment><USER5> If the company management runs a more efficient company, than they get more profits.. it just so happens that the rest of the "shareholders" are also the workers. I don't think it is right to look at the profit-sharing is not a "wage expenditure."

Also, the desire to maximize short-term profits, as a traditional corporation with liquid equity is incentivized to do so, often leads to a lack of research, maintenance and other negligence that eventually adds up. The profit-sharing employees arguably have the long-term health of their source of income in mind and so they don't suffer the same tendency.

<comment><USER7> Good point on the idea that a coop might have a longer-term planning horizon. However, the point that a corporation has only short-term profit in mind is overstated. Drug companies take decades to bring a product to market, that's some long-term planning.

<comment><USER5> Drug companies are a special case due to extreme regulation, research grants, and tax breaks.

</comment></comment></comment></comment><comment><USER8> In San Francisco there's a very successful grocery store called Rainbow Grocery that's a worker co-operative. I think this kind of thing can work well on this scale but I doubt it scales very well.

<comment><USER4> When I try to think of how it might scale, I usually end up with small pieces.

* Eg, imagine a business model similar to YC bu relying on revenues of companies they helped create rather then exits. More integrated then I think YC is. A company where divisional managers are (or start as) majority owners of their division. They raise capital themselves (with help). They run their own game. Thinking about it, it sounds similar to research institutes. These businesses would need to mature at a relatively small size to make this resemble a coop in some way.

* A franchise is something like this also. Here (in Australia) there are a lot of franchises that aim to have <2 full time employees per franchise on average.

* Limited partnerships often scale.

* Some Israeli Kibbutzes were run like cooperative businesses or cooperative clusters of businesses.

* A traditional agricultural village may actually be some version of a cooperative.

The first one is interesting in concept. I don't think that tech startups are the best area to experiment. There is already plenty of expirementation going on with company structure and financing.

</comment></comment><comment><USER9> maybe look at the amish or the hutterites</comment>


Perl 6, Python 3 - <AUTHOR> http://wordaligned.org/articles/perl-6-python-3

<comment><USER2> "Xrange(), which generates numbers on demand, is more efficient and generally what's needed."

They capitalized a case-sensitive identifier because it was at the beginning of the sentence? I'm so conflicted!</comment>


Show HN: LifeEnsured, privately manage your on-line life after you pass. - <AUTHOR> http://www.lifeensured.com

<comment><AUTHOR> Hacker News Invite Code: YCHN

LifeEnsured is a service which lets you control the distribution and care of your on-line assets after you pass away.

We will modify, transfer or erase your on-line accounts, send final email messages and pass on important files after you are gone. Additionally, we have a growing list of services which we will execute when we have received notification of your passing (i.e. making a web services call, physically printing and mailing a document)

We spoke with quite a few folks about what they want to have happen to their on-line life after they are gone and asked what they thought of a service that would assist with this. Most importantly we asked what would make them use it. We did our best to write our results up in an "OKTrends" style data based report here: <http://www.blog.lifeensured.com/?p=16>

The best reasons for using our service we heard were:

1\. I want to reduce the emotional or administrative burden on my family

2\. I want to preserve wealth for my descendants

3\. I want to communicate information

4\. I want to be remembered

The biggest hurdles and causes of skepticism we heard were:

1\. I don't trust you, how do I know you are a credible company

2\. I don't see a need

3\. I have a legal objection

4\. I have a philosophical objection

To address these we

1\. Partnered with a leading life-insurance distribution company and established an Irrevocable Trust Fund to execute wishes. The fund outlives the company in case something bad happens.

2\. Put together a list of 50 uses for the product and worked with estate planners to determine the features that address the biggest existing headaches.

3\. Hired a great trust Lawyer to review everything and help us establish a legal structure that provides value to clients when they sign up, a real Digital Asset Trust.

4\. Became comfortable with the fact that on-line end-of-life planning isn't for everyone, but for some, it is very important.

We are in beta but believe we are at a point where some broader feedback would help!

Thanks

<comment><USER2> Is this US only? I don't see this on your FAQ, but references to social security would imply it is.

Can a one-off fee be payable by the estate?

<comment><AUTHOR> Thanks. Our social security end-of-life detection is US only. You can still use the service outside of the US but this feature won't work (unless you have a SSN).

We don't have an option to be paid by the estate - claims to an estate are generally quite difficult to collect upon unless an attorney is involved beforehand. We liken our model to any pre-planned end-of-life care service, paid before you pass away.

</comment></comment></comment><comment><USER3> While i find this an interesting service i also cant help think about their first customer death. It must be kind of strange moment for the founder thinking "Yay! We completed customer cycle, but someone had to die for that to happen."

I'm not saying this is either a good or bad thing, just, ye know, weird.

<comment><USER4> Rather like the first job for a new funeral home in that way.

</comment></comment><comment><USER5> One of the biggest challenges here seems to be that the web as we know it will likely be nearly unrecognizable 10 years from now, yet yours is a product with a timeline of several decades. Imagine in 10 years how paltry a 100MB file upload limit will likely seem.

<comment><AUTHOR> Thanks. It's tough (but usually fun) to try to think about how to build something that will be around for decades. The idea with the 100MB today is that it'll hold any important documents which you'd like. As the space requirement increases – we'll increase the allocation.

</comment></comment><comment><USER6> This was a business idea I tossed around about 2 years ago, I seriously considered making the leap and going for it because it is a necessary niche of the modern day. But the more I planned and worked on it, the more I realized it wasn't something I wanted to get into. Death is a hard thing to process for me.

Ultimately I set it aside. I couldn't do it. So I wish you and the others in this market the best, and hope you find the success you're seeking.

<comment><AUTHOR> Thanks for the encouragement and acknowledgement of the need. If you've got any lingering thoughts / ideas on the topic, it would be great to hear them. Feel free to send me an email email@example.com or give me a ring 347-227-0189

We hope we can shift the focus a bit away from the "this is for something when you die" to – "hey, it's good practice is to really claim ownership of your digital assets and have this stuff sorted"

</comment></comment><comment><USER7> Morbid, but very necessary app. How do you notify people? Via phone? Email?

<comment><AUTHOR> Thanks. Clients set up the (email) notifications themselves. When we receive verification that you have passed, we send out these emails on the client's behalf. To perform verification that the client has passed, we call the folks who are listed as verifiers.

<comment><USER7> Ah. Very cool (sorta?) Thanks, good luck with it!

</comment></comment></comment><comment><USER8> One of my friends started <https://www.entrustet.com/> a few years back. Looks like it's effectively the same service as LifeEnsured.

<comment><AUTHOR> Thanks. Entrustet has made some good headway in the space. We hope the LifeEnsured feature set, positioning and execution help us become the most trusted company in the space.

</comment></comment><comment><USER9> The serious, formal, and somber text on sites like this ("after you pass...on...into death!") makes me wonder if there's a market for a snarky site that will do the same thing, but present itself in a more amusing, ironic sort of way.

Gawker or 4chan aficionados may want a Gawker- or 4-chan styled service, after all.

</comment><comment><USER10> Shouldn't this be cheaper the younger I am?

My chances of dying at 27 are not as high as 24 USD per year.

<comment><AUTHOR> Thanks. We toyed with the idea of charging different prices based on age. The problems we encountered are.

1) difficult to verify age online 2) creates a weird step when registering [who asks for my age when I register for a site?] 3) impression it gives to older users.

We realize that this is standard practice in the insurance world (likelihood of a young person passing away is significantly lower than an older person) but we don't think this is something we should be doing with an online service… What do you think? How can we make it better?

</comment></comment><comment><USER11> I would like an API please. My dark humor would force me to write a bot to make tweets from hell.

<comment><AUTHOR> One of our free services is making an HTTP POST or GET (authenticated if you'd like) to a web server when we receive notification of your passing. We hope you chose to use it for something a bit happier - like triggering your private keys to expire etc.

</comment></comment><comment><USER12> Looks like <http://www.entrustet.com>

</comment><comment><USER12> When I first read the title I thought it was an app for the reincarnated.

</comment><comment><USER13> Required feature: notify all of my friends that they were left behind.

</comment><comment><USER14> The verbiage on the site is well written.

Kudos.</comment>


Marriott Is on an Expansion Binge as It Fends Off Airbnb - <AUTHOR> http://fortune.com/2017/06/14/marriott-arne-sorenson-starwood-acquisition-airbnb/ <comment><USER2> Including this ugly monstrosity, which is the result of a Public Private Partnership in Vancouver, Canada: [http://paragongaming.com/developments- properties/parq/](http://paragongaming.com/developments-properties/parq/)</comment>


Can Robots Own Money? - <AUTHOR> http://dilbert.com/blog/entry/can_robots_own_money/

<comment><USER2> > _Now imagine that someday all robots are connected to each other with a > robot cloud. That 's inevitable. You'd want all robots to instantly learn > what any robot anywhere learns. If one robot learns how to mow the lawn, all > robots acquire the skill at the speed of light._

Why this idea doesn't apply to humans? We are almost connected to each other. It's not automatic, but we can share and learn knowledge from Internet. But still not everybody can do correctly calculus or knitting.

Some robots will be silly and the knowledge they share will be unintelligible and unuseful. Some other will be better. Perhaps the robots can upvote the usefull shared knowledge, let's call it Robots News, with r-karma. Can the robots process all the information they receive?

Furthermore, there will be different robots models. Can a little robot ask for something with the same intonation than a big robot? Does the robot have wheels or arms?</comment>