Why Emacs is a better editor – case study for JavaScript developer - <AUTHOR> http://blog.binchen.org/?p=901 <comment><USER2> Js2-mode is an interesting case of an author (Steve Yegge) going against the fold of how Emacs is supposed to interact with programming modes -- by writing his own parser and syntax highlighter and eschewing the built-in way, which is to use Emacs's font locking, which itself is driven by regular expressions and the odd lisp function.

It's a shame Emacs lacks the facility to properly capture the more complex requirements of languages today - especially files with mixed content, such as HTML, Javascript and templating tools. The few that do support this do it using a variety of clever hacks to work around this problem; and still, using regular expressions to capture the nuances and complexities of some languages make it an error-prone way of writing major modes in Emacs. Not to mention you lose out on the many advantages of having an AST in memory for code jumping, refactoring, syntax checking and what have you.

Emacs could do with a shake-up in this space. The proposed solution (Semantic Mode / CEDET) has never really caught on, even though it adds much of the same functionality to Emacs; my suspicion is that this is because Semantic/CEDET is ridiculously complex and lacking in documentation.

<comment><USER3> > Semantic/CEDET is ridiculously complex and lacking in documentation

So, sooo much this. And it's a real shame, because semantic is quite a usable tool once you get to know it.

One thing I really wanted to have was a semantic index, a database of semantic symbols inside a project. I wanted to be able to write "Form" and have it display all the class names containing "Form". Grepping (even ag) is just much too slow and building my own index was too much work. I then saw "semanticdb" module.

A week, I'm not kidding, a _week_ \- instead of half an hour - later I finally managed to preload a custom tag database and to query it. And that was with Python code, which has Semantic parser already, which is well integrated into the rest of CEDET.

Now I'm fighting with CoffeeScript/LiveScript support. They both expose their parsers - I can get their AST with one line of code. After another week I still don't have working Semantic plugin for them.

When I last checked, the activity on a CEDET and Semantic mailgroup was almost non-existent. The home page for CEDET looks like it comes from last century and even info pages are not a big help.

It's a friggin shame, because when Semantic works, it does work well.

<comment><USER4> >When I last checked, the activity on a CEDET and Semantic mailgroup was almost non-existent.

