Scientists Have Developed Diesel That Emits Much Less CO2 - <AUTHOR> http://www.thelatestnews.com/in-a-new-breakthrough-scientists-have-developed-diesel-that-emits-much-less-co2/ <comment><USER2> if they hurry up with this, it could save those unsellable, smog-kludged VWs.</comment>


How to Find Partners for a Startup - <AUTHOR> I want to tell everyone about my startup because I really want some help and another brain to bounce ideas and maybe code and tinker. Every time I bring up the NDA, they run. I can't seem to find people like myself that just "find" the energy to make this happen. Thoughts? <comment><USER2> As with all things, "it depends." I'm currently looking for another one or two team members. The thing we're building is hard to build so I don't really mind getting right into it.

However, I have a few other pitches that I'll dive into to get a feel for a person. For me, it's about friendship. Or rather, perhaps more. That is, I'm not looking for engineers I'm looking for believers. The type of people I look for would probably bolt too if I asked them to sign an NDA (my only experience with such things is in large corporations, which NDAs come later anyways––and [usually] not on the first date).

For me, it comes down to trust. You may be concerned about sharing your idea (if you're sharing other confidential information, then I could see how the NDA is necessary). Ideas are often the least valuable thing an early employee/candidate could take from you (or an investor for that matter).

It seems like you have already determined the problem. Maybe you should approach a consultant that is comfortable [frequently] signing NDAs; ask them if you should be asking other potential candidates to sign the same NDA.

</comment><comment><USER3> Communication is really the key problem here. I am looking for joining startups, but anything I found (for instance on angelist) sounds super boring. This is probably because people don't advertise their ideas in fear of getting them stolen. But ideas are the only things which attract me.

The solution would be to better advertise _some_ ideas. It is a small path between saying nothing and saying everything.

</comment><comment><USER4> my friend, where are you? we might want to create startup to find partners</comment>


Frank Miller: Inventor of the One-Time Pad [pdf] - <AUTHOR> http://www.cs.columbia.edu/~CS4HS/talks/FrankMillerOneTimePad.pdf <comment><USER2> FYI, it's this Frank Miller: [http://en.wikipedia.org/wiki/Frank_Miller_(cryptography)](http://en.wikipedia.org/wiki/Frank_Miller_\(cryptography\))

Not this one: [http://en.wikipedia.org/wiki/Frank_Miller_(comics)](http://en.wikipedia.org/wiki/Frank_Miller_\(comics\))

</comment><comment><USER3> I hate to break it to you but ancient cultures used OTP systems for thousands of years before this guy supposedly invented it. The ancient Egyptians for example would create a pad, use it to encrypt a secret with a numeric shift cypher, then break the pad into multiple pieces each of which would be guarded in a different temple. This has been proven and there are other examples in the ancient world.

<comment><AUTHOR> I'm pretty sure that is acknowledged in good cryptography texts. It's actually what draws me to the field, because, though my career is rooted in tech, I'm fascinated with what we're capable of _without_ computers. Excellent point.

</comment></comment><comment><USER4> The same author recently published a paper about the work Vernam and Mauborgne were doing:

[https://www.cs.columbia.edu/~smb/blog//2014-05/2014-05-16.ht...](https://www.cs.columbia.edu/~smb/blog//2014-05/2014-05-16.html)

It didn't get any traction when I submitted it.

(I'm copying and pasting those names, I think this sort of history is neat to look at but certainly don't know much of it)</comment>


A Programmable Programming Language - <AUTHOR> https://cacm.acm.org/magazines/2018/3/225475-a-programmable-programming-language/fulltext <comment><USER2> I have been building a new not-exactly-a-programming-language using Racket and it has been an absolute pleasure, and the community has been extremely friendly and helpful.

One existing stumbling block that I encountered on the way is that I could not find documentation for the full process for the setup for creating a new packaged language (I have been known to fail hard at finding the right documents so this may just be my problem). [https://beautifulracket.com/](https://beautifulracket.com/) has excellent coverage of the general process, but the differences between #lang br and #lang racket/base are just large enough that I couldn't fill in the gaps without going and looking through multiple repos to see how others had implemented their repo layout and then could intuit which setup commands I needed to run.

If I find time I intend to write up my findings and submit them to the documentation, the short version is here in case someone finds it useful.

      repo-base
      ├── .git
      ├── my-lang       ; run `raco pkg install` here
      │   └── info.rkt  ; meta package depends on my-lang-lib
      └── my-lang-lib   ; run `raco pkg install` here
          ├── info.rkt  ; include actual dependencies
          └── my-lang   ; implementation goes here
              └── main.rkt  ; in theory you can put your whole implementation here

Once that set up is complete you should be able to use `#lang my-lang`.

<comment><USER3> Thank you for the link. Reading the example on the creation of stacker.rkt (a toy reverse polish language) was dramatically more enlightening than the main article. As I understand, Racket = source-to-source interpreter with a lot of helpful shorthand for defining syntax of {insert language here} or arbitrary language you make on the spot. Do they already have libraries for major languages like c++, JS, python? Would be nice to write in a syntax I like (perl) and turn it into c++ that compiled.

<comment><USER2> Racket isn't really a source to source compiler/interpreter (you could try to write a compiler that converted racket into your language of choice, but that can often be quite difficult). Everything ultimately has to pass through Racket's language semantics, so matching implementation details requires a lot of work if the underlying language spec is large. The #lang C example down below sidesteps these issues because it acts as a pass through to the system c compiler and then handles returning those results into racket, essentially it delegates the language semantics to the c compiler and only deals with how to map the results of calling c code back onto racket objects. Similar issue with the FFI if you want to translate from one language to another, you still have to go through the process of mapping language semantics.

Two examples where languages/parsers have been implemented in racket:

Algol60 is the best and most complete example [https://docs.racket- lang.org/algol60/index.html](https://docs.racket-lang.org/algol60/index.html). A python parser has been implemented [https://github.com/dyoo/ragg/blob/master/ragg/examples/pytho...](https://github.com/dyoo/ragg/blob/master/ragg/examples/python- grammar.rkt)

<comment><USER3> Thank you for the clarification. Even after two articles I obviously still didn't fully get it. Appreciate the help, and the example links.

<comment><USER4> Racket uses macros to transform your language's syntax into valid racket code, which is then interpreted.

<comment><USER5> No, this is far too glib, and the last part is wrong. See [https://www.hashcollision.org/brainfudge/](https://www.hashcollision.org/brainfudge/) instead.

</comment></comment></comment></comment></comment></comment><comment><USER6> I don't think I've seen any convincing examples yet of how writing a new language or DSL is superior to the already-very-flexible idea of user-defined functions, supported by almost all languages. Isn't a DSL just syntactic sugar in most cases?

Functions are verbs, usually named in problem domain terms, that can operate on a huge variety of nouns (data) also namable in the problem domain. So I don't buy that existing languages can't represent the problem domain, or force programmers to only do things in machine or traditional-language terms.

Don't want to be a spoilsport either, glad people are researching and experimenting with new approaches - just not sure I'm convinced yet the "make a DSL for everything" idea seems all that promising or different from what we already do as programmers.

<comment><USER7> > Isn't a DSL just syntactic sugar in most cases?

I don't think so. Maybe with things like LINQ, but in many cases a DSL lets you abstract things to such an extent that you get a new way of thinking about the problem. That's why DSLs are almost always very high level languages.

SQL and regex are the obvious counterexamples, where you don't describe _how_ to return the data you're looking for or how to store it on disk, you just describe that data and the language does the work for you. That's a completely different way of thinking about a problem compared to procedural logic. The languages allow you to describe very complex data in an explicit and unique manner, and in doing so allow you to abstract what the data is from how the data is maintained. Obviously, that can bite you if you structure your DB poorly, but on the flip side it allows people to learn how to use very complex descriptions of what are essentially abstract concepts instead of needing to know details that are extremely easy to screw up. Declarative programming is extremely powerful because of this, and it allows for extremely complex systems to be built on top of this new layer of abstraction.

A shell is another counterexample where being "just" semantic sugar is really oversimplifying it. You're in a fixed context with a default function, so you get a lot of acceleration over having to spawn all those processes by hand. You're stripping out so much overhead code that you're into a new level of abstraction where -- unless you need to -- you don't think in terms of procedural logic.

For a less straightforward answer, a generic programming language would be like a hex editor, whereas a DSL would be like PhotoShop (or even Paint). Sure, a hex editor can modify any type of file in any way, but the power of PhotoShop comes from all the power you get out of being domain specific. It's not just the additional built in functions the program gives you, it's also the manner in which the data are presented that allows you to see things which you simply would miss at the hex editor level. Here the abstraction is allowing you to see what the data actually represent instead of just seeing how the data exist in the computer.

<comment><USER8> Let's take one of your "obvious counterexamples":

Exhibit A:

        [A-Za-z]\w*\(\d+(,\d+)*\)

Exhibit B:

        cat(or(range("A","Z"), range("a", "z")), zero_or_more(alphanum()), "(", one_or_more(digit()), zero_or_more(cat(",", one_or_more(digit()))), ")")

Exhibit A is _absolutely_ syntactic sugar for Exhibit B.

Regex is great if someone has already implemented a regex engine for you. But a key part of the post you're responding to is that it's talking about writing a DSL yourself.

I can write the functions to run Exhibit B in probably 3 hours. I'd challenge you to write a reasonably language-integrated Regex engine in under 3 _days_ , even assuming you have a good understanding of the domain. That difference in implementation time is going to take a while to pay off in composing actual regular expressions. And regular expressions are a _very simple_ DSL. A more complex DSL would take longer.

<comment><USER9> I think, taken to the extreme, all programming languages would then "just" be syntactic sugar over lambda calculus

<comment><USER10> Greenspun's tenth rule: Any sufficiently complicated C or Fortran program contains an ad-hoc, informally-specified, bug-ridden, slow implementation of half of Common Lisp.

</comment></comment></comment></comment></comment><comment><USER11> I recall going to a talk when I was at Northeastern, and at one point the speaker said something like, "But why would you create a new programming language just to solve one problem?"

Matthias Felleisen (the guy in the video) interrupted him from the audience to respond, "I know several people who have done exactly that, and it worked out quite well for them!"

As he says in the video, Northeastern teaches students how to program in a systematic way, rather than by copy-paste-modify from other examples. They certainly teach a powerful way of thinking, and it has served me well over the years.

If anyone out there is reading this and is thinking about going to college for computer science, definitely check out Northeastern. I could not be more thankful that I went there.

You can read the freshman text book online: "How to Design Programs"[1].

[1] [http://htdp.org/](http://htdp.org/)

<comment><USER12> The problem is that the several people he knows are not the average architecture astronaut. It takes a lot of taste and experience to design a usable language.

<comment><USER13> And it takes a lot of _organizational_ dedication and work to support the language properly: training, documentation, packaging, regression testing (1), editor support, debugger support, libraries, and the list goes on. I doubt a single individual could do all that for more than a short while, so you need an organization that wants to do all that right for the sake of the language. Most companies won't really care that your language isn't in fedora upstream.

(1) Lots of popular languages get the community to do their regression testing for them, but if you are the sole user of your language, you need to do all the testing yourself somehow.

</comment></comment></comment><comment><USER14> I can just imagine the learning curve when encountering legacy code in a language that's only used for the project, product, or company. I can't begin to explain how many times I have just Googled a question in a particular programming language and very quickly found an answer. When I work in new or unpopular languages, I often can't find an easy answer.

The difference in time is staggering. The learning curve for a popular language means that learning something new takes me 5 minutes, but in an unknown language learning something you could take me all day if there are not a lot of things like stack Overflow posts.

If a project specific custom language deviates too far from the norms, then it means that incoming programmers will have a harder time maintaining it.

<comment><USER15> Having seen all kinds of abuse of C macros or python metaprogramming I can't even imagine the mess this could create. Some people just seem to love the idea of creating a undebuggable Frankenstein macro system just so they can save 3 characters of code when writing foo.bar instead of foo["bar"]. Python libraries depending on @ annotations everywhere is another favourite. You save 1 measly line of code by not having to call or register the function somewhere but you loose so much more as you can't control initialization order and your program usually is forced to store it's data as global state.

I do see the powers and benefits this can give but with great power comes great responsibility. It must be truly isolated to places where you absolutely need it instead of just for fun.

<comment><USER16> Oh my god - this. I have recently started writing my own library that required to register functions for the task runner. At first I've tried to copy the @ approach, but then realised what an unmaintanable mess that becomes.

</comment></comment></comment><comment><USER17> "Lisp is a programmable programming language." — John Foderaro, CACM, September 1991.

<comment><USER18> Yes our title intentionally alludes to CL.

</comment></comment><comment><USER19> Instead of having to think about every possible way a language might be used and account for it up front, languages with good metaprogramming facilities let the users them to fit their needs. This way the core language can stay small and focused while remaining flexible.

While you don't want everybody building their own language, userland extensibility can play a huge impact on the overall cleanliness of the language because new ideas can be tried out as libraries. If these ideas don't pan out, the community moves on. Projects using these libraries will keep working, but the core language doesn't end up accumulating cruft. I wrote about that in detail here: [https://yogthos.net/posts/2017-10-03-MovingForwardByLettingG...](https://yogthos.net/posts/2017-10-03-MovingForwardByLettingGo.html)

<comment><USER20> ...which is why Scheme has, like, 37 different, incompatible object systems.

Everything has costs.

<comment><USER21> That's Scheme. Lisp, meanwhile, has one: CLOS. One is excellent for learning about things like hand-rolled object systems, and one is excellent for building large systems.

<comment><USER22> _Common Lisp_ has CLOS. I'm aware some purists don't think Scheme is a Lisp but, regardless of one's stance on this, there are most definitely other Lisps than Common Lisp.

<comment><USER23> Having called the result of Lisp standardization _ANSI Common Lisp_ instead of just _ANSI Lisp_ doesn't change the fact that the whole effort was all about standardizing Lisp.

Moreover, why not just say Scheme or Clojure when talking about Scheme or Clojure?

If ANSI C had been called ANSI Common C, would Java fans never cease to insist on calling Java a dialect of C?

<comment><USER22> > the whole effort was all about standardizing Lisp

There are more Lisps now than ever, so perhaps that was not as successful as was hoped.

> why not just say Scheme or Clojure when talking about Scheme or Clojure?

Why not just say "Common Lisp" when you mean Common Lisp, and "Lisp" when making true general statements that include other things that have always been considered Lisps? How are we to refer to Emacs Lisp without tying ourselves in knots if we refuse to say that "Lisp" includes it?

</comment></comment></comment></comment></comment></comment><comment><USER24> Great article. I have in the past (when I wanted to use Scheme) used either Gambit (great support from the author!) or Chez Scheme (fast!), and only have played around with Racket a bit (perhaps 50 hours in the last 5 years).

I have been thinking of switching to Racket, and this article 'pushed me over the edge' on that decision.

</comment><comment><USER25> Language-oriented programming sounds like metaprogramming with DSL's just with a new toolkit. Language-oriented programming might be a more approachable term for that, though. If I heard it, the first things I'd think of were tools such as Rascal and Ometa that let one arbitrarily define, operate on, or use languages. That covers language part. Far as integration, a number of techs supporting DSL's… probably a lot of LISP's and REBOL… had a powerful language underneath one could drop into.

So, this seems like a new instance of old ideas they're giving a new name. I do like how they've integrated the concept into a general-purpose, GUI-based, programming environment instead of it being it's own thing like the others. You get best of both worlds.

An old idea I had was researchers should do more experiments in building things like Rascal or Ometa alternatives in Racket leveraging what they already have to see how far one can stretch and improve it.

[http://www.rascal-mpl.org/](http://www.rascal-mpl.org/)

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

<comment><USER26> Language oriented programming is far from a new term. See the history of jetbrains MPS and intentional software. There was a strong meme in the early 2000's this was the future, it never seemed to take off.

<comment><USER27> I even bought into that meme a bit in the early 2000s. It turns out that most "language" designers (including myself) aren't that good at it, and that designing a language that isn't just yet another leaky abstraction takes a lot of work. Your "interface" is the entire syntax and semantics of your "language."

<comment><USER28> Yes - there is definitely a hierarchy of difficulty: user code, library, macros, full syntax extension. The trouble is that designing new languages takes a lot of _taste_ and experience. We don't know the full domain, so DSLs tend to have bits added to them as knowledge of the domain grows - and that's the scary point in language evolution. So, despite these things being tremendous fun, I tend more towards correctness and clarity at the expense of sheer expressiveness. (An example of ad-hoc language design is CMake, which makes my eyes bleed. Kitware should have used an existing language - even tcl would have been better.)

</comment></comment></comment></comment><comment><USER29> I wonder how this approach scales to large code bases maintained by global teams. Instead of the usual discovery that each contractor or "rockstar" programmer created modules using their preferred language or in vogue technology, you might now find they derived their own obscure language flavors that read right to left and use "=" for function calls.

In large projects, readability and maintainability trump expressibility.

<comment><USER30> > In large projects, readability and maintainability trump expressibility.

and neither is a substitute for proper governance...

</comment></comment><comment><USER31> Racket is awesome. I originally used scheme48 but was impressed with rackets tooling (when it was known as plt scheme) . After it branched out as racket and added a large standard library with batteries included it became much more practical to use. I am experimenting with using it with smart contracts and having a library where you can make your own language and work with program synthesis to web development it's really awesome!

</comment><comment><USER32> > Racket eliminates the hard boundary between library and language, overcoming > a seemingly intractable conflict

I don't buy it.

A language extension means the syntax wouldn't ever be valid in the base language. The fact that Racket defines its 'for' construct using macros/functions/whatever is cute, but I see no reason to pretend it's a language extension.

<comment><USER33> > I don't buy it.

> A language extension means the syntax wouldn't ever be valid in the base > language.

Sure.

         (struct pt ([x : Real] [y : Real]))

That's not valid Racket, but is valid Typed Racket.

A more extreme example:

        int main(int argc, char** argv) { return 0; }

That's C! Oh wait, it's the C #lang [0]...

Which means you can things like:

base.rkt:

        #lang C

        float f( float x1, float x2 ) {
          return x1 / x2;
        }

main.rkt:

        #lang racket

        (require base)

        f(10.2, 1.8)

Those syntaxes aren't compatible, by any stretch. The magic is, Racket gives you access to powerful pre-processing, in the form of some amazing reader macros.

What syntax you use, doesn't really matter, so long as you provide that bridge. They're incompatible syntax, with a custom made parser allowing data to flow both ways.

[0] [https://github.com/jeapostrophe/c](https://github.com/jeapostrophe/c)

<comment><USER20> Shouldn't that second example be

        (f 10.2 1.8)

<comment><USER33> Yep. My bad.

</comment></comment></comment></comment><comment><USER34> I'm curious how this compares with the similar built in tools for building grammars, etc in Perl 6, and also if the syntax flexibility possible is worth the trade off vs using more native (if obscured or downplayed) syntax eg the sorts of DSLs you can build with Ruby.

</comment><comment><USER35> Wasn't "Script X" Apple's failed attempt at this back in the early 90's? People found creating custom for every problem was unmaintainable. Each developer was encouraged to customize their own personal language, and work with syntax translators to work with group written code. Nightmare.

<comment><USER36> I presume you are talking about ScriptX created by an Apple spin-off Kaleida Labs? I'm reading about it right now, and I don't see any specific features useful for language-oriented programming, not even Lisp-like macros. From what I can see it doesn't seem to encourage this approach to software development at all, it looks like some kind of Smalltalk derivative with multiple inheritance bolted on.

</comment></comment><comment><USER37> Forgive me, but I recall, with some decades of practice, a major point in FORTH is that one constructs a vocabulary and syntax specifically for solving the problem at hand. Compiler primitives are just as first class as regular word (aka function) definitions, including how to compile itself as well as what to do when executed (DOES> keyword, which can itself be redefined). FORTH may have a clunky and primitive reputation, but it seems to me it qualifies as a programmable programming language.

<comment><USER5> Sure. But the degree of clunkiness matters. Forth doesn't have the ability to build linguistic _abstractions_ the way Racket does. But if you want to add Forth to the evidence of the paper's thesis, that's fine, more the better.

</comment></comment><comment><USER38> This is offtopic, but seeing ACM made me think about my long-lapsed membership.

Are you a member of the ACM? What do you get out of your membership?

</comment><comment><USER39> A side note: React and jQuery are not really complementary libraries dealing with separate concerns..as suggested by the article,unless i have fundamentally misunderstood both.

</comment><comment><USER40> Tcl can do wonders in this area. _uplevel_ is in some way more powerful than Lisp macros, since it happens at runtime.

<comment><USER41> Isn't "uplevel" essentially Tcl's way to choose dynamic scope? Lisp has ways to do that, too.

<comment><USER40> It's more like "eval" in the stack frame you select. This added to the fact Tcl, like Lisp, has the same form for all the commands, allow to do anything you could conceive and it will look like if it's part of the language. For instance you can do a looping construct that works in a different way depending on the calling function name or state or any other crazy stuff like that.

</comment></comment></comment><comment><USER42> Title should be edited: Lanugage -> Language.

<comment><USER43> Thanks! Updated.

</comment></comment><comment><USER44> Typo in the headline: lanugage</comment>


Booting embedded Linux in 0.37 seconds on an ARMv7-A CPU at 528 MHz - <AUTHOR> https://github.com/eerimoq/monolinux-jiffy#boot-time <comment><USER2> One interesting reason there's a been a bunch of progress in this space is that automotive systems are required to show the rear view camera in a certain amount of time. Progress driven by the oddest of things.

<comment><USER3> My car takes around 10 seconds(I think more im not sure) for the reverse camera to work after starting the engine. Its annoying having to wait, thats for sure

<comment><USER4> Is it pulling a fresh docker image each time?

<comment><USER5> Gold

<comment><USER6> I've been deep in the interview cycle lately and I just had a dream last night that I was asked, in a non-technical interview with a product manager, "what are the 5 ways to dockerize an application?"

I then said that I could only think of one way, and he responded "how do you not know docker if you are applying for a java developer job?"

Thankfully I woke up

<comment><USER7> well most of the time, my company deals with docker aswell. but my coworkers have nothing to do with it, it just is fully automated. the only problem we had, when introducing long running jobs that can be run while clicking a button inside our ui, which runs a k8s job. that was hairy for my coworker, but with enough shell scripts it started to be easier and easier.

<comment><USER6> That's cool :) I mean, it's fine to not know the answer to everything. Usually it's not a deal breaker, especially if you provide a general answer of "here's how i tHink it works"

But what's always hilarious to me is 3 seconds after they ask the docker question, they'll then ask "ok so tell me a bit more about how CompleteableFutures, Consumers, and Threadpools work together and why you would want to use them"

or my personal favorite, the predictable trifecta of

"whats the difference between an abstract class and an interface"

"ok tell me how garbage collection works"

"ok and whats the difference between final, finalize, and finally?"

<comment><USER7> well docker should not be your problem the latter are things an java developer should've heard about. well tbf CompletableFutures is relativly new in java, not in other languages of course (i.e. scala, c#, etc...)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER8> I'm impressed. I don't know of too much work that's going on upstream for optimizing boot times, other than some of the clear linux stuff: [https://www.phoronix.com/scan.php?page=news_item&px=Clear- Li...](https://www.phoronix.com/scan.php?page=news_item&px=Clear-Linux-Ubuntu- Eoan-Boot)

There are folks looking into improving boot times on Android; turns out init and kernel drivers are a tangly mess of {dependency} spaghetti. Loading kernel modules can induce delays in processing relocations.

The kernel patches disable a bunch of stuff, including ethernet it looks like? Most of the kernel changes comment out blocks of code, or trade long delays for shorter delays with more iterations.

<comment> yjftsjthsd-h Yeah, this appears to take advantage of the fact that if you _know_ exactly what hardware you're working with, you can skip a whole lot of detection and general support, which helps quite a bit for embedded but less so on ex. your laptop. Honestly, while there may well be dependency issues, I was under the _impression_ that at least the kernel side of things generally _is_ pretty well optimized, and in most cases you're paying for flexibility.

<comment><USER9> dracut on RHEL7+ builds the initramfs in "host_only" mode, which attempts to strip it down to just the kernel modules you need for boot time.

Which is also somewhat annoying because it completely trashes portability, which can be really irritating in cloud environments.

Ubuntu has similar capability (and I'm guessing Debian upstream?), but you have to specifically enable it, by default it ships the full modules set in the initramfs.

I would imagine most places outside of embedded world and maybe microvms, this stuff isn't that valuable.

<comment><USER10> Slight correction: by default Debian/Ubuntu put all modules _potentially required for initial boot_ into the initramfs. That's still a very small percentage of all modules. I.e. you only need those modules that will get you so far into the boot process that you have access to the root partition with all the remaining modules.

E.g. if you want to do network-boot over wifi, you'll have to add a initramfs- hook script to add the wifi modules for your hardware into the initramfs [1]. They are not included by default.

[1] [http://www.marcfargas.com/posts/enable-wireless-debian- initr...](http://www.marcfargas.com/posts/enable-wireless-debian-initramfs/)

<comment><USER9> You're right, I misinterpreted what "most" meant in the mkinitramfs config. Interesting. I've not seen any difficulties with porting Ubuntu between different hardware configurations, so it seems to include a reasonable amount of them.

Every now and then I'm tempted to try "dep" instead of "most", but then I realise there just isn't enough benefit!

</comment></comment></comment></comment></comment><comment><USER11> Does anyone know why x86 systems are so slow to start up? I got a x570 mobo recently and it still takes about 5 seconds to get to grub.

<comment><USER12> I've seen wildly varying start up times on x86 hardware. I had an Samsung Ativ Book 9+ running stock Debian that with a cold start had fully started X and showed the login prompt before the backlight turned on (about 1 second). I've also had the "pleasure" to manage some Dell servers that took an impressive 2 minutes just to get past the BIOS.

(Well I did turn off the 5 second delay in GRUB to make that laptop boot time possible.)

<comment><USER13> The reason it varies wildly is that the hardware and possible settings supported varies wildly on a DIY PC. A few things I noticed a few years ago while troubleshooting slow POST:

\- Having a HDD connected to the additional SATA ports provided by an onboard controller (not the chipset) incurred a delay because the controller was initialized later (slower?), the HDD would power up later, and the POST sequence wouldn't finish until the HDD finished spinning up. Checking SMART on boot just made it worse.

\- Switching between the 2 GPUs I had available at the time (one Nvidia, one AMD) consistently made a couple of seconds of difference.

\- Using XMP made POST _much_ slower too (don't remember by how much).

\- Updating the FW on my SSD shaved a bit of time.

\- Devices connected to USB during post also increased POST time.

And as a side note, my cheaper, simpler mobos would always POST faster. Gaming/OC mobos these days are _loaded_ and it all adds up to what the PC has to do to initialize in POST.

Bottom line is it's easier to optimize for short POST when your config is locked in place (like a phone) then on a machine that could have any number of possible permutations of hardware and settings. Today that's x86.

</comment></comment></comment><comment><USER14> > Networking takes by far the longest time to get ready. The main reason is > that Ethernet auto-negotiation takes a significant amount of time, about 1 > to 3 seconds.

Is this a fundamental limitation of how auto-negotiation works? Is there a way to speed it up?

<comment><USER15> Set fixed values for the speed (i.e. force 1 Gbit/s if you _know_ there will be a capable cable). I'm not sure on if the feature that detects crossover cables can be switched off in userspace.

As for the timing, as long as you don't specify speed / crossover detection you will always have some sort of physical link training and negotiation...

<comment><USER16> > Physical link training and negotiation

That still shouldn't take _that_ long, though, should it? 3s sounds like some O(N^2) process is happening.

Keep in mind that this stuff is happening close to the metal, on a nowadays- unshared medium (no Ethernet hubs around any more), with negligible speed-of- light delays because the nearest switch is probably ~100ft away at most. If some high-level protocol like Steam Link can have no perceivable latency, then certainly PHY negotiation shouldn't.

My naive guess would be that the medium is speed-tested in order, first seeing if it works at 1Mbps, then 10Mbps, then 100Mbps, and finally 1Gbps; and _alternating in_ the crossover-cable versions of those tests; satisficing with the last-achieved line rate when the next up-clocking fails.

If that's the case, then I have a feeling that modern hardware could get a bit of an advantage just from doing things in the opposite order: 1. optimistically assuming everything is set up for 1Gbps, and then, if not, ratcheting down the link-speed until the link _starts_ working; and 2. only doing the crossover-cable tests after _all_ the non-crossover tests fail.

You'd still have the same worst-case performance (3s) as before, but now that worst-case would be for old 1Mbps crossover cables: not a common case!

<comment><USER17> There is a thing called: compatibility.

Even when you don't have a hub anymore and Ethernet is not shared anymore, it is just a "anymore", which means it needs to respect those old things and need to test for it.

BTW, even that Ethernet is not a shared medium anymore is wrong. In Industrial and Automotive Ethernet we are back at SPE (Single Pair Ethernet) and working shared medium, because switched Ethernet is way to expansive.

<comment><USER16> You don't _test_ for the medium being shared/unshared; Ethernet is just a protocol that _assumes_ a shared medium, and does [https://en.wikipedia.org/wiki/Carrier- sense_multiple_access](https://en.wikipedia.org/wiki/Carrier- sense_multiple_access), even when there's no benefit to it.

The reason that Ethernet can afford to do that even in entirely switched deployments, though, is that Ethernet's CSMA is very aggressive/optimistic, meaning that there's almost no overhead to it in the case that there really is nothing else sharing the medium. In fact, Ethernet's "1-persistent" CSMA is effectively _designed_ for low contention, falling over at high [100+ TXers] contention—which is why we don't just use Ethernet over shared-medium WANs like a cable ISP's (pre-fibre-backhaul) coax, but instead protocols like [https://en.wikipedia.org/wiki/Asynchronous_transfer_mode](https://en.wikipedia.org/wiki/Asynchronous_transfer_mode).

My point with bringing up the low contention of modern media wasn't that modern devices could somehow skip CSMA sense-idle altogether; but rather that, due to the aggressive nature of Ethernet's CSMA, Ethernet when _on_ a low- contention or no-contention media _should_ have basically zero sense-idle overhead, which means one less thing standing in the way of fast Ethernet PHY autonegotiation in an archetypal modern deployment; and so one less reason to privilege the hypothesis of "it's the laws of physics making PHY autonegotiation slow" over "Ethernet controllers are doing something dumb."

Here's something to chew on: USB is _also_ a shared-medium PHY with many layers of legacy compatibility. And yet, on every OS I know of, a USB3 analog input device (e.g. a microphone) can go from "off/unplugged" to "negotiated, registered, driver up, and transmitting data to the host, that the host has an open buffer for such that it will acknowledge and process the data within the soft-real-time window", all with 0.5s of delay or less.

Heck, the _entire Bluetooth stack plus connections to pre-paired devices_ can come up faster than Ethernet—and Bluetooth sits _on top of_ USB! Bluetooth comes up fast enough, that Apple bothers on its desktops to bring up the Bluetooth stack _within EFI_ , finishing quickly enough that Bluetooth peripherals can be used to signal an interrupt to the EFI boot process within its ~1s interaction window. (We all know, meanwhile, what EFI under Ethernet control looks like: the modern server mainboard's 6+ second "IPMI autoconfig" delay.)

<comment><USER17> Comparing USB to Ethernet is difficult. Any USB-device is talking USB1.1 at startup. So negotiation basically is transferring a data packet with the capabilities at a pre-defined data rate.

While Ethernet has to negotiate the number of wires, full-duplex vs half- duplex (which depends on the number of wires). The code like Manchester vs. 4B5B.

The main difference is, in USB the host decides on what to talk. In Ethernet there is no such instance.

</comment></comment></comment></comment></comment></comment><comment> yjftsjthsd-h > A reboot is even faster, only 0.26 seconds from issuing the reboot to > entering user space.

Curious; it doesn't say how that works. Could be kexec, but if it's a real reboot then I'd be interested to know why it's faster. Can you still skip some hardware initialization somehow?

<comment><AUTHOR> I'm curious as well, and yes, by reboot I mean calling "reboot(RB_AUTOBOOT)". I was under the impression that the ROM code has to start over from the beginning, which I think it does. Maybe it can skip some initialization since the SoC is already up and running. Maybe there is some initial hardware setup that is only done at power on. It's hard to tell as this part of the boot sequence runs closed source NXP code.

</comment></comment><comment><USER18> > Start with MMC clock frequency at 52 MHz instaed of 400 kHz.

Whoa there!

Spec violation. Not guaranteed to work. Might work some days but not others.

<comment><AUTHOR> The goal is to not configure the MMC at all in Linux, but just rely on the bootloader has already configured it.

Btw, where can I find the spec? And where in the spec can I read about this? Is this true even if we know the MMC supports 52 MHz?

<comment><USER19> [https://www.jedec.org/sites/default/files/docs/JESD84-B451.p...](https://www.jedec.org/sites/default/files/docs/JESD84-B451.pdf)

You can use [http://bugmenot.com/view/jedec.org](http://bugmenot.com/view/jedec.org) to get free-to-use credentials.

The section in point is "A.6.1Bus initialization".

I'd say that if your MMC works fine going full-speed out of the gate and the IC on the board supports this speed, then you unlikely to encounter any issues.

<comment><AUTHOR> Thank you very much. Very helpful answer. I'll continue to use 52 MHz until I encounter problems (if any).

</comment></comment></comment></comment><comment><USER20> I have an intel system that takes 20x as long just to beep that there's no keyboard.

</comment><comment> Yanu-3452 Are super-quick boots vulnerable to having a (presumably?) lower entropy pool exploited or do the steps taken to mitigate low entropy across freshly minted cloud images also help here?

<comment><USER21> Isn't that more a question of how repeatable the process is?

</comment></comment><comment><USER22> The hardware looks awesome! Looks like it hasn't been updated in 2 years though, has anyone produced these PCBs based on the Jiffy?

Is that an EMMC Socket on there?

</comment><comment><USER23> Why can't network boot up be done asynchronously?

<comment><AUTHOR> You are right, it probably could. I should try compiling the fec-driver into the kernel and make it asynchronous. Should save a couple of milliseconds, and hopefully not delay entering user space.

<comment><USER24> Isn't network bring up done asynchronously in distros these days? I see my network interface not up and running even after the system is fully booted.

<comment><AUTHOR> I'm just referring to the fec driver kernel module, not the user space software. But I might of course be wrong. I've done lots of iterations trying to optimize the boot time on this tiny embedded system, and it's not always easy to remember all details. It could be that the fec driver is asynchronously probed. I guess I have to try it again at some point. =)</comment></comment></comment></comment>


My son has $23.6B. How is yours doing? - <AUTHOR> https://medium.com/bull-market/my-son-has-23-6-billion-how-is-yours-doing-a03893b672ac <comment><USER2> Clickbait. The $23.6B is virtual, earned in an iOS game.

<comment><AUTHOR> Extremely so. But the point he made was interesting, imho.

</comment></comment><comment><USER3> What happens when your simulations are inaccurate?</comment>


CALM Act passed, will quiet loud TV commercials within a year - <AUTHOR> http://arstechnica.com/tech-policy/news/2010/12/calm-act-passed-will-quiet-loud-tv-commercials-within-a-year.ars

<comment><USER2> When _both_ democrats and republicans agree on something, you can almost guarantee it's been requested for _decades_ by the population they supposedly represent.

Still. Better late than never, I guess.

<comment><USER3> The other case of overwhelming bipartisan support is when it's something that nobody actually wants.

<comment><USER4> ...or that only a specific industry wants, which I think is by far the most common case.

<comment><USER2> I think that fits with what they said.

</comment></comment></comment></comment><comment><USER5> Do HNers still watch TV? I stopped paying for TV ~ 2 years ago and find it mildly nauseating when I visit relatives and they want to have it on in the background.

<comment><USER6> I like my push TV service (i.e. cable) for the following things:

1\. sports -- there is no viable alternative at the moment.

2\. Sometimes I just want to veg and channel surf (be passively entertained). There is no good way to do this with online services or recorded stuff.

3\. Sometimes I need push infotainment because I don't know about the existence of something to actively pursue interest in it. While HN and Reddit (and so on) are rapidly replacing this niche, there are some things they just don't do well, somethings are just more interesting when presented as a video first, rather than as a link (cooking stuff comes to mind...).

That being said, having the TV on in the background is different than "still watch TV", and I agree, it is a bit annoying and sad.

</comment></comment><comment><USER7>
        FCC has received complaints about loud commercials since the 1960s

Nice to see that if you ask your government for something, within 50 years, they will deliver it.

</comment><comment><USER8> If this isn't fiddling while Rome burns, I don't know what is.

</comment><comment><USER9> Limitig volume (decibels) has little impact on the perceived loudness of sound. This is easily demonstrated by listening to a sine wave and white noise at the same volume. For a practical demonstration, see [http://www.propellerheads.se/substance/discovering- reason/in...](http://www.propellerheads.se/substance/discovering- reason/index.cfm?article=part3&fuseaction=get_article)

<comment><USER10> Ah yes, but the text of the bill uses the word 'loudness' which maps more accurately to dba's, which is perceived sound intensity. This takes the ear's frequency response into account as well.

<comment><USER9> _the text of the bill uses the word 'loudness'_

... that's nice? Are you expecting people to call up their senators and explain the subtleties of audio perception and how the commercial that they just heard exploits the differences between perception and audio level to actually be louder than the primary content without reading any differently on a decibelmeter?

Here's my prediction: this bill will have absolutely no effect other than to make running a television station more expensive.

You can't solve this through legislation because you can't efficiently fine offenders. If you care about the loudness of commercials, stop watching television or start building a commercial solution.

</comment></comment></comment><comment><USER11> "Rep. Anna Eshoo's (D-CA) bill will require commercials to be at the same decibel levels as programs during which they play."

I'm not sure if this will solve things. See [http://en.wikipedia.org/wiki/Dynamic_range_compression#Marke...](http://en.wikipedia.org/wiki/Dynamic_range_compression#Marketing)

</comment><comment><USER12> My question is: why haven't the tv manufacturers figured out a way to automatically regulate the volume to prevent loud commercials? It doesn't seem like it'd be impossible to solve and it'd be a great selling point.

<comment><USER13> Some TVs do have this feature. It's called Smart Sound on my grandparent's TV.

<comment><USER14> That's something you rarely hear, grandparents having better technology than the HN folk.

<comment><USER15> Makes sense though - older folks probably watch more broadcast/cable TV the old fashioned way, with commercials, as opposed to using a TV to watch movies or streamed episodes.

</comment></comment></comment></comment><comment><USER16> One of Heinlein's stories had a device that would automatically mute the TV when it got too loud. It effectively worked to mute the loud commercials.

It's too bad no one ever made that technology. :(

<comment><USER17> It would be a simple project, but the problem is that it would probably mute explosions and gunfire too.

More on the article, it's nice they're doing this and all, I don't care so much since I don't watch t.v., but I don't think a simple facepalm expresses my feeling that _this_ is about the best our government can do over the past few years when it comes to making the lives of its citizens better.

<comment><USER18> > I don't think a simple facepalm expresses my feeling that this is about the > best our government can do over the past few years when it comes to making > the lives of its citizens better.

A few problems with this statement:

\- Many people probably feel you are discounting some of the work the government has done over the past few years. The stimulus and healthcare (depending on who you ask) both significantly improved the lives of large sections of the citizenry. And there are probably countless minor laws that fixed various problems that weren't quite as important to you.

\- I don't like the assumption that the government's primary role is to make the lives of the people better in ways it is not already doing. This leads to government expansion and often fiscal irresponsibility and economic inefficiency. To put it concretely: a lot of the things you probably believe would "make the lives of [the country's] citizens better" cost money. That is, other people's money, people who might not value these things as much as you do. The government could I'm sure give every citizen a pair of roller skates, and that would "better" the lives of the citizens, but it also has a cost.

<comment><USER17> You're right my comment can be troublesome, nkurz expresses part of my position more clearly.

People are free to feel I'm discounting the stimulus and the healthcare package, personally I believe those to be insufficient and a mess, whether they will ultimately really improve everyone's situation is still to be seen and debated (elsewhere). I admit I'm likely ignorant on many minor laws that were passed that are useful to certain groups of people.

My assumption on the government making lives better is not that it should come up with more ways to do so, or less ways, but that it should simply focus on the big things and not these little things, which would include giving everyone some rollerblades. I'm also aware that everything has a cost, I don't see how stating that is an argument for anything. Of course government should weigh costs and benefits before rolling out some plan.

More concretely and with respect to this specific problem, it's something the government should keep its hands out of. This problem is easily solved by a free market solution of buying a sophisticated (i.e. capable of distinguishing commercial from program) device to do this for you without failing on the obvious cases (as the top comment suggested), the lack of which suggests it's not all that important a problem in the first place. (And in fact, it seems like _advertising_ is the more significant complaint, which is why things like Netflix and TiVo exist.) Plus a good-enough solution exists already: the mute button. If government should be providing any sort of service to better people's lives, it should be weighted such that only those services which provide the best improvement for the best costs should be implemented. Let's talk about the costs of eliminating national poverty, not making sure everyone with a scraped knee can go to the store and receive a free bandaid.

Edit: (Yes, I also realize that a failure of the free market doesn't mean there's no problem, but in this case, I think there really is no big deal and the government can stay away.)

EditEdit: On the other hand, the government nearly controls public broadcast anyway. Not straight-up censorship controlling but e.g. the recent force- upgrade to digital over analog, the list of words you can't say on public t.v. There are so many issues with this that it's hard to get a clear picture.

<comment><USER19> Shortest job finishes first. Big things will have big debates, big compromises, filibusters, on and on. In that time thousands of "little things" could have made it through.

Personally, I would try both. Get big things in the pipeline but get as many quick wins as possible. To do as you suggest leaves you in a position of having accomplished literally nothing after years in office.

</comment></comment></comment></comment></comment><comment><USER20> I love when the system actually works

<comment><USER21> I feel the opposite way. This strikes me like having hearings about steroids in baseball --- blatant pandering for votes instead of dealing with real issues with real consequences. I have no problem with individual networks or stations deciding that they want to better serve their audiences, but can this possibly be the best use of time for our nation's highest governing bodies? Going further, what's the positive national interest in encouraging Americans to watch yet more broadcast television?

<comment><USER18> > Blatant pandering for votes instead of dealing with real issues with real > consequences.

I think this is probably one of the things the government can do that is unambiguously good and will touch the lives of many, many Americans. It's also an example of a market failure where there is no market for the product or service demanded. It's a textbook example of the tragedy of the commons where the gain on the TV signal is owned by no one and thus not protected. It seems like a perfect thing for the governing bodies of the country to spend time on if that's what it takes to get it done.

I do not buy your theory that this is pandering for votes. I doubt very many people will chose their elected representatives based on this issue. Instead, I think that is just a convenient rhetorical device by which you are discounting the value of this measure.

> Going further, what's the positive national interest in encouraging > Americans to watch yet more broadcast television?

Personally I don't think it's in the national interest for the government to decide for its citizens what they ought to be doing with their time. Instead, it should observe what the citizens wish to do and, where appropriate and efficient, facilitate those activities.

<comment><USER3> _It's also an example of a market failure where there is no market for the product or service demanded. It's a textbook example of the tragedy of the commons where the gain on the TV signal is owned by no one and thus not protected._

I can buy that it's an example of market failure, but I'm not sure about the second part. According to the idealized free-market theory, this sort of stuff should be taken care of by the market just fine, by people changing the channel away from the objectionable ones, thus commercially penalizing them to the point where running quieter ads becomes the right business decision. That doesn't appear to have happened, probably because while people dislike loud TV ads enough to write to the FCC, they don't dislike them enough to actually meaningfully change their TV-watching habits (so channels with quieter ads don't really gain a commercial advantage).

<comment><USER22> But it is a market failure. The market for television shows is very far from perfectly competitive.

The products are _very_ differentiated, and there are only a few companies providing the products. But the differentiation is really what matters in this case.

As much as everyone hates loud commercials, channels can't actually gain significant viewership by quieting them down--no one is going to watch a drama with quiet commercials when they really want to be watching the football game with loud commercials.

This means that there's no incentive for a channel to piss off their advertisers by doing this on their own.

This is what governments are for--mandating the socially optimal strategy when the dominant strategy is something else.

<comment><USER23> Actually, I don't think that's the source of the market failure. The source of the market failure is that there is no real feedback to the advertisers when the recipients are disgruntled or annoyed. The only people that matter are the Nielson raters, and I don't think there's a slot on their forms for being annoyed by volume. If advertisers saw a big dip every time the commercials came on, and could ask the customers why, and then could run an experiment with more level volume and find out people don't tune out so quickly, they could learn and the market could correct, but due to the nature of the technology not a single step of the requisite path actually existed 20 years ago, and still mostly not today.

</comment></comment></comment></comment></comment></comment><comment><USER24> As far as I know we have a law like this in Italy, but still commercials are too loud, not complying with regulation.

I hope this will work in the USA.

</comment><comment><USER25> I can't quite articulate why, but it bothers me that passing a new law was necessary for this.

<comment><USER26> Agreed, I don't know how much sense it even makes from an advertising perspective. When loud commercials start, we mute the TV and ignore it, not the least of which because it's loud enough to wake the baby. We are not being exposed to the advertising.

Someone from Big Advertising a few years ago asserted that skipping commercials, even going to the bathroom during commercial breaks, was stealing, same as piracy. I find it odd that advertisers would actively discourage watching like this.

</comment></comment><comment><USER27> I'm all for this but unclear what "average maximum" refers to.

<comment><USER3> The text of the bill doesn't contain any actual definitions (<http://www.govtrack.us/congress/billtext.xpd?bill=s111-2847>), but instead instructs the FCC to make mandatory the document _Recommended Practice: Techniques for Establishing and Maintaining Audio Loudness for Digital Television_ (A/85), published by the Advanced Television Systems Committee, a standards body. That document is open-access here: <http://www.atsc.org/cms/standards/a_85-2009.pdf>

It contains a method of setting the loudness of a program via a volume control, which is based on some sort of average of the underlying waveform (not peak sample value), and then "recommends" that during changes between program and interstitial content (like advertisements), the same loudness setting be used.

It seems broadly similar to something like Replay Gain (<http://en.wikipedia.org/wiki/Replay_Gain>), which sets volume based on an average that's intended to capture perceived loudness.

</comment></comment><comment><USER28> How long until they start regulating the ads in my podcast?

</comment><comment><USER29> I work at a TV station in the bay area, this is total bullshit. I have a dial that controls the volume of both the TV shows, and the spots. Fuck the TV station, I CONTROL YOUR TV!! Jk, I just don't care to turn the dial down every commercial break (we have really old equipment). Every spot and show has a slightly different volume, except the British comedies. Wtf is up with that? Those things fucking blow up my airwaves. Why do you do that to me BBC?</comment>


Nestlé Takes Majority Stake in Blue Bottle - <AUTHOR> https://www.nytimes.com/2017/09/14/business/dealbook/nestle-blue-bottle-coffee.html <comment><USER2> _> The rapidly expanding niche accounts for 15 to 20 percent of coffee consumed in the United States, according to the Specialty Coffee Association._

One in every five or six cups of coffee is Blue Bottle or "third-wave specialty" coffee? This simply can't be true considering the scale of Starbucks, McDonald's, and Dunkin' Donuts, let alone brewing at home and coffee consumed at diners and non-specialty restaurants.

I'm surprised the _Times_ would cite the SCAA so uncritically.

<comment><USER3> I think it's pretty clear that the article intends "rapidly expanding niche" to refer to all of "third-wave specialty coffee," not just Blue Bottle.

<comment><USER4> That is still hard to fathom 20% of coffee sales

<comment><USER5> Maybe by dollar amount spent?

<comment> david-cako Hard to believe. Specialty coffee costs the same as whatever shit you can buy at Starbucks.

</comment></comment></comment></comment></comment><comment><USER6> While many of us do recall soundbites of the former Chairman and CEO of Nestlé about water, it should probably be noted that he is no longer in either role and is not a member of their Board of Directors. The new CEO (Mark Schneider) was brought in as an 'outsider' and while he also remains under some activist investor pressure is making some effort to clean shop and modernize their business. I'm interested to see what comes of this, and particularly whether Blue Bottle can actually benefit from Nestlé's technical expertise in coffee, which so many of the 'third-wave brands' struggle with.

<comment><USER7> This is the first comment you've ever made and it's basically PR handwaving away Nestle's history of human rights atrocities. I wouldn't be surprised if this is a shill account.

</comment></comment><comment><USER8> The Wikipedia article about the 40 year boycott of Nestle has some more details: [https://en.wikipedia.org/wiki/Nestl%C3%A9_boycott](https://en.wikipedia.org/wiki/Nestl%C3%A9_boycott)

</comment><comment><USER9> Nestlé has been one company I've consciously put effort into "not" buying products from, due to their track record concerning their formula in Africa (and other similar issues). That said, they are a beast and I probably buy a lot of Nestlé products without even knowing it. I still buy Nestlé Holloween candy for kids during the holiday, and I definitely eat my fair share of Butterfingers and Kit Kat's.

That said, I'll most likely pass up Blue Bottle now even though their affogatos are amazing.

</comment><comment><USER10> There's always Verve...

[https://www.vervecoffee.com](https://www.vervecoffee.com)

<comment><USER11> There is! But not within walking distance of my office, unfortunately (I'm in L.A.). Blue Bottle is just down the street, and Stumptown is _just_ too far to realistically walk to on a short coffee break-type timetable.

So this news is a little disappointing, but I'm hopeful nothing at my local cafe will drastically change for at least the next several months. I am, however, curious to see what impact this will have on the bean and roast quality.

</comment></comment><comment><USER12> There's a great episode of the Startup podcast (which is generally quite good, particularly the early seasons) about one of the artisanal coffee producers that sells to Blue Bottle:

[https://gimletmedia.com/episode/building-perfect-cup- coffee/](https://gimletmedia.com/episode/building-perfect-cup-coffee/)

</comment><comment><USER13> Good coffee does not scale.

<comment><USER11> I think it's reasonably fair to say that so far it hasn't, but _could_ it? If not, to what would you attribute the fundamental roadblock?

I'd argue consumers themselves, but I don't know if that's really just a cop- out or not.

<comment><USER14> Even if you buy the best X% of a crop, as scale increases, quality will go down.

Unless a significant portion of profits are directed towards the improvement of farming methods, scale tends to decrease quality.

<comment><USER15> Are you saying that supply can't scale to demand? Because what you've described, a limited supply and increasing demand, is commonly solved by increasing supply. Unless we're at 100% coffee output for the Earth, which I don't think we currently are.

<comment><USER14> I'm saying that supply of highest-quality coffee may be less elastic than demand.

Certainly we could grow more coffee, and that would likely increase net output of high quality coffee. However, if a company is buying the 'best 10%' of coffee and need to double their output, it is more likely that they buy 80th-90th percentile coffee than reinvest their profits into increase the quality that tranche of coffee to meet that of the top 10%. Even if a company chose to do this, the amount of time it takes to deploy capital in agriculture (~1yr+) is likely much less than the amount of time it takes to deploy capital in manufacturing (months), which effectively would cap growth rate.

<comment><USER11> An interesting argument I hadn't considered. I wonder, though, how genuinely impactful bean quality is for the end product. It's well understood that it's impactful to some degree, but do premium roasters need the top 10%, or is, say, the better half of arabica produced sufficient to yield effectively the same brewed product?

Said another way, is the slope of quality distribution that severe?

<comment><USER14> Good question, I'd also be interested in the answer.

I'd guess its a long-tailed distribution something like this ([https://qph.ec.quoracdn.net/main- qimg-3b21f991d3f0446ce30b9b...](https://qph.ec.quoracdn.net/main- qimg-3b21f991d3f0446ce30b9b33496e87ab)) (quality on x axis, volume on y-axis) However, I know little about the complexities of coffee agricultural and manufacturing process, mostly just speaking in abstract armchair economics terms.

</comment></comment></comment></comment></comment></comment></comment><comment><USER16> Thanks for the heads up. I guess it is other coffee shops for me from now on.

</comment><comment><USER17> Sort of defeats the point of visiting your friendly neighborhood non corporate cafe. I was even willing to drink coffee that came out of a rodents butt to show my willingness to be non corporate & local. Forget that! It's Dunkin coffee for me from now on.

</comment><comment><USER18> All the people in this thread arguing about the "right" of water should sign a waiver of liability, then abstain from water for a few days to show how it's not a right, but just "a nice thing someone should have."

</comment><comment><USER19> As this thread will ultimately will end up discussing the corporate evil that Nestlé apparently is, I want to, for the sake of the discussion, point out the reasonableness of the CEOs statement regarding water as a human right:

He argues water should have a market value so that it is treated more like a resource that should be well managed. Of course a state can also do this and in my opinion should, but of course as a company they want to fill this role. If water is treated as a market asset then more investment will happen (which can also happen through a state entity) - a good thing. In a later video, after the 2005 video was a total PR disaster, he tries to clarify his argument by saying that water should be a human right to humans who need it for living, but not for gardening or washing a car. To me that seems like a valid case.

<comment><USER20> And I don't get exactly what it means to declare water a human right. There are certainly people in the world not getting the clean water they need. But how do you solve this? You set up an international agency to acquire water for them. But where do you get the funding for this agency? If it really is a _human_ right, is this agency above local laws? What are the restrictions on this agency? Can this agency ban the building of a dam that would deprive even one person of a suitable source of water?

It's weird because other rights are what others _can't_ do to you, but this right is what others _must provide_ you. Who and how just aren't clear.

<comment><USER21> Exactly. I often hear this whole "water a human right" argument from the left and when asked about what would change they really can't answer that. I think everyone knows how water is essential for the human life but declaring it a human right won't change anything. After all what would we do the next day after making it a human right?! Send the US Army to Malawi bearing Super Soakers?

<comment><USER22> Capitalist institutions like the US Army can't deliver what the human needs, only another social system can deliver it.

<comment><USER23> As a Marine, I delivered food, water, shelter, medical supplies, and even entertainment to refugees. I'd then aid in their defense.

It's not a long-term solution but it was effective.

</comment></comment></comment></comment></comment><comment><USER7> That's a major bummer. Nestle is one of the most evil companies there is-- their CEO once said water isn't a human right. Nestle uses cocoa from slave labor and bottle water in drought stricken communities and national forests on expired permits, and do shady stuff like hiring the regulator who gave them their water license. Very few companies are as vile and amoral as Nestle.

Unfortunately, this will taint Blue Bottle's 'premium' experience for me. I guess I'll go to Philz instead.

<comment><USER24> Counterpoint:

Saying water isn't a human right is different than saying not everyone should have access to water.

I generally agree that water isn't a right. I think it's a misuse of the word "right" and a misapplication of the concept of a "right".

Rights define what you're free to do for yourself, and the various ways in which those freedoms can't be infringed upon by others. For example, you have a right to free speech and people can't infringe on that. You have a right to not be tortured and people can't infringe on that. In the US, if the government is going to take your property or jail you as punishment for a crime, you have a right to a fair trial first before they can do that to you.

There's a distinction between that and things like water and healthcare. One is a list of rights, and the other is a list of things people generally need to live a happy and healthy life. If we're going to dilute the definition of "right" down to that degree, why don't we just throw in housing and free trips for vacation and a loving partner while we're at it?

South Africa has housing as a right in their constitution. They also have 200,000 homeless people. So who's infringing on their rights? Every citizen of South Africa?

The UN General Assembly declared water a human right. The world also has close to a billion people who don't have access to clean drinking water. Who's infringing on their rights? Are you?

Rights aren't about what resources (time, money, commodities, services, etc) you're free to take from others. When you start defining rights that way, rights all start contradicting each other. What about a doctor's freedom to choose who they perform surgery on? What about your freedom to live a life not solely dedicated to plumbing in Gabon?

<comment><USER14> I think the key point of contention is about rainwater harvesting.

Making rainwater harvesting illegal (and thus forcing people to overpay a monopolized water system) is arguably a violation of human rights. It is a prohibition of what you are 'free to do for yourself', that forces people to pay for something they need to survive (and could otherwise get for free).

However, I agree on the haziness around the issue. Mandating that everyone receives X amount of drinkable water may be expensive to implement, economically unsustainable and create perverse incentives.

<comment><USER25> In the US people have mineral rights to the earth under the surface of their property. This can be separated from the surface rights and sold off. If one buys just the surface rights, then the entity that has the mineral rights can, in most cases, access your surface to extract their minerals. Not reading the fine print on your title and having someone want to exercise their mineral rights is a serious issue in the US. I would definitely be very wary of buying land without the mineral rights.

But the right to use water that lands on your property? Never heard of "rain water rights". Unless it was previously declared somehow, forcing you not to collect rainwater would highlight the need for the right to bear arms. I would like to know more about how that came about in those cases.

<comment><USER14> Apparently it's technically illegal in Nevada. Thankfully, sounds like it isn't practically enforced. [http://www.rgj.com/story/news/2015/05/26/ask-rgj- can-nevadan...](http://www.rgj.com/story/news/2015/05/26/ask-rgj-can-nevadans- collect-rain-barrels/27983037/)

I believe are some serious injustices around water privatization in South America, however.

</comment></comment></comment></comment></comment><comment> what-no-tests Coffee is cultural appropriation.

</comment><comment><USER26> Well, and how many are conscious of the fact Nestle owns Nespresso? You're basically drinking mediocre folgers in a pod and paying the premium. No amount of branding will divert from the fact that local, organic alternatives can be had for less.

<comment><USER27> Just because a company owns two of the same thing, doesn't make them the same. Using that logic, Blue Bottle is now just Folgers.</comment></comment>


How to Ship Code and Influence People  - <AUTHOR> http://www.skrenta.com/2007/01/market_engineering.html

<comment><USER2> My understanding of the post is:

The title is misleading.

If many people doesn't use your code then it is a waste of time to write it.

 _No minute lost comes ever back again_

 _Take heed and see ye nothing do in vain_ </quote>

 _If you're designing a product, but don't understand how the system of networked humans will work around it, you really can't understand how your product will work either._ </quote>

In order to ship code you should know how to influence people.

</comment><comment><USER3> Nice title.</comment>


Implementing bookmarklets in JavaScript - <AUTHOR> http://www.2ality.com/2011/06/implementing-bookmarklets.html <comment><USER2> One of the best things about bookmarklets is that they work on mobiles too.

There's a great collection of bookmarklets at <https://www.squarefree.com/bookmarklets/> (Fron the same guy who tracks changes in Firefox's nightly builds: <http://www.squarefree.com/burningedge/> )

You can also turn bookmarklets into GreaseMonkey scripts so they can be ran automatically on certain sites (in Firefox): [http://www.squarefree.com/2005/05/16/bookmarklets-to-user- sc...](http://www.squarefree.com/2005/05/16/bookmarklets-to-user-scripts/)

<comment><USER3> I continue to use a number of (sometimes modified) bookmarklets from squarefree. They are also useful in skirting restrictions in environments where you are "not supposed to install stuff" (but where concerns are not so severe as to prevent execution of Javascript with which you are familiar).

It's also nice to be able to do the same things in an arbitrary set of browsers (for the most part).

</comment></comment><comment><USER4> Bookmarklets are awesome except they involve more user interaction than should be needed. I feel like almost every time I could use a bookmarklet, a plugin would do more with just as much user initiative.

They also don't have a favicon (or I haven't seen one in FF4) without a user pre-visiting a destination page, so they look unpolished.

<comment><AUTHOR> Bookmarklets are cross platform across practically any browser and work in mobile devices too. Can't say the same for plugins.

Plus it's easier for some developers to knock out a bookmarklet than a plugin, especially when you can do much of the logic server side, and potentially hook into existing code there.

</comment></comment><comment><USER5> I like: [http://betterexplained.com/articles/how-to-make-a- bookmarkle...](http://betterexplained.com/articles/how-to-make-a-bookmarklet- for-your-web-application/)

as a reference

</comment><comment><USER6> this is ok- and even shows you how to do async loads. an article targeting more comprehensive bookmarklets might recommend your bookmarklet should _only_ load an external script. additionally, some discussion of postmessage would be cool. you can actually create insanely robust bookmarklets posting messages (and using views) through an iframe(s).

<comment><USER7> I see you use the (function() {…})(); syntax in your gist, while the linked article uses (function() {…}()); I tried some simple experiment, even passing a param in the outer parens, and both seemed to work the same, and ok. Is one of these "right" and the other one "wrong"?

<comment><USER2> The former give the following message in <http://jslint.com>

      Problem at line 1 character 17: Move the invocation into the parens that contain the function.

Crockford seems to prefer the latter but I don't know why.

<comment><USER8> This is purely a matter of taste. You only need the parens to tell JavaScript that it is a function expression and not a function declaration (a statement). The outer parens make an IIFE look even more block-like to me, which is why I use it. Any other prefix that tells JS that the IIFE is an expression is OK, too. For example:

        +function() { console.log("bla") }();

But: this one converts the result to a number, which you don't want if you need the result of the IIFE. On the other hand, in places where you need that, there is usually no ambiguity with statements, anyway, and you don't need any kind of prefix.

        var abc = function() { return "abc" }();

</comment></comment></comment></comment><comment><USER9> yet another collection (great, of course :) - <http://linkstore.ru/book/index- en.jsp>

</comment><comment><USER10> <http://getfirebug.com/firebuglite#Stable></comment>


Ask HN: Why so many JavaScript frameworks? - <AUTHOR> <comment><USER2> Because organizations with specific needs and significant resources often benefit from writing their own framework to exactly fit their use case. Consider Facebook, to a first approximation, there is only one framework. Google is in a similar position, though there may be more than one framework, there are not many frameworks.

For organizations without significant resources, JavaScript frameworks can be a bit like wearing someone else's underwear. Technically it works, but you're probably looking for a better alternative.

</comment><comment><USER3> Nothing wrong with having many choices but to answer the question I think it's because of the sheer of popularity it has. I mean it is the language of the web after all.

</comment><comment><USER4> If you know _how_ to program but not _what_ to program, creating a framework is just about all you can do.

<comment><USER5> I bet majority of frameworks are built for a certain project/need. At least mine are (RE:DOM for example, [https://www.redom.js.org](https://www.redom.js.org)).</comment></comment>


Children with no Covid-19 symptoms may shed virus for weeks - <AUTHOR> https://www.eurekalert.org/pub_releases/2020-08/cnh-cwn081920.php <comment><USER2> They can shed viral RNA for weeks. Whether this means they are infectious is unknown, because the paper (not linked in TFA) did not attempt to test for live virus (cell culture infection).

<comment><USER3> IMO: This deserves a title modification.

 _Children with no COVID-19 symptoms may shed viral RNA for weeks_.</comment></comment>


Ask HN: What is your database sharding strategy? - <AUTHOR>

Need some feedback from experienced DBA on how you would go about sharding a mega huge database. Assume you would want a app-agnostic strategy that you can deploy with any application.
Range/Modulo/Hash-based partitioning?
Table-level sharding or DB-level sharding?
What sort of architecture? Do you have a centralized lookup directory at db-level/app-level? I don't like this idea as I don't want to have a single point of failure.
What about a DHT architecture for the DB servers?
How do you deal with the loss of joins? <comment><USER2> We're just discussing over in this thread: <http://news.ycombinator.com/item?id=296656>

I have had really good experience with a very simple centralized lookup facility. It's very easy to prevent that from becoming a CPOF, either using replication or, if you insist, some form of hash-based partitioning of the directory itself.

I'm a fan of doing the partitioning at the app-level, and doing it horizontally rather than vertically.

The loss of joins is an issue, but in some cases you can vertically partition the parts of the app that need those joins. For the others, I have had good luck using a transactional message-passing system, where one shard can reliably send a message to another shard.

<comment><AUTHOR> Yes. I'm reading your slides now. Very interesting set of technologies you have there. How do you integrate the usage of multiple languages? Do you use Thrift?

Instead of a centralized lookup facility, have your team tried a decentralized approach instead where each DB server (node) contains a portion of the lookup directory?

<comment><USER2> We mostly used simpler RPC mechanisms like XMLRPC or REST. But cross-language calls (other than client-server) were really the exception. Probably the only really performance sensitive ones were to our SOLR-based search.

Yes, you can easily move chunks of the address space around, but we decided that the pain that results from remapping (like when you add a new machine) is worse. We very rarely had a problem with our master (which we ran in master- master replication, how's that for term overloading). The few exceptions were times that our own bad code ran amok driving load. It was way better to invest in an automatic query killer.

<comment><AUTHOR> I'm very interested in knowing how you guys grew so big so fast under the radar without much evangelizing from the SV scene. Hope to read about this in your next blog post!

<comment><USER2> Just for you: [http://startuplessonslearned.blogspot.com/2008/09/sem-on- fiv...](http://startuplessonslearned.blogspot.com/2008/09/sem-on-five-dollars- day.html)

Would love your feedback, if this is helpful.

</comment></comment></comment></comment></comment><comment><USER3> There's some good answers and examples to the questions about database sharding here:

<http://www.codefutures.com/database-sharding/></comment>


Here's the thing with Wired - <AUTHOR> Here's the thing with Wired:
http://i.imgur.com/ONOt88S.png
Fight Internet coercion -- boycott Wired. Don't link to their articles, don't visit their site, don't accept their coercive behavior. Ad blocking is not a crime, it's a right. <comment><USER2> I don't ad-block, but I do null-route hosts that I don't enjoy receiving traffic from.

Some hosts make my browser slow and don't contain content I care about. So they are 0.0.0.0 according to my hosts file.

Wired somehow detects that I'm not talking to those hosts and punishes me as show in that screen shot.

I don't like it.

Wired's own webservers are NOT null-routed, so they should serve ad content from their own webservers if they want me to view it.

<comment><USER3>
      they should serve ad content from their own webservers

I'd love for more sites to do that. Unanimated, non-tracking, same-domain ads are the most acceptable.

</comment></comment><comment><USER4> Forbes went the same way, and same with Computerworld. They think that they're being slick, but they've just lost readers instead.</comment>


Tight investors force young entrepreneurs offshore - <AUTHOR> http://www.abc.net.au/news/2013-04-26/tight-aussie-investors-force-young-entrepreneurs-offshore/4653828 <comment><USER2> What if the title of this article is wrong? Isn't it possible that American investors are loose?

If you believe the hype, foreign investors are scared of failure, less willing to take chances, etc. Yes, investors have different risk tolerances, but most professional investors are not entirely risk averse.

Looking at the performance of most venture capital funds, and the venture capital "asset class" as a whole, over the past decade-plus, I think more intelligent investigation of foreign investors' preferences would reveal that there are very good reasons they aren't chomping at the bit to throw money at every tech entrepreneur in need of a few million dollars.

</comment><comment><USER3> I partially agree with this.

I run a startup in Sydney and raised $1M from angels and VCs in both Australia & the US.

When I first presented to angels in Sydney I found them initially "tight", and they laughed at the $2M valuation I was pitching.

After this I pitched at 500 and at a whim doubled the amount I was raising (and our valuation).

The response from valley investors was that it was refreshing I was only asking for a $4M pre and I was able to secure some investment (in the context of several YC companies wanting a 10-15M valuation post YC).

I found that with this strike price established by the Americans, the previously "tight" Australian investors then followed suit.

Just my 2c.

<comment><USER4> _When I first presented to angels in Sydney I found them initially "tight", and they laughed at the $2M valuation I was pitching._

I feel like the one-time cash-drop is a terrible model for early-stage businesses. A good (1.5+) programmer is worth _at least_ $300k/year working on his own stuff, because (a) he actually gives a shit, and (b) his competence will grow faster than it would in a typical paid job.

So for 4 years of a good engineer's work, $1.2M is a fair sight-unseen valuation. Scale this up for team size and include existing validations from the market, and $5-10M isn't unreasonable (with a 4-year vesting period on founder equity; unvested stuff going to investors).

The indefinite duration to profitability is a problem, because it's such a huge unknown that renders valuation calculation a joke. When you're valuating _a person_ , any number that comes without an amount of work (e.g. a duration) is meaningless.

I feel like an Autonomy Fund model is better. Broad-strokes overview, minus the regulatory stuff and incentive problems and adverse-selction protections: there isn't a specified time line, but you get 75% of your market salary, and investors get a _passive_ 30% equity in whatever you build (including side projects, that being the one downside for employee). The going assumption is that you're worth 2.5x more to the economy when you work on your own stuff than when you work for a typical company.

Of course, there are various protections that need to be in play to prevent people from scamming it (i.e. quitting the Fund, then launching something next-day with 100% equity) and there would be a need for some kind of audit cycle (to push out people who are coasting) but I think the overall model is superior to anything that exists now.

One thought I had is that local governments would have an interest in setting these kinds of things up, because even if the concept fails and they "lose" money, it goes back into the city and the network effects also build up the technology ecosystem there.

</comment></comment><comment><USER5> The PWC report they mention can be found here : <http://www.startupaus.org/research---startup-economy>

[ PDF here : [http://www.digitalpulse.pwc.com.au/wp- content/uploads/2013/0...](http://www.digitalpulse.pwc.com.au/wp- content/uploads/2013/04/PwC-Google-The-startup-economy-2013.pdf) ]

</comment><comment><USER4> What gets me, in the US, is that investors only want to fund companies in red- ocean star cities where studio apartments cost more per month than the average American fucking _makes_ after taxes.

I enjoy many things about living in New York-- you fucking hate it when you sign a rent check or change jobs; other than that, it's quite nice-- but it pisses me the fuck off to pay these ridiculous rents (and the real estate costs reflected in restaurant pricing; I wouldn't mind paying $20 for sushi if the money went to the chef and wait staff and not real-estate fuckers). The reason the city's expensive is because top-talent _people like me_ come here and work their asses off, providing a healthy substrate for economic activity that generates lots of value. _I'm bringing the real fucking ingredient_ (talent) and not these unproductive and fucking _uncultured_ absentee landlord fucksticks (half of whom don't even live in the city, and what the fuck are we doing allowing foreign speculators, i.e. third-world despots and their henchmen, to own property here when we can't even provide for our own fucking people?) who've stolen most of my savings. Who the fucking fuck thought "Talent Pays" is a fair or good fucking system? It wasn't fucking me, I'll tell you that much.

The talent argument for startups only being in star cities is specious. All it would take is for a few hundred top engineers to move to any city X in unison and that would start something. Fuck, you might be able to build a kernel with 20. You could use a #4-10 tech hub (Austin, Seattle) or somewhere that's not even on the map (e.g. Iowa City).

Now, if you're selling to a specific clientele, living in a star city makes sense. If 80% of your clients are going to be financial firms, you want to be in New York. I get that. But there's so much that can be done from anywhere; so why is all the investor money limited to a couple of cities?

I am a genetic contrarian so I tend to be one of the first to see when going assumptions are wrong. I think that if you want to build a stable company, you want to be _outside of_ the fuxpensive star cities right now. When the culture is one where you have to become some parasitic VP who doesn't do anything, and then "exit", just to own a house, you're not nurturing the lifelong software engineers who will _actually_ be motivated to build awesome shit. Whereas outside of the star cities, your burn rate is lower, and the "job hopping" climate isn't as fluid (which is good and bad) so you can really invest in people and build for the long-term, instead of being _fucking toast_ if Facebook doesn't buy you before trick-or-treat night.

<comment><USER6> The reason all the money is in 3 cities is actually really simple...

NY, SF, Boston > Every other city in America

I'll admit that those cities are not for everyone, but they are irreplaceable for most people that live in them. If you make enough money to live in one of those cities, the lifestyle cannot be replicated outside of those cities.

VCs can choose where they want to live, most of them choose tier 1 cities. Talent also chooses tier 1 cities so the collocation benefits everyone.

<comment><USER4> _I'll admit that those cities are not for everyone, but they are irreplaceable for most people that live in them. If you make enough money to live in one of those cities, the lifestyle cannot be replicated outside of those cities._

What about Chicago? Great city, not as expensive; problem is, not much VC money. I would rather the worst thing about where I live be called "January" than have it be called "rent".

 _VCs can choose where they want to live, most of them choose tier 1 cities. Talent also chooses tier 1 cities so the collocation benefits everyone._

Talent doesn't get as much "choice" as HN likes to believe. Sure, good programmers get solicitations for jobs all the time, but often that's just an invitation to waste time on a phone screen, spend six hours on a code test (because you actually care about doing things right) and then get rejected because your choice of language (for the test) fell on the wrong side of that company's ever-shifting internal language wars. Or it's an invitation to work at some startup with shitty cargo-cult culture that'll fire you at 4 months with no severance if you don't go to the strip club with the other brogrammers. _Good_ jobs are goddamn rare and hard to find no matter who you are.

Talent should have the kind of leverage that HN believes it does, but right now, 90+ percent of talented people are poors who still need to adapt to bosses and market trends and landlords.

<comment><USER6> Yeah, Chicago is good too. The winters there are worse than Boston, and as someone living in Boston, I'm not sure I can deal with much worse.

Also, DC is pretty good too.

Arguably, NY and SF are far better than Boston, and you could probably safely lump Boston in with Chicago and DC as far as desirability.

I agree with you that talent doesn't have as much leverage as they think they do. Good jobs are nearly impossible to find. That is why living in a great city is so important. Talent will never have the type of leverage HN believes it does except for in rare individuals who have built social credit along with their skills.

<comment><USER4> _Good jobs are nearly impossible to find. That is why living in a great city is so important. Talent will never have the type of leverage HN believes it does except for in rare individuals who have built social credit along with their skills._

Now that I'm almost 30 and aware of my mortality (my mother passed away recently, which had more to do with my "mid-life crisis" than chronological age, since I'm still quite young by the standard outside of Wall Street and VC-istan) I'm starting to wonder about the best way to change this. How do we take this garbage-pile of an industry and fix it? How do we clear away the crap and build something we can be proud of?

Social trends are such that we're on track for a violent worldwide revolution (widespread, permanent un(der)+employment will be the norm by 2030) unless we fix our society in a major way (basic income, necessitated by said underemployment) but we also have the tools available to be smart and not burn/kill our way to a better world. We don't _need_ to overthrow the corporate bastards with force (at least, I hope we don't; the problem with real-world holy wars is that the unholy have guns and better aim) because with technology we can outperform them. We should take this opportunity to rewrite all the assumptions, if we can.

<comment><USER6> I wouldn't count on the violent worldwide revolution. History has not been kind to the massive number of people who consistently predict it while saying "this time its different!"

As far as your first question... who knows? One thing I know for certain, it doesn't matter what you do, or how you do it, there will be trade-offs, always. As a much older than you... 30 year old, I've come to sort of just enjoy what I can and brush off the unpleasant stuff while I keep up with a rigorous search for knowledge and improved skills.

I'm certain that opportunities will present themselves, and I'm positioning to always be ready to take advantage of them. Fulfillment for me partially comes from the knowledge and skills gained. I know that I will have a high level of achievement over my career and because I am confident it will all work out, I am relaxed while I push myself.

In 2 years, maybe I'll have a totally different outlook? I guess that is the fun of the whole thing.</comment></comment></comment></comment></comment></comment>