[http://news.gmane.org/gmane.emacs.cedet](http://news.gmane.org/gmane.emacs.cedet)

Sure, it's not LKML, but still, questions usually get answered.

> Now I'm fighting with CoffeeScript/LiveScript support. They both expose > their parsers - I can get their AST with one line of code. After another > week I still don't have working Semantic plugin for them.

I'm afraid an AST is just the beginning for properly supporting a language. If you need help, don't hesitate to ask on the mailing list.

> The home page for CEDET looks like it comes from last century and even info > pages are not a big help.

Yes, unfortunately.

</comment></comment></comment><comment><USER5> Emacs Lisp is such a horrible language, and the Emacs ecosystem is so firmly stuck in the past (mutable state and magic hidden side effects and interactions everywhere) that writing extensions for it is much harder than it should be. It has enough history and a smart enough user base to have a lot of cool functionality, but the idea that it is somehow exceptionally wonderful just doesn't hold.

(I use Emacs for all my coding, and Common Lisp is my favorite programming language, so, if anything, my biases would be in _favor_ of Emacs. Sadly, it doesn't really deliver -- not that other editors get their interface right. Don't get me started on vim. ST is somewhat better, but doesn't expose powerful enough tools. If I may toot my own horn, I believe my own project, [http://codemirror.net](http://codemirror.net) , does a lot of things right on the editor API level that popular editors get tragically wrong.)

<comment><USER6> Elisp is bad, but not nearly as bad as vimscript.

<comment><USER7> For what it's worth, you can also write Vim extensions in Python. It's got access to all the same stuff as Vimscript. I would argue that Python is the better language when compared to elisp (even if one believes CL or other full- blown Lisp or Scheme variants are superior to Python).

I'm not saying that makes vim a better editor than emacs. Just pointing out that vim has other options for extending. Also, I use vim and haven't found emacs to be more productive; in my college days I tried emacs, in earnest, for a few months. I came back to vim eventually, and haven't felt compelled to give emacs another go since.

<comment><USER8> The Emacs/ELisp API, however, is far better. If we assume for a moment that ELisp and Python are, for the act of writing a editor extension, in similar good shape. Then it is still easier to write a good plugin with elisp for emacs than with python for vim, because the API that emacs offers for the integration of scripts is really, really fantastic. Vim doesn't offer anything like that.

</comment></comment></comment></comment><comment><USER9> The point is that js2-mode _interprets_ javascript which enables it to offer much more exact syntax highlighting and navigation than purely regexp based approaches. FWIW, js2-mode is an exception and most of emacs highlighting comes from regexps via font-lock mode. The author could have made the same point about Visual Studio vs other editors as the former parses syntax which most others don't.

<comment><USER2> Indeed. But it's still a nice thing to be able to do; this is, after all, the Emacs way -- for good or ill!

One useful technique to make Emacs appear cleverer than it is vis-a-vis code searching and navigation is to navigate by syntax highlighting - most of which is assigned one of several types (constant, keyword, statement, etc.) -- and simply use that. It's hardly perfect, but it's good enough for 90% of the basic navigation you need to do.

<comment><USER10> >One useful technique to make Emacs appear cleverer than it is vis-a-vis code searching and navigation is to navigate by syntax highlighting - most of which is assigned one of several types (constant, keyword, statement, etc.) -- and simply use that.

How do you do that?

<comment><USER2> I'll have to polish off some of the code I wrote ages ago and share it on my blog (see my profile.)

<comment><USER10> OK, I'm subscribing to your blog. Thanks for sharing.

</comment></comment></comment></comment></comment><comment><USER11> Sorry, but what set of Emacs plugins are able to offer what Netbeans does for HTML5 development?

[https://netbeans.org/features/html5/index.html](https://netbeans.org/features/html5/index.html)

<comment><USER12> [https://github.com/skeeto/skewer-mode](https://github.com/skeeto/skewer-mode)

<comment><USER11> That is just a subset of what Netbeans offers.

</comment></comment></comment><comment><USER13> I kind of feel the hacker spirit in what you did but… what about fixing your JavaScript instead?

Sublime Text: [http://imgur.com/p27i5L7](http://imgur.com/p27i5L7)

Vim: [http://imgur.com/OlVbSdO](http://imgur.com/OlVbSdO)

<comment><USER3> No.

The tool _should_ support even the most hideous constructs; saying that "but what you wrote could be written better" is completely orthogonal to "the tool couldn't handle it".

<comment><USER14> > _The tool should support even the most hideous constructs_

Nope, the tool should choke on hideous constructs, and make you write them properly.

See how I provided just as many arguments as you?

<comment><USER15> Have you ever worked with legacy code?

<comment><USER16> Legacy code, at some point in the past, was somebody's new and beautiful code (or so they thought -- little did they know it was hideous). If the tools that existed then didn't allow them to do the hideous things they did, you wouldn't be calling their code "legacy" today.

</comment></comment></comment></comment></comment><comment><USER17> If you are going to argue for a tool that understands the semantics of the language you are editing, you are doing yourself a real disservice not using a JetBrains editor if they support the language. They do support Javascript and their support is quite great.

</comment><comment><USER18> An editor with a plugin with code I modified makes this the best editor...

Because anything you put time into to makes it automatically better for your use case is _actually_ better.

</comment><comment><USER19> This is quite stupid. Saying emacs is better but showing that emacs do actually the same sublime text mistake.... Emacs is extensible; ST too.

<comment><USER20> AFAIK, ST2 doesn't have a plugin for a Javascript interpreter (though I haven't used ST2 for over a year now). You could extend the javascript.sublime-language file, but that only supports regexes so you won't have the same context as with the AST.

Your main point stands though: all major editors have the ability to add plugins to achieve this same functionality.

<comment><USER21> [http://ternjs.net](http://ternjs.net)

Tern is a stand-alone code-analysis engine for JavaScript. It is intended to be used with a code editor plugin to enhance the editor's support for intelligent JavaScript editing. Features provided are:

        *Autocompletion on variables and properties

        *Function argument hints

        *Querying the type of an expression

        *Finding the definition of something

        *Automatic refactoring

There is currently Tern support for the following editors:

        *Emacs

        *Vim

        *Sublime Text

        *Brackets (built in to the base editor)

</comment></comment></comment><comment><USER22> Fwiw, visual studio evaluates your JavaScript similar to this providing you pretty good js intellisense/autocomplete

</comment><comment><USER23> The key thing is that javascript is built into emacs, which is a good argument for javascript to be built into any serious programmer's editor (since (a) chances are good the programmer knows javascript, (b) you can get a good javascript engine for cheap, (c) many programmers will actually be using your editor to write javascript as a bonus).

I was playing around with another interesting editor (Chocolat) which actually uses a Javascript engine to identify symbols in Javascript source files; but it does this far worse that can be done easily with regex (and in fact makes terrible errors doing so).

Indeed, better results than that shown in the article are achieved by fancy new editors (like Espresso) and crufty old editors (like BBEdit) using regex and brute force. Fundamentally you've got an anonymous function or a function with a common name, and you want some outer context to further identify it -- regex can do that.

</comment><comment><USER24> I wonder why he obfuscated the "validOptusUsername" key in the screenshots

</comment><comment><USER25> Serious question: Did anyone ever chose an editor because of some "Why X is better than Y" article?

<comment><USER26> "Why X is better than Y" would be too clean-cut for my case, but it's not far off.

I wanted to start learning lisp and was told emacs was the best choice for it. I read that Richard Stallman made it and Linus Torvalds uses it. That was enough to get me started and it's now my editor of choice.

But that's not to say that I don't know how to edit, save, search and (force) quit vi. :)

</comment></comment><comment> vezzy-fnord tl;dr Emacs is extensible.

</comment><comment><USER27> Kevin Flynn uses vi - 'nuff said:

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

(this is in jest but no doubt I'll be downvoted...)

<comment><USER28> Where is vi? I only see two shell sessions and top.

<comment><USER29> You won't see it in top, it doesn't use enough resources. :p

<comment><USER27> Well played :)

</comment></comment></comment></comment><comment><USER30> The wrong people have been drunkenly driving Emacs into the ditch for the past decade or so, and they're really screwed it up in so many ways, usually trying to be way too clever and solve problems that really aren't worth solving.

They made "line-move-visual" the default, which in the service of making Emacs behave more like Microsoft Word, it makes ^N and ^P across wrapped lines stay on the same line and move to the part of the same line that is wrapped above or below the cursor, totally breaking type-ahead predictability and keyboard macros. That totally pissed of the late and long time Emacs user Marc Crispin, and he explains why it's such a terrible idea that breaks keyboard macros: [http://compgroups.net/comp.emacs/line-move- visual/274792](http://compgroups.net/comp.emacs/line-move-visual/274792)

It totally breaks keyboard macros, one of the most important things about Emacs. It definitely should not have been made the default, since keyboard macros are a way of life for real emacs hackers. I totally agree with Marc's take on the problem, and I am terribly disappointed that RMS let somebody get away with changing it that way, and making that horrible mode the default.

They just can't stop trying to make it more like Microsoft Word, while failing to actually achieve that goal, and only succeeding in inflicting half-assed solutions with harmful unpredictable side-effects on the users.

Another example is how the region highlighting and the weird pending delete behavior terrorizes me that sometimes but not all the time according to rules I just can't figure out or tell by looking at the screen, when I type something that I intend to insert, a huge chunk of my buffer might just disappear, but sometimes it doesn't. So now Emacs has become unpredictable and malicious. I have to do a dance of "insert character, undo" to know that I have canceled the pending delete mode. You can't tell if you are in pending delete mode just by looking at the screen and seeing the obnoxious highlighting, because sometimes it highlights the region and isn't in pending delete mode, and sometimes it highlights the region and is in pending delete mode. I just wish it would stop highlighting the region, because any time I set a mark and move around, it highlights half of the screen at no use to me, and that just gives me a headache, and I have to insert a character an undo it to cancel the highlighting, and until I cancel the highlighting I am living in terror that my next keystroke will delete a huge unseen portion of the buffer.

And the thing that REALLY pisses me off is the lame-assed attempt to make ^A and ^E ignore the prompt in shell mode. There is an extremely simple reliable solution to the problem of separating the prompt from your input in shell mode so you can always get to the beginning of the line with ^A, and that is to have a newline at the end of your prompt, so every line you type in is on the whole line and does not have a prompt prefix, therefore no half-assed magic is necessary.

But the half-asses magic is terribly implemented and has bizarre side-effects that screw me all the time: I get these fucking invisible force fields inserted into the line between my characters whenever I yank some text onto the line that has a prompt or a command line on it, and I can't move past them with ^A or ^E (but sometimes I can -- they're not predictable which is even worse)! And I can get any number of these fucking invisible force fields on my line, so in order to get to the beginning of the line I have to go ^A, look at the screen to see if I made it, type ^B ^A if I didn't, again and again, until I drill past all the invisible force fields that are trying to make my day happier.

And then I have to mark the beginning of the line I want to edit and repeat, go to the end of line by drilling back some number of opposite facing invisible force fields (which may be in different places than the ones going the other direction), and then kill the region, go to the end of the buffer, then yank the entire line to get a copy of it without any fucking invisible force fields in it.

But if there is an invisible force field in the line, or I just want to edit a few characters of the line and that adds some invisible force fields that were not even there before, and then I hit return in the vain hope of re-entering the entire line but not the prompt, it just enters the tail of the line after the last invisible force field, making an error in the shell, or sometimes even executing a totally different command than I intended and totally fucking me over.

I would really like somebody to explain what the fuck the idea behind the invisible force fields are, and give me the address of whoever thought is was such a brilliant idea, so I can send a robot drone to firebomb their house, or worse yet send RMS to live with them for a few months. Why did they do something so terrible, that totally fucks up such common important operations, to solve a trivial problem that has a much better solution?

Emacs used to be totally predictable. I learned it at 300 baud over the ARPANET on ITS, and I could type ahead hundreds of characters to do all kinds of stuff, and then go take a piss or get a drink or take a bong hit, and come back later, and it would be in exactly the state I meant for it to end up in. Now, I can't do that even on a local display. And for some fucking reason, it waits for up to five seconds sometime before updating the display when I'm running it in a terminal (especially when I start an incremental search or query replace). What the fuck is that about??! Not only is it totally unpredictable and forces me to stop what I'm doing and wait for it to catch up so I can figure out what state it guessed its way into before going on, but it won't paint the screen for five seconds when running on a modern top-of-the- line computer!

Emacs has become a shrine to outrageous violations of the principle of least astonishment. I just can't figure out how they could have come up with so many ways to corrupt it, when it used to work so well. It's totally unpredictable now, and I can't type ahead any more, so I have to type a few characters, look at the screen to see how it misinterpreted my intentions, and then try to work around the misunderstanding.

</comment><comment><USER31> vim.

<comment><USER32> Could you elaborate? Have you seen someone intagrate a javascript interpreter the same way with vim, or are you saying that modal editing is enough of a productivity boost to make up for it's lack?

<comment><USER22> Don't feed the trolls

</comment></comment></comment><comment><USER33> Let's see if this triggers the flame war filter.

</comment><comment><USER34> and... here... we... go.</comment>


Brexit app for EU nationals won't work on iPhones - <AUTHOR> https://www.theguardian.com/politics/2018/apr/24/beyond-belief-brexit-app-for-eu-nationals-wont-work-on-iphones <comment><AUTHOR> > However, it has emerged that because Apple will not enable its technology to > read the chip on modern passports, the registration can only be completed on > an Android phone.

Among the many questions this begs, Android can read the chip in modern passports?

<comment><USER2> Apparently. See [https://www.readid.com/demo](https://www.readid.com/demo), [https://www.flyertalk.com/forum/travel- technology/1342167-vi...](https://www.flyertalk.com/forum/travel- technology/1342167-viewing-info-epassport-chip-using-android-phone-nfc.html).

Communication uses NFC.</comment></comment>


What is the future of Ruby on Rails? - <AUTHOR> http://www.flapon.com/threads/view/113

<comment><USER2> This attempt to promote flapon.com is probably a little too thinly veiled.</comment>


How to not suck in VC pitches - <AUTHOR> http://www.thomvest.com/blog.html

<comment><USER2> As an aside, HN best practice is to post the title of the article in the most accurate way. "How to not suck" may imply a more light-hearted article, while "How to Craft an Effective VC Pitch" is clearly informative.

Regarding the article, this advice seems to align with most of the stuff posted relating to pitching.

Number 4, though, may give people the wrong message. It seems to say, "Don't pursue a market with strong competition." If that were the case, Google wouldn't exist. Most VC's and Angels, from what I've read, aren't so fazed by competition, but rather see it as a sign of a lucrative market. The author seems to think that "value" (yes, it was in quotes) is a strange competitive advantage, but I'd argue that if value wasn't your key competitive advantage, you're doing something wrong.

Other than that, it's a pretty informative read. No need to reinvent the wheel.

<comment><AUTHOR> Hey Zachallaun,

Appreciate the feedback, new to hacker news and I titled it that way because of the sentence "What amazes me is how poorly crafted many of these presentations are." Apologize if it wasn't best practice.

Agree that the number 4 bullet seemed vague. The way I read "value" was "cheapness" rather than creating value-add, but I might be reading it wrong.

</comment></comment><comment><USER3> Appreciated the information. Hadn't come across these guys before, has anyone pitched them?</comment>


Ask HN: What tools do you use to build HTML emails? - <AUTHOR> I'm working on a side project that sends out daily/weekly email reports. I'm working in C# and using Mailgun[0] to send email, but I'm unsure of how to approach designing HTML email templates.
My concerns:
- Inconsistency across email clients.
- Is there a tool to inline CSS styles (since stylesheets are not allowed in gmail)?
- Displaying bar graphs. I thinkg my options are either doing this with tables/divs or to generate an image of the graph to avoid inconsistent formatting.
- The email reports will also be web pages. How do I avoid UI duplication?
I'd appreciate any suggestions and/or shared experience!
[0] https://mailgun.com <comment><USER2> You need to write html like it's 1999. Use tables for layouts, avoid divs. Be very cautious with CSS. See: [https://www.campaignmonitor.com/css/](https://www.campaignmonitor.com/css/)

For testing, either use Campaign Monitor for $5/test (across all the clients) -- [https://www.campaignmonitor.com/](https://www.campaignmonitor.com/)

They repackage Litmus testing which is ~ $80/mo -- [https://litmus.com/](https://litmus.com/)

To inline CSS there are lots of options, but this is a nice, free utility: [http://putsmail.com/](http://putsmail.com/)

Overall designing HTML emails sucks. It will take 10x more time than you think.

</comment><comment><USER3> I had the questionable pleasure of developing our first HTML emails at work this week, and found the following links helpful. I ended up working from the reference provided in the first (A list apart article) link post [https://github.com/alistapart/salted](https://github.com/alistapart/salted) .

[http://alistapart.com/article/can-email-be- responsive](http://alistapart.com/article/can-email-be-responsive)

Which CSS is supported: [https://www.campaignmonitor.com/css/](https://www.campaignmonitor.com/css/)

How to serve images: [https://sendgrid.com/blog/embedding-images-emails- facts/](https://sendgrid.com/blog/embedding-images-emails-facts/)

General guides and some templates:

[https://www.campaignmonitor.com/guides/coding/guidelines/](https://www.campaignmonitor.com/guides/coding/guidelines/)

[http://templates.mailchimp.com/](http://templates.mailchimp.com/)

</comment><comment><USER4> Mailgun actually provided some free templates on their blog once. See this

[http://blog.mailgun.com/transactional-html-email- templates/](http://blog.mailgun.com/transactional-html-email-templates/)

<comment><AUTHOR> Whoa, a ton of resources in that post. Thanks!

</comment></comment><comment><USER5> In addition to the great recommendations, the grunt module [https://www.npmjs.com/package/juice2](https://www.npmjs.com/package/juice2) Helps a LOT when developing. Basically inlines all your external CSS into your selectors on build so you're not coding in an insanely messy HTML file.

Edit: Linked the NPM module, Here's the grunt one that uses juice. [https://www.npmjs.com/package/grunt-email- builder](https://www.npmjs.com/package/grunt-email-builder)

</comment><comment><USER6> To inline CSS you can use the free tool from MailChimp:

[http://templates.mailchimp.com/resources/inline- css/](http://templates.mailchimp.com/resources/inline-css/)

As for templates MailChimp also offers hundreds of them through their GitHub:

[https://github.com/mailchimp/Email- Blueprints](https://github.com/mailchimp/Email-Blueprints)

<comment><AUTHOR> Nice, I'll give the mailchimp tool a shot. I really just need to setup a handful of templates, so it being a manual tool isn't a problem at all.

I found an old broken link to free mailchimp templates, didn't think to check their Github! Appreciate it.

<comment><USER6> No problem. The inline tool has saved me countless hours though and is simple to use. Their templates are great for building blocks or also ready to go as they are.

</comment></comment></comment><comment><USER7> I personally don't use HTML in emails. This is mostly fueled by a combination of my preference to receive text-only emails and my desire to follow the "Golden Rule".

That said, I can see why some folks _would_ want HTML in emails, so it's sometimes worth making exceptions. To address your specific concerns:

> Inconsistency across email clients.

That's going to be a problem no matter what. My recommendation is to keep your HTML simple; the less complicated, the less of a chance for some MUA or other to screw it up.

> Is there a tool to inline CSS styles (since stylesheets are not allowed in > gmail)?

Is there something in particular you're trying to achieve?

My approach would be to generate inline-styled HTML with templating (I use Ruby and Elixir mainly at the moment, so my approach would involve ERB or EEx (respectively); I don't know what equivalent(s) C# has). Like the above recommendation, though, keep your styling light; again, the fewer complexities, the fewer chances for the MUA to screw things up.

> Displaying bar graphs. I thinkg my options are either doing this with > tables/divs or to generate an image of the graph to avoid inconsistent > formatting.

Inline images are almost certainly your best bet here for maximum compatibility.

> The email reports will also be web pages. How do I avoid UI duplication?

By turning the email "reports" into emails with links to the actual (web page) report.

Part of your problem is that you're trying to treat email and web pages as equivalent media, when this isn't the case. Email is very much optimized for simple text-based communication; you should play to that strength instead of trying to mangle it into a role it's really not meant for.

<comment><AUTHOR> Good info, thanks.

> By turning the email "reports" into emails with links to the actual (web > page) report.

The type of users I'm targeting here would rather have the info delivered to the inbox then follow a link. If you're familiar with Mint, think something like their end-of-week financial summary.

</comment></comment><comment><USER8> Have you checked out Zurb's responsive email template? It might be something that you're looking for. -- [http://zurb.com/playground/responsive-email- templates](http://zurb.com/playground/responsive-email-templates)

</comment><comment><USER9> The most mature and powerful Python tool for inlining CSS is [https://github.com/peterbe/premailer](https://github.com/peterbe/premailer)

I started it but it's been actively maintained by over 30 coders over several active years.

</comment><comment><USER10> C3.js[0] has a built in image exporter[1] you can use from the command line if you want to generate chart images programatically. I use something similar that I wrote just before this became part of C3 to generate the chart and upload it to S3. Then my email links to that image. Works very nicely!

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

1: [https://github.com/masayuki0812/c3/blob/14e92c54f9286bf28ff4...](https://github.com/masayuki0812/c3/blob/14e92c54f9286bf28ff442b3212c84c3e06a8681/extensions/exporter/phantom- exporter.js)

</comment><comment><USER11> We built our own library to manage transactional email, you define an HTML and Text template, a meta file and then the library inject your data and automatically inline css, it's for NodeJS but you might take some idea from it [https://github.com/FGRibreau/node- transacemail](https://github.com/FGRibreau/node-transacemail)

</comment><comment><USER12> [http://zurb.com/playground/responsive-email- templates](http://zurb.com/playground/responsive-email-templates)

</comment><comment><USER13> React... no really.

Write yourself some helper functions to generate placeholders for your backend language that's actually going to send the email, eg. $('varname') would translate to <?= $varname ?> $.if(..condition..) etc. Load them into global space to save yourself the trouble since you're going to write a lot of components.

You'll also a need a means of outputting raw html (note how placeholders have a lot of unsafe characters; react hates those) Just create a function that given a string as code, outputs <raw dangerouslySetInnerHTML={{_html: code }}/> After you compile the code with React.renderToStaticMarkup strip out any <raw> and </raw> tags from the resulting string and you're in business.

Since you're compiling to your native backend templating system you don't need to worry about keeping a node server going or anything; you just build once and it's done.

Using React (and javascript in general) has some key advantages,

1\. you are using components, so you only need to write your garbage table code once and you can use the components to design your emails

2\. you can run the same components though multiple configurations; one configuration might generate a template for html emails, another might generate the non-html emails, you just make the components smart in what they output... sadly with the advent of smart watches you're going to have to be sending both, enjoy.

3\. you can leverage npm modules; for example the module inline-css will inline css from a css file; so you don't have to do it yourself by hand or rely on copy/pasting back and forth to some site

4\. you can run your css though postcss and other compilers for all sorts of backwards compible goodness; including let you know how you've accidentally written such sophisticated code as "background" instead of "background-color" <.<

5\. you can pipeline any other junk you have too; push your images to a cdn etc;

6\. others, who are not so wise in the table-fu of '99 can dable in creating new emails easily; they just need to use only use existing components and everything (should) be fine most of the time

7\. you can share your table-filth with others easily, yey?!

ps.

The biggest headache with emails is not the code involved so much as the time it takes to make the damn things. If you do it with out assistance by hand, what would be a 30min job if built as part of a page, is equivalent in "email dev time" to 1 day easily (don't forget your email client is not the only email client! you have to cater to such wonderful things as Outlook which is under the hood Microsoft Office! of all things). Not the greatest ratio time wise. So no matter how crazy or convoluted the method, I very highly recommend, you do anything in your power to do it any other way then code it 100% by hand.

</comment><comment><USER14> No specific tools, but addressing a few points you and others raise:

 _Provide a text-only option._ It's backwards-compatible, and while the old- timer argument carries weight (console mail client support), many mobile devices offer what's little better than a console-equivalent email experience.

 _If you generate links, make them short._ I'd recommend fewer than 40 characters, fewer than 20 if you can. They travel far better.

Email _isn 't_ the Web. Clients differ, and ultimately HTML is _not_ universally supported. You're relying on an opt-in preference, which is to say, you're relying on _a self-selected community which will progressively reinforce your initial biases toward content presentation regardless of its validity._ Beware that.

My favourite illustration of this is the "Six o'clock on Tuesdays Club meeting time prefernce question". If you ask a group of people in a club meeting at 6:00 pm on Tuesdays what time they prefer to meet -- it will strongly tend to be "6:00 pm on Tuesday", as you've already self-selected for those who prefer and can accomodate that option.

Email clients are inconsistent. _Web_ clients are inconsistent. Fucking _text editors_ are inconsistent (character support, font support, kerning, foreground / background colors, ...). Basically: fucking deal with it.

I'd avoid use of inline CSS entirely -- the less explicit layout you perform the better and more future-proof you are. Limit formatting to bold and italics _only_, and realize that _that_ may not get conveyed reliably. Numeric and bulleted lists should be explicit, not HTML entities. Basically: pre-render absolutely everything if possible. Don't use tables for layout, I'd be leery about them even for tabular data presentation.

 _Especially:_ avoid use of contrasting text colors to convey meaning, they're frequently stripped from generated output, e.g., by Mobile email clients.

Graphs: include images. For now, PNG is preferred (best rendering of line graphics), though modestly compressed JPG will occupy less space. Keep an eye on SVG support though. It's an _excellent_ format for rendering data visualization (though you'll absolutely want to down-sample large datasets), and there are libraries which support graphics creation. Client support is still developing, but should be widespread within a few years. _All current major desktop clients provide decent support._ Legacy browsers and other HTML- enabled tools, not so much.

Email / Web UI duplication: as above for email, that's a fact of life. Fucking deal with it.

Though I generally dislike PDFs, if you're preparing reports to be delivered to users, dropping a PDF or link to same is probably your best bet. Many browsers will now present these natively, many mobile devices (though not all) have some level of PDF support.

 _If you do this, I strongly recommend:_

1\. Use generator tools which create the smallest possible PDF possible. Many bloat output to a staggering degree. Bandwidth, mailbox size limitations, and other factors all favor _small_ attachments, still.

2\. Landscape layouts. That's generally preferable for desktop viewing. While mobile devices are frequently presented portrait, it's far easier to perform a 90° transform on a Smartphone or tablet than a laptop or desktop monitor.

3\. Put the executive summary and highlights in the email itself, detail in the reports.

There are a few alternative forms of delivery you might consider, among them RSS, and ePub or other eBook formats (far more flexible presentation, especialy on mobile). My read is that these aren't universally acceptable, but choosing a tool or tools which supports these and offering the option(s) to users might help clarify your future direction.

</comment><comment><USER15> Email should not contain HTML. Not all mailtools are web browsers.

<comment><USER7> More specifically, emails and web pages serve different purposes, and trying to coopt the former to serve the purpose of the latter will lead to nothing but pain.</comment></comment>


The End of App Stores Is Rapidly Approaching - <AUTHOR> https://onezero.medium.com/the-end-of-app-stores-is-rapidly-approaching-b972da395097 <comment><USER2> > Progressive web apps may soon free you from Google Play and the iOS App > Store

We went to Google Play and the iOS App Store because we don't like web apps, progressive or not.

<comment><USER3> You had a choice?

<comment><USER2> Yes. In fact at first we had only the one choice of web apps -- e.g. we were asked to use "web apps" on iOS before the SDK came out, and people demanded a proper native SDK for native apps.

Or look how e.g. Facebook initially made their app a web app inside a web view, and then switched to native (and React Native nowadays).

Plus, nobody stopped developers and users from creating and opting for web apps (SPA or not) instead of native ones all those years.

If you want the mobile browser apps to also have full access to touch sensors, and orientation APIs, and AR, and payment processing with stored cards across apps, and background tasks, and local file access, and notifications, and whatever -- then you don't simply want mobile web apps, you want mobile OS makers to port their native APIs (many of which you already have got).

It's kind of disingenuous to say "web apps are all people need" implying "as soon as all the tons of native APIS are ported and accessible to the web apps".

</comment></comment></comment><comment><USER4> "Progressive web apps may soon free you from Google Play and the iOS App Store"

How soon?

"Web technology already ate desktop apps alive"

I miss real desktop apps.

<comment><USER5> \- Documents are self contained, standardized and shareable (i.e. load and save) instead of locked in to a single cloud app.

\- See more than 20-30 items at a time, just scroll through. Reorder every table and list at will.

\- Customize toolbars, inspector windows, layouts and sizes.

\- Drag and drop files, snippets, images from one app to another.

...

Browser APIs are third rate knock offs of native ones, sandboxed in so you can't do anything interesting. Browser UIs often lack all the basic affordances that used to be the norm. Instead developers now design the UI to support their business model first, putting permanent upsell ads and other visual cancer in there.

Nobody really believes progressive web apps can replace the desktop or the app store. Web developers just want you to think so, because that's how they get paid. To make it actually possible they'd have to undo all the lockdowns and background restrictions that were necessarily to make it safe for boomers and normies.

</comment></comment><comment><USER6> The types of apps that are appropriate for PWAs are not the kind of apps that make money _on_ the App Store. Most of the revenue generated on the App Store (as opposed to services that have an app front end) are games.

</comment><comment><USER7> This article appears regularly, like oak pollen.</comment>


Ask HN: By how much am I underpaid? - <AUTHOR> Short of sharing my CV and current salary with everyone and getting opinions, how can I figure out of I'm being overpaid, or more likely, underpaid in my current position? I suppose it is a question of underpaid but by how much.
I put out the first number in recent negotiations against my better judgement. I was recently laid off and did not stick to what I knew I should have done by not putting out the first number. The firm asked me for my "take out" number and I quoted what I thought was pretty high. They wound up exceeding my figure by 7k which I thought was a nice gesture but not a good sign as to if my anchor was high enough. Now I'm kicking myself by not putting out a much higher initial figure. However, I do know by talking to a 3rd party recruiter that I got the offer over a candidate they were working with, so maybe I'd be upset the other way if I put out too high of a figure and didn't get the job. I know that "being affordable" is a thing and that if a candidate is too expensive a company might go with their second but less expensive option.
I'll have a chance to discuss salary in 6 months but unless I really crush it I doubt there is room for movement so soon after starting.
In any case, if anyone has some good insight into how to figure out what I could be making I'd appreciate it. As an FYI I am working in DevOps / SRE for a financial company. <comment><USER2> have you looked up your company and position on sites like Glassdoor, indeed, or salary.com? That would be a good place to start. Glassdoor will give you a range that can tell you if you are in the right ballpark. The fact that they gave you $7k over your ask tells me you lowballed yourself, and they corrected it up to the bottom to middle of their range.

</comment><comment><USER3> I agree with what the Glassdoor recommendation. Besides that, maybe for your position's "compensation ratio". If the company is big enough, they'll have a ratio that compares your salary to the average (or median) for that position.

Edit: grammar</comment>


Warning to devs making VPN apps for iOS that block content - <AUTHOR> https://twitter.com/thomasareed/status/1021037921795788801 <comment><AUTHOR> Some background (as linked in the tweet):

[https://adguard.com/en/blog/adguard-pro- discontinued/](https://adguard.com/en/blog/adguard-pro-discontinued/)</comment>


Web Programming with Continuations (2002) [pdf] - <AUTHOR> https://thelackthereof.org/docs/library/cs/continuations.pdf <comment><USER2> One of the Racket tutorials actually goes into an example of using continuations to save application state for a web app ([https://docs.racket- lang.org/more/index.html#%28part._.Conti...](https://docs.racket- lang.org/more/index.html#%28part._.Continuations%29)).

One issue with this approach is that it doesn't really scale easily beyond a single server. You need something like the JVM which allows for closures to be sent between machines sharing the same code base. Plus, even in the JVM case, you must have the class files required by the closure available on the JVM which tries to run it.

I really think it is a better idea to just use a database and pass state explicitly rather than trying to do something fancy with continuations. However, continuations can be extremely useful for making the server asynchronous without making it look asynchronous.

While Promises are nice, I think they are severely flawed in that they must "infect" any code which tries to use them. For instance, I was dealing with some Typescript compiler interfaces a few years back which expected to be able to read files synchronously, something which does not hold true if you try to emulate a filesystem in the browser using web requests. With true continuations, it would be possible to simply pause this computation transparently and then resume it once the request was complete.

<comment><USER3> I don't think you need to pass closures between machines but you do need to use "sticky sessions" so that your load balancers deliver all requests for a particular session back to the same app instance.

I haven't seen much discussion of sticky sessions in quite a while as 12-factor apps built around stateless processes have no need for them and that has been the dominant paradigm for quite a while.

<comment><USER4> An application requiring sticky session sounds like an architecture smell to me. It works, and you can get a long way with it, but a system that relies on requests always being served by the same server sounds a bad idea to me. What if that server breaks/need a security update/has to be rebooted? For security updates & restarts you can always use session draining, but then your operativity becomes dependent on an upstream service (a LB?), which in a large organization is probably handled by another team, and you end up needing to coordinate and complicate something that could have been simple.

As long as it's a conscious choice, it's ok not baking in tolerance for these failure modes, but personally I would only accept it for POCs/prototypes.

<comment><USER5> These are serious concerns. An attempt to make web programming with continuations work without requiring sticky sessions is "Stateless Servlets":

[https://docs.racket-lang.org/web- server/stateless.html?q=sta...](https://docs.racket-lang.org/web- server/stateless.html?q=stateless#%28part._considerations%29)

A stateless servlets makes it possible to serialize continuations and store them on the client/database/disk.

There is no such thing as a free lunch, so that approach has pros and cons too.

</comment></comment></comment></comment><comment><USER6> A framework that works with continuations is Seaside in smalltalk, it is a delight to work with it. [https://seaside.st](https://seaside.st)

<comment><USER7> That HTTPS link is broken for me, PR_CONNECT_RESET_ERROR in Firefox. [http://seaside.st](http://seaside.st) works.

</comment></comment><comment><USER8> As mentioned in the document, continuation passing style can at times be a little difficult to read. That being said I found a talk that using continuation passing style to provide typed routing. [1]

This won't be the most efficient way to perform routing in an application, but i found the implementation really simple to understand and the error messages for the end-user seem really clear as well. It also helps if the language used allows for embedding DSLs that are easy to read for the end-user. (could be macros in lisp/elixir, well named functions with a little sprinkling of infix operators in OCaml, Haskell etc)

A little show HN in the comments: I've been exploring this approach and others [2] for comparison, and although i've moved away from this style as I progress in learning more OCaml, it was a fun little exercise to explore a CPS based typed routing approach. [3]

[1] [https://dbp.io/talks/2016/fn-continuations-haskell- meetup.pd...](https://dbp.io/talks/2016/fn-continuations-haskell-meetup.pdf)

[2] [https://github.com/anuragsoni/routes](https://github.com/anuragsoni/routes)

[3] [https://github.com/anuragsoni/routes/blob/0.1.0/src/routes.m...](https://github.com/anuragsoni/routes/blob/0.1.0/src/routes.ml)

<comment><USER9> > As mentioned in the document, continuation passing style can at times be a > little difficult to read.

Very true. Fortunately, the CPS transform is automatic, so one could write a compiler which compiles non-CPS to CPS code.

This is pretty easy in Scheme or Lisp (less so the latter, because it's a much more complex & powerful language); it's not nearly easy in other languages, but still doable.

</comment></comment><comment><USER10> Around the same period, in the telephony world, IVR (interactive voice response) systems entered the web universe with the VoiceXML W3C recommendation. It allowed IVR developers to write server-side web applications as ordinary web applications, the HTML being substituted by VoiceXML.

Given the very linear nature of an IVR dialog, it became clear that a continuation-based approach would greatly simplify development, as mentioned in the article.

The Nu Echo "Rivr" Java framework was created around this idea. However, since there is no native continuation in Java (yet!), it was approximated through thread-based coroutines.

The payoff for the developers is huge. It allows the developer to directly "map" a dialog specification to Java code. Abstractions can easily be introduced without having to create an explicit model for the state (the state is just the set of the variables and objects referred by the thread). This approach is much more flexible than state-machine based paradigms.

Even though all architectural issues mentioned here are valid (namely the lack of session-based fault-tolerance), it turned out to be somewhat manageable in real-life situations because in this type of system, there is a limited number of calls handled simultaneously and their average duration is typically a few minutes.

Rivr is still used today and we are currently defining mechanisms with HAProxy to implement no-downtime scenarios in Kubernetes.

</comment><comment><USER11> Also from 2002 I believe, an example of a project that was doing this with JavaScript using Rhino, the at-the-time state of the art Java implementation of the language that supported capturing a continuation.

[https://cocoon.apache.org/2.1/userdocs/flow/continuations.ht...](https://cocoon.apache.org/2.1/userdocs/flow/continuations.html)

</comment><comment><USER12> It should be noted that the owner/author of this website ([https://thelackthereof.org/](https://thelackthereof.org/) and not the posted PDF) wrote a Perl _continuations_ based web library/framework called Continuity.

\- [https://thelackthereof.org/Continuity](https://thelackthereof.org/Continuity)

\- [https://metacpan.org/pod/Continuity](https://metacpan.org/pod/Continuity)

Shame it is no longer under development. Found it very handy & enjoyable using it for projects in the past (by itself and sometimes with Squatting framework built on top of it). Hats off to Brock ([https://news.ycombinator.com/threads?id=awwaiid](https://news.ycombinator.com/threads?id=awwaiid)) for the great work creating Continuity.

</comment><comment><USER13> Many of the comments here seem worried that scalability issues are going to crop up everywhere as people start using this architecture in large, popular applications. That isn't going to happen. Stop worrying about that and enjoy it for the cool hack that it is.

</comment><comment><USER14> Paul Grahams mentions Closures and continuation passing style in Viaweb here: [http://ep.yimg.com/ty/cdn/paulgraham/bbnexcerpts.txt](http://ep.yimg.com/ty/cdn/paulgraham/bbnexcerpts.txt)

</comment><comment><USER15> I am new to this, but isn't the idea of calling next() which is prevalent in frameworks like express.js, essentially similar to continuations? I may be wrong, but I would genuinely like to know.

<comment><USER16> Yes. It's easy when you can run it all client-side. The tricky part described in the article is making it work across no-JS browser and webserver.

</comment></comment><comment><USER17> Isn't this how HN is implemented?

<comment><USER18> I know that it was in the past, but I believe it changed a few years ago.

See: [https://news.ycombinator.com/item?id=7651568](https://news.ycombinator.com/item?id=7651568)

</comment></comment><comment><USER19> Please don't design web applications like this. It's counter to the core ideas of HTTP and REST. It's just about as bad a design as is ASP shoveling all its state into POST requests.

Not to mention that you have to choose between either dealing with garbage- collecting continuations stored on the server (choosing between either breaking client bookmarks, or bloating the server with never-to-be-used junk), or worrying about the security implications of storing continuations on the client (remembering that a continuation is _arbitrary code_ which will executed _on your server_ ).

And since you don't have a well-defined HTTP API, but rather one directly coupled to the structure of your source code, all those links will break every time you change your code.

This design was notably promulgated by the Racket (then Dr. Scheme) crowd, who were (and I assume still are) notoriously allergic to state and so used mechanisms like this to try to hide it.

Please don't try to hide state. Especially in truly stateful systems like HTTP and user interfaces. Embrace state. Minimize it, isolate it, document it, control it, model it, but embrace it.

<comment><USER20> > or worrying about the security implications of storing continuations on the > client (remembering that a continuation is arbitrary code which will > executed on your server).

You could apply encryption (with proper randomization to deal with possible replay attacks, if necessary e.g. if you keep state on the server).

> Embrace state. Minimize it, isolate it, document it, control it, model it, > but embrace it.

But continuations/closures are a way to control state. It's just that the state is not accessible from the outside of the system (the user).

> It's counter to the core ideas of HTTP and REST.

No, it isn't really. If you are sending continuations along with a request, then the server can still behave in a purely functional way.

<comment><USER19> > You could apply encryption

Or you could identify which bits of state actually matter and define a stable REST API, instead of identifying application state as "any state the interpreter could possibly be in" in an attempt to pretend that state doesn't exist.

> But continuations/closures are a way to control state.

No, they're a way to hide state. But state is integral to the experience of a web application. Hiding it is just a leaky abstraction (for the reasons pointed out above).

> the server can still behave in a purely functional way

You're going to have to explain how that makes this technique RESTful.

Notably, if you store the continuation on the server, you're violating REST's statelessness requirement: [https://en.wikipedia.org/wiki/Representational_state_transfe...](https://en.wikipedia.org/wiki/Representational_state_transfer#Statelessness)

Rolling up all the system's state into a single URI whose underlying state cannot be modified violates the requirements that each URI represent a distinct resource which can be manipulated (i.e. _changed_ ) using standard HTTP verbs: [https://en.wikipedia.org/wiki/Representational_state_transfe...](https://en.wikipedia.org/wiki/Representational_state_transfer#Relationship_between_URI_and_HTTP_methods)

Once you have persistent data (say, flight details stored in a database), you lose cacheability, since each interaction with that data from a different source is via a different URI: [https://en.wikipedia.org/wiki/Representational_state_transfe...](https://en.wikipedia.org/wiki/Representational_state_transfer#Cacheability)

At least this technique _is_ pure HATEOAS, so there's that: [https://en.wikipedia.org/wiki/HATEOAS](https://en.wikipedia.org/wiki/HATEOAS)

I don't disagree that there are places _within_ a web application where this technique makes sense. The one example of this technique which is always presented – a short-lived dialogue-based interaction with the user – is one of them. That _particular_ state is sufficiently short-lived, and doesn't need to be cacheable or shareable with others, that pretending it doesn't exist is probably helpful in the long run.

But I posit that in general, it's _always_ a better architectural decision to explicitly identify your state (i.e., everything which you're keeping in a database or on disk) and minimize it.

<comment><USER21> > But state is integral to the experience of a web application

HTTP is a stateless protocol and the desire to maintain a state-full session on the server is why web applications are fundamentally broken, at least within the context of HTTP.

<comment><USER19> Right, which is why session state should be kept on the client, and why the client should manipulate application state (i.e., everything that lives in a database) using a well-defined RESTful interface.

The approach in the OP seems to conflate these two types of state. The end result is application state without a well-defined client interface, and session state which is passed backed and forth to the server.

<comment><USER20> > The approach in the OP seems to conflate these two types of state.

Nope, I'm just saying that continuations and REST are orthogonal.</comment></comment></comment></comment></comment></comment>


Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch - <AUTHOR> https://en.wikipedia.org/wiki/Llanfairpwllgwyngyllgogerychwyrndrobwllllantysiliogogogoch <comment><USER2> I asked my daughter if she would slip this into the lengthy, Hebrew Haftorah reading during her bat mitzvah. Not everyone would have detected it, (certainly not me).</comment>


The Mozilla Public License version 2.0 is out - and GPL-compatible - <AUTHOR> http://www.fsf.org/blogs/licensing/mpl-2.0-release <comment><USER2> It is also BSD and APL compatable according to <http://www.mozilla.org/MPL/2.0/FAQ.html#mpl-bsd-and-apache> which I believe will make it much easier for my team when contributing and interacting with Apache projects such as Hadoop.

</comment><comment><USER3> Anybody know when Firefox will use this license?

<comment><USER4> The logistics of the update are being discussed in [https://groups.google.com/forum/#!topic/mozilla.dev.planning...](https://groups.google.com/forum/#!topic/mozilla.dev.planning/h_DvC6WnFx0), with the current proposal available at <https://wiki.mozilla.org/MPL_Upgrade>.

One idea is to update the codebase at the beginning of the cycle that will end up being released as Firefox 13.

</comment></comment><comment><USER5> Now I can no longer recommend the MPL to people that don't want to license as GPL and don't want their code to suddenly become GPL'ed because someone used it in their project.

<comment><AUTHOR> <http://www.mozilla.org/MPL/2.0/FAQ.html#virality>

_The license requires that Modifications (as defined in Section 1.10 of the license) must be licensed under the MPL and made available to anyone to whom you distribute the Source Code. However, new files containing no MPL-licensed code are not Modifications, and therefore do not need to be distributed under the terms of the MPL, even if you create a Larger Work (as defined in Section 1.7) by using, compiling, or distributing the non-MPL files together with MPL- licensed files._</comment></comment>


Functional Programming? Don't Even Bother, It's a Silly Toy - <AUTHOR> https://medium.com/codeiq/fp-toy-7f52ea0a947e <comment><USER2> I thought "Hmm probably an ironic title.", three paragraphs in... "this is the pinnacle of shit posts".

</comment><comment><USER3> Is this a joke?

<comment><USER4> If the author's intentions were to confuse the reader, they sure did a good job. However, if they intented for it to be an obvious joke, I think they went a little too deep, thus failing to get the point across. Or maybe I'm just dumb... ¯\\_(ツ)_/¯</comment></comment>


Is the World Ready for Floating Nuclear Power Stations? - <AUTHOR> https://spectrum.ieee.org/energywise/energy/nuclear/is-the-world-ready-for-floating-nuclear-power-stations <comment><USER2> Don't we already have plenty of those as Aircraft carriers?</comment>


Reputation Capital and the Ruby on Rails Community - <AUTHOR> http://www.markmcgranaghan.com/2007/02/26/reputational-capital-and-the-ruby-on-rails-community/ <comment><USER2> I think some of this can be attributed towards Rails developers - like me :) - liking the framework so much that they want to share the joy with everyone else.</comment>


North Korea erases official history: report - <AUTHOR> http://www.bendigoadvertiser.com.au/story/1977467/north-korea-erases-official-history-report/?cs=12

<comment><AUTHOR> KCNA in North Korea: [http://www.kcna.kp/](http://www.kcna.kp/)

Archive on Japanese site still seems to be up: [http://www.kcna.co.jp/index-e.htm](http://www.kcna.co.jp/index-e.htm)

Original report at [http://www.nknews.org/2013/12/in-1984-moment-n-korea- deletes...](http://www.nknews.org/2013/12/in-1984-moment-n-korea-deletes-near- entirity-of-news-archives/), but it appears to have buckled under the load.</comment>


Show HN: Voat programming, development and computing subverses - <AUTHOR> http://zujo.com/index.php?title=Programming,_development_and_computing_subverses

<comment><AUTHOR> It's a much bigger idea than this one list, however people don't seem to 'get it' unless I show them an example list on a topic they love. I want to do the same for all of Voat. And then all of reddit. And then...well, I'd better not say lest you think I'm crazy :)</comment>


Snowflake – Data warehouse for structured and semi-structured data - <AUTHOR> http://stackeo.me/posts/snowflake

<comment><USER2> Nice to see Snowflake coming out of beta. They're going to make a big impact. Redshift, vertica, netezza, and aster will not be be able to compete.</comment>


Betting on Black Swans - <AUTHOR> http://www.immadsnewworld.com/2012/12/betting-on-black-swans.html

<comment><USER2> The article misses the definition of "Black Swan" - you CANT bet on Black Swan events or farm Black Swans. If you could, it werent a Black Swan.

"The disproportionate role of high-profile, hard-to-predict, and rare events that are beyond the realm of normal expectations in history, science, finance, and technology"[1]

[1] <http://en.wikipedia.org/wiki/Black_swan_theory>

<comment><USER3> Malcolm Gladwell outlined the Black Swan strategy Taleb used at Empirica in this New Yorker article from way back in 2002:

<http://www.gladwell.com/2002/2002_04_29_a_blowingup.htm>

Here's the part that resonated with me:

 __"We cannot blow up, we can only bleed to death," Taleb says, and bleeding to death, absorbing the pain of steady losses, is precisely what human beings are hardwired to avoid. "Say you've got a guy who is long on Russian bonds," Savery says. "He's making money every day. One day, lightning strikes and he loses five times what he made. Still, on three hundred and sixty-four out of three hundred and sixty-five days he was very happily making money. It's much harder to be the other guy, the guy losing money three hundred and sixty-four days out of three hundred and sixty-five, because you start questioning yourself. Am I ever going to make it back? Am I really right? What if it takes ten years? Will I even be sane ten years from now?" What the normal trader gets from his daily winnings is feedback, the pleasing illusion of progress. __

[Hmmm. Can't get italics to work on the quotation.]

<comment><USER4> Ten years on Empirica is closed, and its record of returns is interestingly vague, given all the media attention at the onset. Universa Investments L.P. sprung up from the ashes in 2007. Again, the record of return is "secret", except for careful leaks in the press when things happen to pay off. But wait, there's more! They have a brand-new "Black Swan ETF" that hedges the S&P 500 and charges you 0.95% for the privilege.

It looks a whole lot like the usual hedge fund bullshit play to me. Make lots of noise for a few years, get the punters to play, close down, then open up under a new name. Lather, rinse, repeat.

</comment></comment></comment><comment><USER5> I don't think he understands what a black swan means. You can't 'shoot for' a black swan because it's by definition unknowable. A specific 'sale or product idea' isn't a black swan. Meeting the perfect cofounder is arguably one; it's as likely to happen at a rave as at a tech meetup. An even better example is the side project that you _never expected_ to turn into a startup.

 _"Although Black Swans are risky by their nature you can put yourself in a position where you maximize the chance of success. For example; You want to have the best team to maximize the chance of success."_

There's something wrong with this paragraph; I don't see an example.

<comment><USER6> The basic idea behind "the black swan" is that given a limited sample it's foolish to try and estimate the probability of tail events, and thus in particular the expected value of convex functions.

Say for instance you have a random variable which follows the following mixture: draw from a standard normal 99.99% of the time and from a standard normal 10 standards deviations away 0.01% of the time.

If you collect 1,000 sample, 90% of the time you won't see a single instance where the value was drawn from the second mode. You plot your data and find that it perfectly fits a normal distribution. Neat!

I then ask you, what the probability to get an event >10 standard deviation away. You punch in the numbers and come up with 1.31e-23. The real answer was about 1/20000. You're wrong by about 19 orders of magnitude.

Moral of the story: if your model spits a probability much lower than the inverse of the sample size, don't trust it.

Many financial instrument, like options, display convexity. This places greater emphasis on the tails of the distribution than on the center. If the option seller underestimates tail risk, it would be profitable on average to buy such options.

There are many reasons why they might underestimate tail risk. They could ignore the theoretical argument I've exposed above. It could be that in a marketplace, sellers who ignore tail risk can stay in business long enough to put those who don't out of business.

</comment></comment><comment><USER7> VC is by definition not investing in black swans, since there is a long history of exits and failures to the point that PG & co can make claims like '1 company invested in per YC will pay for all the rest'.

VC is merely extremely risky but so far positive expected value.

<comment><USER8> I'm not sure if you're entirely correct here. True, VC has had a long history of exits and failures. However, PG & co have generally had a better history of Black Swan-type events in their portfolio (e.g. Dropbox).

Taleb's Black Swan theory and approach to hedge fund management is similar to VC.

From his Wikipedia entry: "As a trader, his strategy has been to safeguard investors against crises while reaping rewards from rare events, and thus his trading career has included several jackpots followed by lengthy dry spells."

His fund steadily and intentionally loses money or breaks even on a normal day, but vastly outperforms other funds on days when the market swings wildly in either direction. The strategy is not for the faint of heart.

<comment><USER7> > I'm not sure if you're entirely correct here. True, VC has had a long > history of exits and failures. However, PG & co have generally had a better > history of Black Swan-type events in their portfolio (e.g. Dropbox).

I don't see how Dropbox is a black swan. 'Wow, another Internet company went to billion-dollar valuation? _Who could possibly have seen that coming?_ ' Pretty much anyone who has been breathing since the Netscape IPO...

> From his Wikipedia entry: "As a trader, his strategy has been to safeguard > investors against crises while reaping rewards from rare events, and thus > his trading career has included several jackpots followed by lengthy dry > spells."

Yes, that's his strategy for exploiting convexity, but Taleb is the one insisting on 'Black Swan' as a term for the unpredictable and unpredicted, not me. I am merely pointing out that by Taleb's lights - the inventor of the term - VC is not a black swan.

> His fund steadily and intentionally loses money or breaks even on a normal > day, but vastly outperforms other funds on days when the market swings > wildly in either direction. The strategy is not for the faint of heart.

They also failed, BTW. Even in 2001 his Empirica fund turned in a crappy performance; and personally, if you set up a fund to exploit sudden market shocks and you can't profit handsomely off _9/11_ , you have failed and partially discredited your overall thesis.

</comment></comment></comment><comment><USER9> This reads like a badly-explained piece of Taleb's most recent book "Antifragility". Taleb specifically mentions most of the points mentioned, "the focus on teams" and "learning from past mistakes". Granted, these are obviously a huge part of startups in general, but if you pretend that you knew what a Black Swan was before Taleb popularized the term in 2001, you're a philosophy of science PhD or a liar. The fact that our young blogger gives absolutely NO credit to Taleb's book is disingenuous at best.

<comment><USER10> Most people who write about Black Swans nowadays would acknowledge the phrase comes from the book "The Black Swan". It's not disingenuous to not mention Taleb in every piece of writing which uses the phrase "Black Swan" precisely because Taleb is famous for creating/popularizing the phrase.

</comment></comment><comment><USER11> _Attempt to achieve many Black Swans in parallel so that the overall probability of hitting one is higher_

This can be misunderstood. One of the most valuable lessons I learned in life so far, is keeping focus. At least I am unable to do more than a few things with full force. And a half baked attitude will be counter productive towards reaching black swan moments.</comment>


SwatchOS: Not a Smart Decision - <AUTHOR> https://mondaynote.com/swatchos-not-a-smart-decision-6b2cc883c99f <comment> X-Istence Pebble had its own OS, the various fitness trackers have their own OS, I don't necessarily see things as grim as the author makes them out to be.

Especially if it lets the device last longer than 24-48 hours on a single charge.

<comment><USER2> Pebble is dead anyway.

</comment></comment><comment><USER3> I will _never_ use a smartwatch that won't last 4-5 days without charging.

It is the sole reason I gave in and got a Pebble; and now that my watch's hardware broke and the company was absorbed, I don't plan on buying another smartwatch unless I get an offer as good as that.

To achieve what they did, Pebble went with a low resolution screen and a low- power microcontroller with their own OS. If Swatch wants to do the same, they have my attention.

<comment><USER4> I had the Pebble until they were absorbed and my watch just started having all kinds of issues. Replaced it with the Forerunner 630 (for a steal at $200).

While not really a smartwatch (its geared towards runners) it does what I want. Notifications, vibrating alarm, customizable faces, tracks my steps, tracks my sleeping.

And it can go at least 12 days off a charge if just doing the above (no GPS tracking). I charged at 30% so you could probably get another 4-5 days out of that 30%.

</comment></comment><comment><USER5> [https://en.wikipedia.org/wiki/Swatch_Internet_Time](https://en.wikipedia.org/wiki/Swatch_Internet_Time)

anyone remember this?

<comment><USER6> I do! Is there any good article that explains the idea and failure of this project?

</comment></comment><comment><USER7> With that kind of ambition, Swatch really missed their best change on accomplishing it: they should have bought Pebble.

Maybe they kind still buy relevant parts...</comment>


Ask HN: Why don't most startups use Oracle? - <AUTHOR>

There was an article a while back where Marc Andreessen said that none of the startups that he invested in use Oracle hardware. The link is: http://www.businessinsider.com/boxnet-2011-9<p>My question is: why not? I understand that the best way for a two-person team to get a prototype up is by bringing up 3 EC2 machines with PostgreSQL on one, MongoDB on another, and the Rails stack on the third. This is when you have no money; but it seems that even when a company has closed a post-Series A round and has plenty of money, there is still resistance to buying a huge Oracle/Sun box with terabytes of RAM and petabytes of storage on a SAN, and instead there's usually a team of engineers doing life support on a Mongo or Cassandra cluster. It's worth pointing out that three engineers at $100K each is probably the amount one would pay for a few huge boxes. <comment><USER2> I can't speak for anyone else, but here's my thoughts on it; I have Solaris and Oracle experience in large enterprise environments, but it's not something I would consider at a Startup stage. And I'm not anti-Oracle by any means, it just comes down to maximizing my resources. For Oracle, you have these huge up front costs and buy in, and then you consider that there's newer (aka cooler) technology out there that has been proven to work (aka scale) and its way cheaper if not free. And then you consider the shift towards cloud based service delivery and the concept of on demand resources and pay per use. For the "startup mentality" it just seems like a no-brainer to start out with the cheap/free stuff that works, pay per use, and minimal buy in. Best bang for the buck.

So then you build it, it's running, and it grows. And then like any IT solution you build, you have this "lock-in" factor where you've built something on a specific platform in the cloud (or whatever) and it's painful to move to something different. This is compounded as the Userbase (and Dataset) grows bigger and bigger. So you just keep it going as long as you can and keep scaling, and I would guess this is why nobody in the Startup world uses Oracle.

If Oracle wants to power more Startups, Oracle needs to provide an affordable product that Startups choose to use from the start. They would probably kill it if they developed their own version of AWS. Seems that for most of the people I talk with, Oracle is synonymous with Enterprise, not Startups or new innovative technologies. So in some ways, the perception of Oracle and who uses their product might also play a factor. The knowledge and skill requirements are somewhat of a gray area for me, as any approach requires knowledge and skill to implement. I guess I wouldn't describe one approach as requiring more knowledge/skill than another (they all require knowledge/skill to implement, maintain, and scale).

</comment><comment><USER3> Having dealt with PostgreSQL, MySQL, MSSQL, DB/2, Sybase, and Oracle - I say level of effort.

Yes, Oracle can often be considered a performance leader (but the margin is debatable), but of that list I have always found it more difficult to deal with. Just the installation process alone on Linux with Oracle was more time consuming than DB/2, where I just wanted it to simply run.

Now I am not a qualified DBA on Oracle or DB/2, but having spent a _lot_ of time with various RDBMS platforms, I don't have the patience to expend too much effort on a simple, vanilla install with the defaults.

Compared to PostgreSQL, MSSQL, and MySQL - which I have installed, configured, and admin'd numerous times, I might surmise that in a startup its important to get down to business, in this case the business of dealing with the data. If I have to muck about just getting my DB platforms to run, I am wasting time.

So in a "time is money" context, Oracle loses - unless you have Oracle specialists on staff, which may be uncommon in startups.

</comment><comment><USER4> The biggest reason IMO is lack of expertise - the average startup engineers will be less likely to have Oracle experience and skillset.

Another reason is that there just doesn't seem to be a reason for the average startup to use Oracle HW. Oracle doesn't seem as 'agile' for startups. It's far cheaper and quicker to iterate using commodity cloud solutions.

If you're an established business with a common problem domain that can be solved with an off the shelf commercial application backed by Oracle hw, go Oracle. This however doesn't fit the use case of most startups.

Plus, if I was an investor and someone told me they needed $X funding for Oracle HW instead of a scalable cloud-based solution, they'd really really have to prove it. I'd probably tell them they're overengineering except for very specific industries and use-cases.

</comment><comment><USER5> I've worked on some massive Oracle databases and Sun servers. As Akulbe says, Solaris is a pain to use when you've used Linux/HPUX/AIX before.

Cost is the other issue, e.g. a couple of years ago a 21TB EMC array with a 32CPU, 96GB RAM system Sun HW + Solaris + Oracle licenses cost $7m.

Then there are the annual HW + OS + Oracle support costs easily 15% of your purchase cost. Plus good Solaris SysAdmin / Oracle DBAs earn $160k - $220k p.a. on contract depending on location. $220k in London, UK financial industry.

A startup can duplicate the same sort of configuration using PostgreSQL (there is a thriving industry replacing Oracle RDBMS with PostgreSQL) and a slew multi-core multi-CPU servers. And have better control over everything. Applying Solaris and Oracle updates, etc can be a royal pain.

</comment><comment><USER6> Usually it is because the startup folks do not have the experience to even know about Oracle servers. And there is a strong tendency for younger people to choose technology by imitation, in other words use what your friends and acquaintances use. From a business viewpoint, making a tech decision that way is better than picking at random, but even better is having someone with grey hair around who can weigh the pros and cons of different tools and match them up better to what the startup is doing.

<comment><USER5> I got my grey hairs from administering Solaris and Oracle.

But in corporate IT, you don't get promoted for using open source. You deal with the Big Boyz: IBM, HP, Oracle, EDS. They take you and your bosses to all expenses paid lunches and golf.

</comment></comment><comment><USER7> Oracle is enormously expensive. It's worth the expense for companies that actually need Oracle's level of performance, but most startups don't need to worry about scaling to that level for a long time. It makes more sense to spend the money on something else and not worry about performance until you are successful enough that you need to worry about it.

</comment><comment><USER8> And run what? Solaris?!

The only good thing to do with Solaris is to take it out back and shoot it in the head.

I supposed I'd have been better off learning Solaris _before_ Linux... but since I learned Linux first, going to Solaris honestly feels like I'm going backwards about 20 years.

<comment><USER5> Every time I had to admin a Solaris system, after using Linux / HPUX / AIX was like rubbing two wet sticks together to start a fire compared to flicking a BiC Lighter.

</comment></comment><comment><USER9> May be cause buying boxes do not reduce the need in engineers to take care those boxes. So you pay twice.

</comment><comment><USER10> say they scaled from 1 to 10s to 100s of EC2 machines..who'd want to migrate to a different architecture after that?</comment>


Pliny the Elder, "The Natural History", Book I (79) - <AUTHOR> http://www.perseus.tufts.edu/hopper/text?doc=Plin.+Nat.+toc <comment><USER2> Some sections are truly fascinating. Personally, I always loved the chapter on asbestos ([http://www.perseus.tufts.edu/hopper/text?doc=Perseus%3Atext%...](http://www.perseus.tufts.edu/hopper/text?doc=Perseus%3Atext%3A1999.02.0137%3Abook%3D19%3Achapter%3D4)) because I was surprised to learn that they had figured out its uses by that time in history.

<comment><USER3> Serious question: is it still possible to get a hold of asbestos clothing and/or accessories (bags, napkin, etc.)? Also, how dangerous are these materials relative to the finer and more processed industrial counterparts?

<comment><USER4> I'll just leave this here: [https://en.wikipedia.org/wiki/Health_impact_of_asbestos](https://en.wikipedia.org/wiki/Health_impact_of_asbestos)

<comment><USER5> That article barely touches on the different types of asbestos or the relative dangers after different kinds of processing. It's not much of an answer to the question.

</comment></comment></comment></comment><comment><USER6> The people behind the Perseus project are singularly amazing. This project really enhances our ability to read and research these texts, and it has continually improved over time. Many people might not know that many of the great features like the vocabulary, navigation, and search tools are at least (from my experience) 13 years old. That's right: around the time the web development world was largely just putting on its "Web 2.0" hat, the remarkable people at Tufts already created this significant, dynamic web app that was easy to use, had deep tooling sophistication, hosted a large wealth of content, and enormously benefitted a generation of students and scholars.

<comment><USER7> I cannot get this to display the latin, although I select view by default original language and update preferences.

</comment></comment><comment><USER8> The single greatest web app I've ever seen. You can display the original text and click on every single word to see a grammatical parse (beside the translation). So many other web sites pale in comparison, despite having more colours.

<comment><AUTHOR> The Tufts site is good, but I wanted a better mobile view. So I made PlinyPedia.

[https://news.ycombinator.com/item?id=15668314](https://news.ycombinator.com/item?id=15668314)

<comment><USER8> \- Where is the original text?

\- There is no "J" in Latin.

<comment><AUTHOR> \- Look in the toolbar where there's a back/"Browse" button, and also many links in the description text ("PlinyPedia is reformatted to be mobile- friendly", Search and Browse to find out even more".

How can I make that more obvious?

\- No joke!

<comment><AUTHOR> "there were originally eighteen letters"

[https://peterburk.github.io/pliny/ChaptersHtml/7.%20Book%20V...](https://peterburk.github.io/pliny/ChaptersHtml/7.%20Book%20VII.%20Man,%20His%20Birth,%20His%20Organization,%20And%20The%20Invention%20Of%20The%20Arts./57.%20Chap.%2057.%20\(56.\)-The%20Inventors%20Of%20Various%20Things..html#ref_8)

</comment></comment></comment></comment></comment><comment><USER9> Was confused at first. I was reading this expecting a history of the beer.

<comment><USER10> Also came for beer history and was mildly disappointed.

<comment><USER11> You did learn who you beer was named after. He is a remarkable character.

</comment></comment></comment><comment><USER12> The Perseus project at Tufts is wonderful.

</comment><comment><AUTHOR> I enjoy reading Wikipedia. Naturalis Historia is the world's earliest known encyclopaedia, and I think it's worth reading "lest we forget" the lessons from classical antiquity.

<comment><AUTHOR> This got a lot of response! Therefore I made a mobile-friendly version of the site, PlinyPedia.

[https://news.ycombinator.com/item?id=15668314](https://news.ycombinator.com/item?id=15668314)

</comment></comment><comment><USER13> Is 79 the earliest year tag ever used in an HN headline?

</comment><comment><USER14> I laughed at the fact that there's no year short syntax here.

</comment><comment><USER15> This is what you get when you try to write down everything you have heard and can remember about the world, and about as accurate.

<comment><USER16> What was your point? That one man without an army of collaborators can't make a really good encyclopaedia? Or was it that it is worthless to try?

<comment><USER15> My point was it was a stupid idea, and done really poorly, even by standards of the day. It was made worse by the fact that people respected him, so his errors perpetuated for nearly two millennia, rarely challenged because "the ancients" were seen to possess great wisdom.

<comment><USER17> Given that this was done poorly by the standards of the day, can you point to a superior contemporaneous text on the same subject of superior quality?

<comment><USER15> Περὶ ὕλης ἰατρικῆς, or "De Materia Medica", an early pharmacopoeia, composed over 20 years by a Roman army medic. Or another composed later, Περὶ φυτῶν ἱστορία, "Peri Phyton Historia", ten volumes just on plants, written as notes for lectures to students. Most texts written by philosophers of the day would also have included a lot more analysis.

Of course, Pliny referred to the first book and others in writing his Natural History, but it ended up as a sort of Dummy's Guide to Natural History, trying to compose a really wide subject matter into a few books over 2 years, and obviously getting a lot wrong in the process. It's fair to say nobody would have taken this seriously if not for his name.

</comment></comment></comment></comment></comment><comment><USER18> Article is about the dude and not the beer.

[https://russianriverbrewing.com/pages/pliny-the- elder](https://russianriverbrewing.com/pages/pliny-the-elder)

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


NetSurf Web Browser - <AUTHOR> http://www.netsurf-browser.org <comment><USER2> This is a cool project with some nice modularized components (CSS is a separate library, for example). We used some of it to bootstrap Servo in the early days until we had the Rust bits filled in.

</comment><comment><USER3> For those having issues please can you try our CI builds from [https://ci.netsurf-browser.org/builds/](https://ci.netsurf- browser.org/builds/) and if you are still experiencing problems a bug report on [https://bugs.netsurf-browser.org](https://bugs.netsurf-browser.org) would be appreciated.

The browser is a little limited in its javascript support (and hence rendering of a lot of modern sites) but it should not crash in general operation.

<comment><USER4> Are you looking at adding JavaScript, SVG or TTF?

Why do animated gifs stutter and flicker on Win!

I'm really so tired of Chrome and it's two day compile times, this is great!

<comment><USER3> As I mentioned elsewhere, we have no windows frontend maintainer so feature development specific to windows does not currently happen.

The win port uses windows 2000 compatible GDI calls and I imagine this is the cause for GIF flickering, SVG not rendering and truetype fonts not being used.

The core browser functionality does support javascript, however there are thousands of DOM bindings and our progress in implementing them all is slow.

<comment><USER4> Ok, I'll test on linux tonight, I'm going to follow the progress and hopefully I'll be able to help before it becomes too bloated! ;)

Does it run well on Raspberry Pi?

</comment></comment></comment></comment><comment><USER5> I was wondering if one could build an alternative Electron with Duktape and Netsurf's rendering engine and what the memory footprint would be? Most Electron apps don't even use animations and they could be "backported" to HTML4 and CSS2 :-) Webviews are kind of great for portability, but having full blown HTML5 is overkill for most of the apps.

<comment> c-smile I did it with Sciter as a UI layer of Node.js (I am an author of Sciter)

Sciter.Node.js takes 30 Mb or RAM in minimal configuration. It adds 4mb (sciter.dll/so) to original Node.js distribution.

It runs all windows in single UI thread - main thread of Node.js so there is no need for marshalling between multiple processes as in Electron case.

In fact sciter.dll is a "node.js" by its own - it contains script VM and libuv - the same as Node.js itself uses.

I am considering the option to make strip down version of sciter for Node.js. That version will not have any scripting but will rather use JavaScript and libuv from Node.js.

</comment></comment><comment><USER6> It crashed after my first try to enter a website. Seems it needs a few more years to be used.

<comment><USER7> Sent from NetSurf on OpenBSD. Seems to work well on this platform, or at least as well as something that does not support javascript can...

<comment><USER8> > at least as well as something that does not support javascript can

Not related to Netsurf (which I learned about yesterday while reading about Duktape — a HN coincidence), but recently I went back to using Firefox with JS off as default (using uBlock Origin in advanced user mode) and it's... surprisingly OK? I remember having more trouble in the past.

\- Less websites are breaking. Maybe I now have better browsing habits and a better instinct for when a website needs special treatment?

\- Enabling JS for an specific website feels easier than doing in same in pre- WebExtensions API NoScript ever felt.

<comment><USER9> I think one part of it is that HTML(5) and CSS have become much more powerful.

In the past, if you wanted fancy animations or even just moving parts on your webpage, you needed to script that.

Heck, you needed to embed Flash for any video or the like.

Nowadays, even responsive webpages are no problem with just HTML+CSS.

</comment></comment></comment></comment><comment><USER10> Last discussed 3 years ago:

[https://news.ycombinator.com/item?id=10417807](https://news.ycombinator.com/item?id=10417807)

</comment><comment><USER11> "NetSurf is running out of memory. Please free some memory and try again." with 16GB of RAM free.

<comment><USER12> must be that it's running chrome as the engine lol

<comment><USER13> It is not. It uses its own, which is what makes it unique.

</comment></comment></comment><comment><USER14> For linux, my experience with netsurf was really poor due to constant crashes (bet that's why buntu removed it from their repo since 18.04).

Again for some of my linux boxes, my need for framebuffer browser capable of rendering js and css like X11 browser has been made possible using browsh.

</comment><comment> yjftsjthsd-h Strange to see others having trouble running netsurf; I've used it for years as a "super-light but renders slightly better than dillo" option, and I don't recall ever having any significant problems with it, aside that its interface was written with slightly different interaction models that I'm used to.

</comment><comment><USER15> What's the browser's security reputation? Is the project's approach to security documented anywhere?</comment>


"Break In" At TechCrunch HQ Yesterday (entrepreneur breaks in and pitches his startup) - <AUTHOR> http://www.techcrunch.com/2008/06/01/break-in-at-techcrunch-hq-yesterday/

<comment><USER2> You know, where I was growing up phone calls were expensive, so people didn't call in advance if they were dropping by for a chat. Cheap unlimited phone calls here have resulted in a culture whereby you absolutely, positively have to call in advance for the tiniest thing. My friends are always surprised when I do drop in without calling and Arrington thinks the practise is akin to breaking in. _shakes head_

<comment><USER3> Presumably you _know_ the people beforehand whom you're visiting unannounced. That is rather different than imposing yourself on a complete stranger, for the explicit purpose of pitching your business.

Calling it a "break in" is unreasonable, but it is still a strong turnoff to me: it just smacks of desperation, and of focusing on the wrong things. An entrepreneur should be focused on building a great product that people want to use; then have TC or whoever else will cover you because you've got something valuable to show.

</comment></comment><comment><USER4> Well, I'm glad you added the quotes, because the title is pretty ridiculous without them (and really only slightly less so with them).

<comment><AUTHOR> Thanks for the feedback :)</comment></comment>


Russia reports radioactivity 986 times the norm after nuclear accident claim - <AUTHOR> https://www.theguardian.com/world/2017/nov/21/russia-radioactivity-986-times-norm-nuclear-accident-claim <comment><USER2> Since Ru-106 has a half life longer than a year, this is bad... we don't know the source, but somewhere it is apparently worse than the current Fukushima evacuation area.</comment>


You Be The VC -- Your Idea + Our Support = Your Company - <AUTHOR> http://www.youbethevc.com/ <comment><USER3> So what the hell does "You Be The VC" mean, when it appears to be an incubator? They'll provide office space and seed money if I front $1 million, drive an expensive car and attempt to wrestle them off the board?

Am I missing something, is this satire that just went right over my head?

[Edit: I think I get it now, the slogan isn't aimed at the entreprenuers that enter, it's aimed at the visitors that vote. Does anyone else think this is absurd branding, or am I just having a Day of Comprehension -5?]

<comment><USER4> No, it's very confusing. The problem is that they use "you" while pitching to two different people.

</comment></comment><comment><USER5> This gives me the chills quite a bit. I suppose there's a chance at some fortuitous fame here - but only if this thing is a success at all. I'd hate to blow an opportunity with an idea I had on something weird like this - why not just go a more traditional route? This seems more risky than rewarding - <USER2> that's just my at-a-glance impression.

</comment><comment><USER6> ".. but we also will be taking a stake in the winning companies .. " Do they say how much they will take? I can't find the figure on their site. They should mention this. Also, I don't think the services they provide are so valuable to a spanking new startup (i.e. Administrative support, IT, Accounting support, Tax services). Does IT include hosting costs? Tempting.. but so many questions not answered

</comment><comment><USER7> Some of the judge choices are ridiculous. It would be pretty weird being judged by some of them.

<comment><USER8> Great opportunity to meet Curt Schilling.

Weird that Leah Culver is wearing sunglasses in her photo.

</comment></comment><comment> daniel-cussen They got the gradients on the web 2.0 buttons wrong. They're not one of us.

<comment><USER9> This is the funniest thing I've read on this site ... ever.

</comment></comment><comment><USER10> Anyone read "You Could Win Your Very Own Company!" as a bubble indicator?

<comment><USER5> I hate to say it (I'm the last one to point and say "look! a bubble!") but that does strike me as irrational exuberance...

</comment></comment><comment><USER11> It looked possibly interesting, until the Cambridge location requirement.

<comment><USER12> Yeah... you also can't do it if you've raised any external funding at all.

</comment></comment><comment><USER13> Is it a light bulb? Is it a Yonic symbol? Is Yonic the opposite of Phallic?

</comment><comment><USER14> This looks like a recipe for disaster.

I know, we've all heard the expression, "Ideas are worthless; execution is everything." I don't buy it and never have.

Ideas are NOT worthless; they have value, some much more than others.

So I'm supposed open my idea to others to vote on? I think not.

Here's an idea: don't ask me for my idea until you earn my trust.

</comment><comment><USER9> If you're stupid enough to seek the approval and affection of a bunch of lawyers and mega-corp. Office-Space type VPs of whatever, you don't have the confidence it takes to start your own company in general, let alone to do so and persever in this economic climate. With all the time and energy you'd waste in this process you'd probably be able to find ways to do imprtant stuff for free.</comment>


Instant Search for Wikipedia - <AUTHOR> http://wikilive.in

<comment><USER2> :-) Great man..Keep it up..!!

</comment><comment><USER3> Nice Much needed one

</comment><comment><USER4> really nice job, loved the concept. keep it up.

</comment><comment><USER5> it will be a great addition to the Wikipedia

</comment><comment><USER3> Very well made</comment>