AsmXml: a fast XML parser/decoder in pure x86 assembler  - <AUTHOR> http://tibleiz.net/asm-xml/index.html <comment><USER2> This was for fun (as he says.)

> _Remember: if you really need speed, do not use XML._

He defines his own schema language, in XML (not XML Schema), which the parser needs. Nothing wrong with that. You could even transform (some subset of) XSD's to it using XSLT. (see "2. defining the schema" <http://tibleiz.net/asm- xml/tutorial.html> and "defining the schema" <http://tibleiz.net/asm- xml/documentation.html>)

He stores attributes in an array, to give O(1) access (... if you assume attribute order is significant, which it isn't according to the XML spec and most tools... even though humans find them more readable if in an expected order. So, to find a specific attribute, you'll have to step through them.)

XML parsers _are_ unbelievably inefficient.. (but c'mon... it's _XML_... all other sins pall to insignificance before the big one, as fireflies at dawn.) He makes the nice point that once you have the XML parsed, you can just use those strings directly instead of copying them again. IBM research came out with a this idea a while back, of combining the two, but it doesn't seem to have gone anywhere. I'd guess they patented it like crazy, because, after all, they are IBM. <http://portal.acm.org/citation.cfm?id=1135777.1135796> (that's just the abstract - sorry, couldn't find the pdf.)

But again, all this cleverness wouldn't matter except that it's fun ( _if you really need speed, do not use XML._ ). Oh... and except in "XML appliances": <http://en.wikipedia.org/wiki/XML_appliance>

_DISCLAIMER:_ despite my tone, I am pro-XML. It's very useful. Some of its limitations facilitate some parsing ideas that escaped everyone else because of their cost in terms of performance and expressiveness. Just as some people are so obsessed with performance that they miss modular elegance, some people are analogously obsessed with expressiveness. There! I think I've insulted _everybody._

<comment><USER3> Oh my, that IBM research probably went into their DataPower appliances >> [http://www-01.ibm.com/software/integration/datapower/perform...](http://www-01.ibm.com/software/integration/datapower/performance.html)

My biggest gripe with XML is namespaces followed by XSLT. Working with XML at that point just leaves me feeling disgusted.

edit: here's the full text >> [http://www2006.org/programme/files/xhtml/5011/p5011-mendelso...](http://www2006.org/programme/files/xhtml/5011/p5011-mendelsohn.html)

<comment><USER4> > My biggest gripe with XML is namespaces followed by XSLT.

XSLT I agree.

Namespaces I quite like, the 3 issues I have being: * I can't write namespaced documents in Clark's notation. Clark's notation rocks. * Some XML tools/libraries/whatever manage not to understand namespaces correctly. * It's backwards-compatible with non-namespace-aware parsers. This is what makes XML namespaces broken and lets people avoid understanding them.

They're not even hard to get, you just have to understand a namespaced name is a shortcut for a pair of (namespace-uri, local-name), and that a namespace is scoped to the node it's declared on. And you're set, you're done with namespaces.

But instead, you have numbskull who tell you ElementTree 1.2 is broken because it has a very good handling of namespaces but doesn't let you configure a default namespace or customize namespace aliases on serialization (it just sets them as ``ns\d``).

Oh yeah, now that I think about it there is one completely broken thing about XML namespaces (as far as I'm concerned): an element with no specified namespace lives in the current default namespace (``xmlns=uri``), but an _attribute_ with no specified namespace lives min the "null" namespace instead. That is stupid and annoying.

<comment><USER2> Namespaces, as an abstract idea, are great. But I find XML's version confusing in practice. It's partly the several different ways of configuring defaults (four I think), and partly the syntax.

You'd think they'd be as easy as Java:

      set-and-forget defaults (eg. java.util.*); or
      explicitly qualify everything (in import or in use).
      In practice, collisions are rare.

Is it harder in XML because arbitrary XML documents are commonly nested? (which can't happen to Java source code)

<comment><USER4> > It's partly the several different ways of configuring defaults (four I > think)

Which ones? I only know of using the xmlns attribute to set a default namespace, though as I mention above (in my formatting-broken-by-HN text) attributes playing by completely different namespace rules is... annoying, to say the least.

> Is it harder in XML because arbitrary XML documents are commonly nested?

That's about the only difference, and I don't think it matters much, in my opinion (nor do I think Java's namespaces are very good).

And XML namespaces are actually unique, unless you do very stupid things you can't have namespace collisions though you can have namespace-alias collisions (and as I noted above, using Clark's notation is a great way to understand how things actually work)

</comment></comment></comment></comment></comment><comment><USER5> They are missing the most important thing: AsmXml builds a specialized structure for a specific kind of XML. Regular parsers like Xerces-C build a generic, mutable DOM tree. That is obviously _way_ more work, with different lists for attributes and children, different node types etc.

Looking at the schemata they support, it doesn't look like they support all possible XML structures.

A better comparison might have been one of the XML binding tools vs AsmXml, that's much closer in functionality.

I'd also be careful wrt the XML-ness of this tool. Does it properly handle all Unicode obscurities? Does it handle all DTD obscurities? Is it robust against documents not matching the schema, malformed documents, or even malicious documents?

<comment><USER6> Those are exactly the questions I ask myself every time I hear about a new, super-fast XML parser. Is it a real XML parser[1] or can it only handle a "simple" subset of XML? I am surprised that more people don't seem to share the same skepticism as you and me. Probably because most people don't realize that implementing a conforming XML 1.0 parser is not a trivial task.

And you are right about the XML data binding tools. In most cases parsing XML itself is not what takes the bulk of the time. It is validation (against DTD, XML Schema, or ad-hoc), data conversion (e.g., from "123" string to 123 integer) and perhaps construction of some in-memory representation (with memory allocations that it involves) that take the bulk of the time. There are existing tools[2] that can performs the above tasks an order of magnitude faster than a general-purpose XML parsers by generating the tailor-made validation and data extraction code as well as data structures from XML Schema.

[1] [http://www.codesynthesis.com/~boris/blog/2008/05/19/real- xml...](http://www.codesynthesis.com/~boris/blog/2008/05/19/real-xml-parser/)

[2] <http://www.codesynthesis.com/products/xsde/>

<comment><USER7> A number of years ago, I wrote a XML/C binding tool atop the gnome SAX parser. It's able to handle anything in a DTD and a lot of things from XML Schema. I stopped working on it as it could do everything I had use for. <http://xmel.sourceforge.net/> It does O(1) access to attributes as well, since it does binding.

<comment><USER4> > It's able to handle anything in a DTD and a lot of things from XML Schema.

Which would be great if those two weren't basically the worst schema languages available for XML.

</comment></comment></comment></comment><comment><USER8> The 10x speed difference is impressive, but they do list some caveats in the benchmark:

* AsmXml does not copy attributes and text unless necessary (when it includes entity or char references), so, if you need a zero terminated string, you must copy the value first.

* On the other hand, it does more work since it also decodes attributes (O(1) access time), saving a lot of time to the caller of the library.

I'd be interested to know whether it would still be that much faster than a C library that had the same tradeoffs e.g. no copying of attributes/text unless necessary.

I also wonder if it's worth it for existing C libraries to incorporate hand- optimised asm from this library (only when targeting x86 of course) if it provides much more benefit than the above tradeoffs.

<comment><USER9> The RapidXml library is pretty similar to AsmXml, except that it's written in C++. Browsing around the "Links" section on the AsmXml website, I came across a site that performs speed comparisons between the various parsers out there. RapidXml does appear to come pretty close to AsmXml in terms of speed.

Source: [http://xmlbench.sourceforge.net/results/benchmark200910/inde...](http://xmlbench.sourceforge.net/results/benchmark200910/index.html)

<comment><USER6> Except that RapidXml is not a real XML parser. It is a parser that can only handle a subset of XML 1.0 language. See:

[http://www.codesynthesis.com/~boris/blog/2008/05/19/real- xml...](http://www.codesynthesis.com/~boris/blog/2008/05/19/real-xml-parser/)

</comment></comment></comment><comment><USER10> One of my cofounders committed this crime against nature: <http://github.com/tow/fox>

Yes, an XML parser in Fortran. Seriously, for data exchange between solid- state physics codes, writing this was the best option available.

Occasionally people ask us why we founded a startup. _Seriously?!_

</comment><comment><USER11> For some reason, I'm impressed whenever anyone does anything clever in ASM, even if the performance benefits don't add up to much these days.

<comment><USER12> I know that at the least, NES, Super NES, and Sega Genesis games were nearly all programmed in assembler. I don't know much about the next generation of game systems. Whenever you want to feel impressed, go back and play some old school classics.

<comment><USER13> Modern games are written in huge swaths of C++, tiny bits of SIMD compiler intrinsics and individual pieces of very special-purpose assembly.

If you want to feel impressed, check this out <http://benfry.com/distellamap/>

<comment><USER14> This is brilliant. So brilliant I'm submitting it to the main page.

</comment></comment></comment></comment><comment><USER15> PugXML (<http://www.codeproject.com/KB/cpp/pugxml.aspx>) uses similar approach but very portable.

<comment><USER13> I have used pugixml (based on PugXML) for very fast parsing of very simple XML and I can highly recommend it. The speed and (IMO) interface improvements are very large. <http://code.google.com/p/pugixml/>

In AsmXML's benchmark, ASM was 14x faster than Xerces (<http://tibleiz.net/asm-xml/benchmark.html>). In pugixml's benchmark, pugi was 11x faster than Xerces (<http://zeux.mooo.com/pub/pugixml/table.html>). Not bad for ASM vs C++. Both systems only support a limited subset of XML features.

</comment></comment><comment><USER16> Modern compilers can generate very good ASM (much better than most programmers can write by hand). I think parser with similar architecture in C should be as fast as written in pure ASM.

<comment><USER17> Can you supply references to compilers producing faster code than assembler written by hand? I'm under the impression that the programmer can still do better, if she's willing to put in the effort.

<comment><USER18> The compiler does a million things to speed up your code, which are mostly lost when you write pure assembly. I wouldn't be surprised if a c program was noticeably faster than the same thing in assembly...

<comment><USER19> You obviously haven't single stepped through the generated assembly from any modern compiler. Sure, some of it is reasonable stuff. But the majority is utter garbage. Fire up softice and try it.

Any half decent assembly programmer would beat compiled code.

<comment><USER20> Citation needed. I actually did the above (single stepped through the generated assembly from a few modern compilers) and I haven't noticed too much of a bad code, given most of the default assumptions (i.e. to have a reasonably compatible code for different processors, to have the live entry points to the functions that are exportable etc.)

Maybe you looked at the code produced with the optimizations off?

<comment><USER19> I've been reverse engineering code for a living for 10 years or so, and writing assembly code for 20 or so.

I don't have the time to provide examples I'm afraid, so take it or leave it ;)

<comment><USER20> I don't buy the argument from authority, I really think you're trolling.

Apart from the bad FPU code in gcc 3 (or generally relatively poor code in gcc 3 compared to more recent or more expensive compilers) I really don't know examples of significant problems in the code generation of modern C compilers. Just don't give me examples that work only on the latest CPU's or that are fast only on one of CPU generations or on the CPU of only one manufacturer.

</comment></comment></comment></comment></comment></comment></comment><comment><USER21> Why was this written? Seems like it would have an interesting story behind it.

</comment><comment><USER22> now I want to see someone write a COBOL interpreter in Fortran

</comment><comment><USER19> Using good (asm) to do evil (xml). Not cool :(

<comment><USER23> You think that programming a significant bit of code in assembly is a Good Thing? If you can possibly avoid it?

As for XML, it's excessively heavyweight and kind of awkward, but don't underestimate what a big improvement it was over the incompatible, non-human- readable binary formats that it was meant to replace.

No, this isn't using good to go evil. This is an elaborate, properly functioning, potentially useful joke. I'm awed by the combination of technical acumen and perversity, but I'm not going to actually use it.</comment></comment>


Ask HN: Why do we show comment scores next to posts? - <AUTHOR>

What is reason for showing a comment score next to a post? <comment><USER2> To me it's a convenient filter that lets me know the likelihood of some comment being good -- though it's not always reliable because unpopular opinions (like, often, my own) that threaten people's self-interests or self- image tend to get voted down pretty aggressively.

<comment><USER3> It's convenient for me when I view my own comments to see which ones have been most appreciated by other HN participants. Agreeing with the above, I know sometimes a comment can fail to gain upvotes because it is controversial (or because it is in a thread, or subthread, that has become inactive), but usually a comment with a lot of upvotes is worth a look.

</comment></comment><comment><USER4> To encourage people to post good comments.

<comment><USER5> With a large board there's a lot of anchoring that's going on.

It'd be nice if there were another way to encourage them.</comment></comment>


Twitter Plans to Go Beyond Its 140-Character Limit - <AUTHOR> http://recode.net/2015/09/29/twitter-plans-to-go-beyond-its-140-character-limit/ <comment><USER2> > removing things like links and user handles from the count, multiple sources > say

@oh @good @now @i @can @make @almost @arbitrarily @sized @tweets

</comment><comment><USER3> 140 is like two rows of text and it's just perfect if it's only text. Anything more breaks the haiku-like format.

It's the urls and handles that need more space. Remove one url and 4-5 handles from the character count and it's perfect.

</comment><comment><USER4> Personally, I feel like I need 280 characters to express a simple and complete English-phrased thought. As an example, this comment does not fit within their limit.

<comment><USER5> _> I need 280 characters to express a simple and complete English-phrased thought. For example, this comment doesn't fit in their limit._

The above comment would fit, removes unnecessary words, and gets the same point across. I feel the limit helps people be more brief, although sometimes brevity loses a bit of the human emotion or necessary nuance.

The character limit is pointless nowadays, due to people using 1/n, 2/n, 3/n to chain tweets together. Even Snowden did this today and he just joined Twitter... [http://i.imgur.com/MaAX7Io.png](http://i.imgur.com/MaAX7Io.png)

<comment><USER4> >> remove unnecessary words ... get the same point across

true, but I want to "express" something, not just put words into peoples eyes.

<comment><USER6> But at twitter The People have made a decision with their feet that they'd rather have neutered brevity than your fully expressed thought.

<comment><USER7> There's room for a product that is not fully featured, especially one that is intentionally not fully featured. Constraints are often a good thing for art. The novel "Gadsby", written without the letter E, is not the finest point of english literature, but is certainly novel and better for it. Limitations, speaking eloquently, and conveying your message through simple form has an appeal. Reducing the number of long screeds and distilling arguments to concise, short points has appeal.

To quote an old adage: Brevity is the soul of wit.

</comment></comment></comment></comment></comment><comment><USER8> They also need to separate out links from the tweet, and into a separate piece of data.

And they really need to allow for editing typos.

<comment><USER9> This is a typical requirement that blows up on implementation.

How do you deal with retweets?

Example: >I tweet: I love christians @Pontifex

@Pontifex retweets.

Fix "typo": I hate christians @Pontifex

Refresh @Pontifex profile, screenshot ...

Do you notify retweeters that the post was edited and ask for acknowledgement? Do you nullify the retweet? Do you mark it as edited?

<comment><USER10> Not a total solution, but e.g. edited posts/comments on Facebook are clearly marked and have links to a diff.

</comment></comment></comment><comment><USER11> About time. If, back in March 2006, the length of an SMS had been, say, 220 characters, a tweet would've been 200 characters long. There is nothing inherently special about 140.

<comment><USER12> GSM SMS had a limit on 140 octets. So I guess that is why.

</comment></comment><comment><USER13> I hope they won't go too far with it. I fear that allowing too long messages will reduce SNR.

</comment><comment><USER14> It sounds like they're just incorporating their own "TwitLonger" into it.

</comment><comment><USER15> Hell yes, takin' it to 141. It'll be like the "11" of our generation... Oh, wait.

This is just increasing the tokenization (?) of tweets to waste less characters on tokens.

tldr; 140 characters, just less wasted characters.

</comment><comment><USER16> A better title would have been "Twitter plans to take on Medium"

</comment><comment><USER17> When people are posting images of text, you know your product is broken... but in a good way.

</comment><comment><USER18> Is it just me or is everything starting to converge?

</comment><comment><USER19> Finally! Now merge with Facebook and all is fine.</comment>


While Contrarianism rarely pays, Contrarianism is the New Consensus - <AUTHOR> http://paul.kedrosky.com/archives/2009/12/contrarianism_i.html

<comment><USER2> _The general consensus on contrarianism is wrong._

He's being a contrarian about contrarianism! Must be a smart guy.</comment>


The Making of SciPy 1.0 - <AUTHOR> https://www.numfocus.org/blog/scipy-1-0-16-years-in-the-making/ <comment><USER2> I love SciPy and the surrounding pythonic scientific computing tools! Especially Jupyter notebooks! I've been playing around with SymPy a lot lately and love that it pretty prints latex in notebooks. Here's a nb I did recently on the taylor series demoing quite a few features:

[https://github.com/DanburyAI/SG_DLB_2017/blob/master/Noteboo...](https://github.com/DanburyAI/SG_DLB_2017/blob/master/Notebooks/MemberNBS/NumericalComputation/The%20Taylor%20Series.ipynb)

</comment><comment><USER3> This a great resource for engineers to wean themselves off Matlab. Maintaining Mathworks licenses is expensive and they can be assholes about license usage. We recently purchased some additional toolboxes and all they could do was bitch about how we had deployed our existing licenses. If you don't like it why do you allow it?

In addition, recent versions of Matlab have broken some common plotting tools, contourf in particular. Where this once produced elegant and light weight results it now generates a tessellated mess with tiny gaps between elements that look awful in paper manuscripts and baloon the file size for no good reason. The Mathworks response? It fixes some edge case.[0]

I find many of students we take on as interns often lack more than rudimentary coding skills making the jump to Python easier.

[0] [https://uk.mathworks.com/matlabcentral/answers/162257-proble...](https://uk.mathworks.com/matlabcentral/answers/162257-problem- with-patch-graphics-in-2014b-splits-in-two-along-diagonal)

<comment><USER4> I don't see a reason for MATLAB anymore now that there's Julia. It takes the good parts of the linear algebra syntax and throws out the rest.

<comment><USER3> The only reason, if you can call it that, is academic inertia. It's is taught as part of most engineering degrees and is accessible enough for students to stick with it.

</comment></comment></comment><comment><USER5> Summary: SciPy added Windows binaries for pip and formalised their organizational structure.

</comment><comment><USER6> SciPy 1.0 — 16 Years in the Making [https://www.numfocus.org/blog/scipy-1-0-16-years-in-the- maki...](https://www.numfocus.org/blog/scipy-1-0-16-years-in-the-making/)

</comment><comment><USER7> Working with these libraries and the ecosystem has been great. We tried Julia for a while but found it sorely lacking whereas python has such a great community and history and wealth of experience and wisdom to share.

<comment><USER4> I have had the opposite experience since most decent Python packages seem to have their own implementation of a parser, JIT, etc. in order to have any speed, making them monolithic monsters that are hard to contribute to and are hard to modify. Python's ecosystem seems to handle the basic cases very well, but when I wanted to "go to research land" in pretty much any scientific computing subject (mathematical optimization, numerical linear algebra, or differential equations), I quickly hit a wall that would require I write one of these monoliths myself in C++. I haven't hit any walls in Julia, but then again if you stay in the basic standard equations/models YMMV.

But SciPy is a great project and everyone can learn something from their successes.

<comment><USER8> I don't really get your point about monoliths in this specific usecase. Let's say you're exploring with NumPy. What stops you from

(a) writing your research as a bunch of Fortran or C kernels and intrgrate them with automatic bindings such as f2py? Especially Fortran is a great fit for NumPy datastructures - because they are the same.

(b) Use high performance python environments like Numba, NumbaPro (GPU) or even Cython?

<comment><USER4> >(a) writing your research as a bunch of Fortran or C kernels and intrgrate them with automatic bindings such as f2py? Especially Fortran is a great fit for NumPy datastructures - because they are the same.

If I have to write everything important and difficult in Fortran or C kernels, then I'm losing the productivity of the higher level language. And in this case it would be writing kernels from scratch instead of tweaking high level package code if I want to change data structures and implement new algorithms for existing problems. This makes it hard to directly re-purpose the internal linesearch code from the SciPy optimizers without Python in-between into my own Fortran optimizer, or add new projections and stuff to existing SciPy implementations and have that be a separately maintained package but dependent on SciPy.

Even just talking about this starts to sound like a mess from the past, but fortunately this problem is already solved by Julia so there's no reason to have to deal with it.

>(b) Use high performance python environments like Numba, NumbaPro (GPU) or even Cython?

Well the biggest thing against Numba is once again you have to write everything from scratch if you want to do things non-trivial. They finally have a way for you to extend Numba to add a class, but you don't by default get the whole Python standard library compatible with it, and classes defined in user's packages aren't automatically compatible with it. So you have to start re-writing basic data structures and other types to get the full algorithm JIT'd. And Python's standard library isn't all setup with @generated_jit to then dispatch everything effectively. So you end up having to build tons of things on your own because of the lack of library support, and it adds development time. Then there are restrictions on allocations, no easy way to do distributed parallelism, take in functions to my functions to inline them (this is important for writing things like ODE solvers, but with Numba you have to do a hack to make this almost work but it won't optimize this well), etc. Essentially it hits a feature wall when it gets past microbenchmarks and to real programming. This all hearkens back to your first comment:

>Let's say you're exploring with NumPy

Exactly: if you're content with building everything off of arrays yourself then Numba will do fine. But its limitations significantly impact the ability to compose full packages in native Python with constant propagation, interprocedural optimization, etc.: all the stuff you you depend on static languages doing in order to optimize large-scale software. On top of that, it's a difficult dependency to install. So in the end, it's great for JITing little blurbs, but I quickly hit the edge when trying to fight it.

Cython is similar to Numba, where you can setup your own fused types and extension classes, re-writing the standard library, etc., but now you've taken to writing essentially the stdlib for a language (or at least the parts you need) just to be allowed to use this "easy accelerator" for a demanding project.

If it was 10 years ago these issues would be okay, but these days it stands out as a productivity and performance barrier. Julia has already solved this problem, and hell even LuaJIT is easier to build this kind of software with. Or if you're going to fuss around with compiled code, we can use D or Rust, or even go all the way back to C++ and Fortran. In fact, it's quite telling that even fairly recent big "Python" projects like TensorFlow, PyTorch, FEniCS, etc. all built their whole package in C++ and made Python bindings instead of trying to use these accelerators. Meanwhile people are punching out large Julia projects are using pure Julia without hesitation.

To an end user of packages it really doesn't matter how it was implemented, but when your work and research is in developing these kinds of large software projects, these limitations make a huge difference.

<comment><USER8> Thank you for the expansive answer - I can really see where you're from now and I agree with your issues in Python. It's interesting to me that you go to Julia as a solution (I mean that honestly, I want to play with it when an exploration phase comes up).

</comment></comment></comment></comment></comment><comment><USER9> Great news. It's really good to have an alternative for the expensive Matlab.</comment>


Microsoft announces Project Spartan, its new web browser for Windows 10 - <AUTHOR> http://www.theverge.com/2015/1/21/7863331/microsoft-project-spartan-new-web-browser <comment><USER2> So, it will take a 'snapshot' of the page that you can markup. This snapshot will disable dynamic features of the webpage but still allow links to work. I wonder if they are talking about halting DOM manipulation, or JavaScript execution. Seems this will definitely create new classes of QA test paths.

</comment><comment><USER3> Pretty surprising that it's coming with a new rendering engine given the good progress Microsoft has been making in bringing Trident in line with the competition.

<comment><USER4> Is "new rendering engine" marketing-speak for "Trident with backwards compatibility ripped out"?

<comment><USER5> I can't be the only person that was really hoping they'd just use Web-kit and help "standardize" how websites render...

really tired of having:

<!--[if IE x]><html class="please-dont-make-my-site-look-awful"><![endif]-->

Now instead we'll have:

<!--[if SPARTAN x]><html class="please-dont-make-my-site-look- awful"><![endif]-->

<comment><USER6> Instead? Surely you mean, as well. You'll have to support both IE and SPARTAN. It is just another browser we have to deal with.

<comment><USER7> Every person with SPARTAN will have IE installed too. A site can say "works only in SPARTAN/Chrome/Firefox/Safari" or "Works only in IE" (for different markets).

</comment></comment></comment></comment></comment><comment><USER5> Now when you install Windows, you will get no less than two pre-installed browsers (at least for the next several versions of Windows). You will get IE and Spartan... neither of-which you can fully remove since they'll be baked into Windows like IE is now (things depend on IE specifically and don't just rely on the default-set browser)

<comment><USER8> which may actually be a good thing because it will further reduce the total number of IE/Spartan marketshare driving fewer developers to care. A real win for the web.

<comment><USER9> Fewer supported browsers is not a win for the web.

<comment><USER5> Fewer rendering engines might be though. So long as it's an Open Source and freely-contributable engine (like Webkit is today). Or maybe a better defined specification for how things should render.

Today it's a wild west, your site may look great in one browser but terrible in another, etc.

</comment></comment></comment></comment><comment><USER7> Peter-Paul Koch (ppk) about this, and why developers should call it MSIE12 internally but call it a new browser to non-technical people:

[http://www.quirksmode.org/blog/archives/2014/12/a_new_micros...](http://www.quirksmode.org/blog/archives/2014/12/a_new_microsoft.html)

</comment><comment><USER10> I would love to know what this browser is using as a user agent string.

<comment> rkuykendall-com If it's like every single web browser for it, an insanely long amalgam of the user agent strings of every competing browser, every browser that came before it, and the word Spartan.

<comment><USER11> Or even worse, the UA of another browser verbatim, for "compability purposes".

</comment></comment></comment><comment><USER12> I wonder how they can reconcile the name "Spartan" with built in note taking, social sharing, Cortana, and webpage overlay drawing.

<comment><USER13> It's just a codename, and like all Microsoft codenames the past few years, it's taken from the Halo games. It doesn't really mean anything, and it probably won't be the final name, but who knows.

<comment><USER14> Cortana made it from code name to product name, as did Windows 7.

<comment><USER15> XBox too.

</comment></comment></comment></comment><comment><USER16> Not a new rendering engine, reading view/list already exist in Safari or with plugins, annotation doesn't seem that usefull. I would have expected more tools to handle tab overload, password management, plugins.

<comment><USER17> Personally I'm happy to have functionality that previously required a plugin to be built-in. As it is I've sworn off all plugins except adblock for potential security compromises. It's just not worth it.

</comment></comment><comment><USER18> Great, another bloody rendering engine.

<comment><USER19> Web content is supposed to render properly on multiple engines. We shouldn't be encouraging a monoculture of webkit.

<comment><USER18> "supposed to"

</comment></comment></comment><comment><USER20>
        Naturally, Cortana will be integrated into Project Spartan
        It'll pop up on relevant pages where Cortana can be useful

Another Internet Explorer I won't be using. Block pop-ups only to have one natively installed.

<comment><USER21> It reminds me of clippy...

<comment><USER15> I was hoping they'd reference clipping in the presentation today. After they talked about "Cortana" appearing randomly on your desktop and in IE, all I could think of was "it looks like you're writing a letter. Would you like help? Get help typing the letter. Just type the letter without help." every... single... time...

I really hope this isn't another Clippy. If "Cortana" gets annoying I'm totally figuring out how to add the Clippy graphic to the UI and rename her "Clippy" (I bet you can personalise the name). Which, after thinking about it, I might try to do anyway just because it would be amusing...

</comment></comment></comment><comment><USER22> Spartan looks more like small OS built over bigger OS. Oh, wait, it's trend for years now. Nothing new then? :)

<comment><USER4> Spartan will reduce Windows to a set of signed device drivers.

(Context: [http://www.wired.com/2012/04/ff_andreessen/2/](http://www.wired.com/2012/04/ff_andreessen/2/) )

</comment></comment><comment><USER23> I really wish they would just base IE (or whatever this ends up being called) on WebKit or Blink and call it a day. They could immediately solve 90% of the actual problems people have with their browser, instead of tacking on crap that nobody's asking for.

Once the real problems are fixed, feel free to tack on crap because IE is basically only exists as a way for people to download Chrome anyway.

<comment><USER14> Build a browser on Webkit or Blink, just like everyone else? There's already dozens of those. You can download Chrome just as well in any browser.

It's great that MS is improving IE, because having a Webkit/Blink dominated monoculture is bad. Didn't we learn this with IE6?

<comment><USER24> But this software is vapor.

If you are running forwards slower than a treadmill is taking you back, are you advancing?

<comment><USER13> How is this vapor? Vapor is something that doesn't exist, not something that hasn't been released yet.

<comment><USER14> Perhaps "vaporware" was meant, but this browser has only been known for two months (I think), and is presumably in heavy development.

</comment></comment></comment></comment></comment><comment><USER25> Will Project Spartan continue Microsoft's trademarked aversion to standards- compliant DOM rendering?

</comment><comment><USER26> If it's not cross-platform, I'm not sure why they're bothering. They seem to think that the turn-off is simply standards compliance. While that's a big deal, a bigger deal is having to learn a whole new workflow when switching between operating systems... at least in my world.

<comment><USER27> And how big is your world?

<comment><USER26> Roughly 40,000 employees and customers. But apparently hacker news doesn't approve so I guess we're the minority.

</comment></comment></comment><comment><USER24> So... they are trying to make the Web more shareable with a proprietary annotation feature, thereby introducing a new category of UX issues, bugs and incompatibilities.

I suppose that would be kind of neat if the Web wasn't already the most shareable medium in the world (you've heard of URLs?).

MS is way behind in standards implementation (yes still, even in IE11). Yes this software is pure vapor, but has their browser project office heard of feature prioritization?

MS has not, cannot and will never change. They are onto a losing strategy long-term (just review your GA logs). And for that I am glad because as a developer for the Web, I hate them with a passion.

<comment><USER14> While the web is the most sharable thing ever, it's not the most annotatable or drawable medium. This annotation feature will let corporate office monkeys communicate changes to their intranet sites easier than using vague text descriptions or printouts (or, kill me, scanned printouts).

And guess who the primary target audience is for MS browsers? Corporate office monkeys.

<comment><USER24> But as most corporate monkeys know, Windows includes a snipping tool already with an annotation feature.

</comment></comment></comment><comment><USER28> _" Chief among those new features is new inking support that lets users annotate web pages and sync all of those notes to OneDrive and share them with collaborators"_

In other words, your web browsing is reported to Microsoft so this markup will be in sync. Will that information be made available to advertisers? Will Microsoft backdoor HTTPS to make this work?

<comment><USER29> So all cloud services are inherently suspect? Then why call one in particular out at all?

This is no different than saving a web page for reading later on instapaper or the like.

<comment><USER30> With a service like instapaper you select what is being reported. If it not possible to turn off the Spartan Annotation, all of your web activities are reported.

<comment><USER13> If you don't annotate anything, there's no annotation to be reported to Microsoft. (And if Microsoft wanted a log of your browser activity, they could just put a back door in your browser.)

<comment><USER31> That back door for sending browser activity to Microsoft exists, it is called the Bing bar.</comment></comment></comment></comment></comment>


Why should we try to be amazing? - <AUTHOR> http://abraintrust.com/why-is-it-important-to-be-amazing/ <comment><USER2> I'd go so far as to say 'be excellent to eachother'. Though I'm not sure how many people will understand the reference, I do believe it is essential that people look out for eachother, and not just themselves. And I mean being kind to people far away from any reciprocity relationship - helping a total stranger has the greatest impact, to my mind</comment>


Cloudflare down again - <AUTHOR>

This happened 3 weeks ago: https://news.ycombinator.com/item?id=5313147<p>I'm now getting: 504 Gateway Time-out <comment><AUTHOR> More on the story [http://blog.cloudflare.com/the-ddos-that-almost-broke-the- in...](http://blog.cloudflare.com/the-ddos-that-almost-broke-the-internet) <https://news.ycombinator.com/item?id=5450410>

</comment><comment><AUTHOR> Ok again now. Probably caused by [http://www.nytimes.com/2013/03/27/technology/internet/online...](http://www.nytimes.com/2013/03/27/technology/internet/online- dispute-becomes-internet-snarling-attack.html?pagewanted=all&_r=0)

</comment><comment><USER2> I'm not seeing any problems on my sites.

</comment><comment><AUTHOR> Slowly coming back...</comment>


Tampa Tribune editor: paper is an add-on to the web site - <AUTHOR> http://www.jessicadasilva.com/2008/07/02/its-worth-fighting-for/

<comment><USER2> Making newspapers hyperlocal is a scary thought.

I think one of the big values that newspapers and other media -- skipping the intrinsic bias diatribe -- bring is a breath of coverage. I read the newspaper for some amount of news, but I also find it invaluable to have a breath of information brought to my attention.

Part of the value of my higher education (and even my lower) was the breath of topics I was exposed to. If all I read is the huffingtonpost I'm doomed...

<comment><USER3> Aren't community papers essentially already "hyperlocal" (think SF Bay Guardian, East Bay Express, etc.)? Even at the city paper level for most small- and mid-sized cities, the local section is a big part of why people subscribe (think SF Chronicle).

A large percentage of the national reporting in these papers comes from the AP, so the papers aren't adding any unique perspective -- they're just delivering the content to you... at a high cost. You may rely on those AP stories for a broader view of the nation and world, but for the owners of the paper it's a whole lot cheaper to deliver you that news online.</comment></comment>


Introducing Verve: minimalistic, static, functional language - <AUTHOR> http://tadeuzagallo.com/blog/introducing-verve/ <comment><USER2> Nice work. One note: what you defined in your example is an algebraic data type, but not a generalized algebraic data type. The data constructors' are implicitly defined, as opposed to being explicitly defined. I liked this wiki page as a guide [https://wiki.haskell.org/GADTs_for_dummies](https://wiki.haskell.org/GADTs_for_dummies)

<comment><USER3> Fixed it, thanks!

</comment></comment><comment><USER4> Looks like you had fun making this project!

I'm throwing out a challenge for you:

What will Verve do well, that no (major) language does well?

I hope you continue developing it, and that you keep having fun creating it.

<comment><USER3> It was a lot of fun indeed!

> What will Verve do well, that no (major) language does well?

I'm always thinking about that, and I honestly wouldn't write a "proper" language (as in working on it full time, and expecting people to really adopt it) without having an answer for that. Nonetheless, I still see the value in writing things that are not ground-breaking, for the sake of learning. Just reading about compilers and PLT without any practice was really hard for me, and working on this language has been super helpful from a learning perspective.

<comment><USER5> I have had an idea concerning error handling, but I don't really know if it makes sense. There has been a push in the functionality community to do error handling with Maybe or Either monads or perhaps something similar to them. However, this creates the situation where many functions return these monads(two track values), but most functions accept as input simple values(one track values). So there is a constant need to lift functions. I just know a little bit of Haskell so maybe the burden of constantly lifting is not so awful, but it currently seems that way to me. I was thinking that a language that could detect this and then automatically lift the functions might be cool. However, the normal case is simply to push failures through the system, by skipping all functions after the failure, and this is not always the behavior needed. Perhaps it is ok to continue if only one of a set of functions succeeds, or perhaps one wants to retry some number of times or for some duration of time before giving up. It would seem possible to use monads to handle all desired cases, but not with auto-lifting. In any case, I really think that a better system for handling errors would be that killer feature that would make a language worth while. This is something that would pervade the languages library and thus make sense to have a new language. This video partially inspired the idea. Scott Wlaschin - Railway Oriented Programming — error handling in functional languages. [https://vimeo.com/97344498](https://vimeo.com/97344498) The other one is the language Icon where every expression has a success/failure property with automatic backtracking.

<comment><USER6> What you're describing as far as lifting is not unlike algebraic effects, like Eff[1] and Idris[2] have. Basically, you can have some sort of "exception" effect, except limited to particular type of error, and this system will mix them without having to use monad transformers. This particular application is not too dissimilar to checked exceptions, but the algebraic effect approach gives you a lot more power. It also makes it easy to deal with pure vs. impure functions, IO, etc. seamlessly.

Responding to internal errors differently based on the caller's desire is possible with Lisp; there's a good overview here[3]. It looks like algebraic effects can do something similar, as described in this paper[4] (search for lisp and the relevant portion should show up).

[1]: [http://math.andrej.com/eff/](http://math.andrej.com/eff/)

[2]: [http://www.idris-lang.org/](http://www.idris-lang.org/)

[3]: [http://www.gigamonkeys.com/book/beyond-exception-handling- co...](http://www.gigamonkeys.com/book/beyond-exception-handling-conditions- and-restarts.html)

[4]: [https://hal.archives- ouvertes.fr/hal-01079206/file/effects-p...](https://hal.archives- ouvertes.fr/hal-01079206/file/effects-paper.pdf)

<comment><USER7> Another language worth looking into if you're interested in effect systems is Nim. It includes an effect system that deals with both exceptions and other effects (like for example IO read/write effects): [http://nim- lang.org/docs/manual.html#effect-system-exception...](http://nim- lang.org/docs/manual.html#effect-system-exception-tracking). The exception tracking is similar to a checked exception system but is far less annoying than Java's. In my opinion it is the best way to ensure exceptions are handled.

</comment></comment></comment></comment></comment><comment><USER8> Hi! Nice work!

Reading through it, I'm unsure whether the VM is necessary or included. To me, 'unnecessary' and 'runs on it by default' seem slightly contradictory, or at least surprising. I don't have time to read through your source code right now, but if you're not running on your VM, what output do you produce? elf executables against the x86-64 Linux ABI?

I was also surprised that so many terms in your post have links to the definition in Wikipedia. After finishing the article and scrolling all the way down, I got to your paragraph that explained your rationale for doing so, so that's fair. However, I admit I expected these terms to link to some Verve documentation about that particular component or concept to explain details about your implementation. I realize that you may have a different audience in mind than, say, the Haskell or Python docs, but I wouldn't expect those sites to link to dictionary definitions at all.

Thanks for posting!

<comment><USER3> Right now it runs on its own VM. What I meant by "the VM is no longer necessary" was that the language went from being dynamic (when I was just prototyping with lisp) to static (in the current state), so it should be easy to generate machine code ahead of time, instead of having an interpreter (or adding a JIT).

The reason the definitions link to Wikipedia is that this is the first piece of documentation on Verve ever. Hopefully I'll be able to cover most of it in proper docs later, but I thought for now I'd add the link to the definitions in case someone reading through was not familiar with them (I personally hate to stop reading to start googling for acronyms).

<comment><USER9> I actually enjoyed the format of your article, and your explanation of the links makes perfect sense, to me. Thanks for taking the time to write this.

</comment></comment></comment><comment><USER10> Looks really cool! I'm gonna have to watch this one.

I cloned the repo locally to try to build it (ubuntu 15.10) and hit 9 of compile errors. My stdout and sterr are here: [http://sprunge.us/TdXb](http://sprunge.us/TdXb)

<comment><USER3> Thanks for posting the errors, I'll get ubuntu running and look into it. It seems to be just the __unused annotations and the non-portable pthread call, so should be easy to get it working. :)

</comment></comment><comment><USER11> Verve? Okay, nostalgia drive, activate:

...

Residents of the San Francisco Bay area should also check out Verve, a coffee roaster based out of Santa Cruz. There's two locations (the Opal Cliffs one on 41st Ave is nicer, IMHO, and easier to find parking for - plus there's the cliffs/beach nearby). It's one of the better roasters, the cafes have good atmosphere, and it's just one of those things you miss when you move away from California.

[http://vervecoffee.com/pages/locations](http://vervecoffee.com/pages/locations)

We now return you to your regularly scheduled programming language.

</comment><comment><USER12> > _But first of all, why am I writing this language? The short answer is: For > fun._

> _One of the first things I usually hear is "Why don't you target LLVM?" (or > some other runtime), and the answer is: because that wouldn't be as much > fun. Sure, it'd be much easier to get "production ready" that way, but as I > said, the goal here is really to learn and have fun._

This is awesome. So glad to see people writing languages just for fun.

For anyone else into that kind of thing, check out #proglangdesign on freenode. Several really smart people who also just want to write languages for fun often chat there, about language design and implementation.

</comment><comment><USER13> What I want to see is a functional language that embraces structural typing and extensable records/variants, instead of nominal typing. This would be an excellent fit for a world full of SQL databases and JSON documents. It would also be a considerable implementation challenge!

<comment><USER14> Elm does this quite well. Haskell has (clunky) support through classy lenses.

<comment><USER13> Like PureScript, Elms record system is very simple, it is extensible, but for example it cannot type a SQL join. It is possible to type a SQL join in Haskell using type level sets/maps and type families.

</comment></comment></comment><comment><USER15> What do you mean by minimal? The syntax? I guess not since it's not that much minimal to other fp-langs such as clojure or even Rust.

<comment><USER3> I meant minimal as in the number of concepts it exposes, basically all you get are functions, (G)ADT + pattern matching and type classes.

</comment></comment><comment> Ruud-v-A What is the motivation for making it self-hosting? Just for fun too? It creates a lot of trouble around bootstrapping.

<comment><USER3> As usual, for fun and learning, but also to use the language and identify what is more critical to improve.

</comment></comment><comment><USER16> I have a question about the "extern" keyword. If this is a interpreter, how this can possible work? ie: How is the interface between the host and the language?

I'm doing a interpreter (F#) and I have find that surfacing functions from the host is not that easy as I have imagined before.

<comment><USER3> `extern` means it's implemented in native, but it has to conform to the interface that the VM provides, and register that function with the VM. At runtime, the parser knows when a function is local (i.e. in the bytecode) or extern (i.e. C++). If it's local, it'll jump to the function's offset in the bytecode, if it's extern, the interpreter will use a native call.

You can take a look at some native functions here: [https://github.com/tadeuzagallo/verve- lang/blob/master/runti...](https://github.com/tadeuzagallo/verve- lang/blob/master/runtime/builtins.cc#L146) And the implementation for the `op_call` opcode here (notice it has 2 branches: op_call_builtin and op_call_closure, the former is for `extern`ed functions): [https://github.com/tadeuzagallo/verve- lang/blob/master/runti...](https://github.com/tadeuzagallo/verve- lang/blob/master/runtime/interpreter.S#L119)

</comment></comment><comment><USER17> Why no explicit returns? I'm used to them from R, but I thought that was considered a quirk, not a feature.

<comment><USER3> It makes it easier to reason about a functions result, both when reading the code and when type checking.

</comment></comment><comment><USER18> Cool. I like the philosophy behind it.

Hate having to type "->" which seems to popping up all over the place. :P

<comment><USER3> I started with colons indicating the return type, but IMO it gets too confusing when you have functions as parameters. e.g. `foo(bar: (int, string): float): float` but that might be just personal preference.

<comment><USER19> Forth and Factor do a double-dash to separate the inputs from the outputs and multiple outputs are allowed. So your example could look something like `foo(bar: (int, string -- float) -- float)` or `foo(bar: (int, string -> float) -> float)`

</comment></comment></comment><comment><USER20> Typo on the "its" here:

> Right now Verve runs on it's own Virtual Machine (VM)

</comment><comment><USER21> ...no dependencies but x86-64 linux abi, which is a pretty massive hard dependency.

<comment><USER3> That's not a dependency, that's a limitation: the interpreter is only implemented for one platform right now, but there's no reason why it shouldn't be possible to add support for a new platform without changing the existing code.

What I meant by no dependencies is that I don't aim to use any libraries/toolchains to facilitate the job of executing/compiling the language (or providing runtime support).

<comment><USER22> Until it can be compiled to 3d prints for fluidic logic [1][2], I think the absurd dependency of requiring electricity, at all, is really going to hold back this language.

[1] Fluidics - Wikipedia, the free encyclopedia [2] Water gates: [http://www.blikstein.com/paulo/projects/project_water.html](http://www.blikstein.com/paulo/projects/project_water.html)

</comment></comment></comment><comment><USER23> purely functional language with no GC!

that's real fun!

<comment><USER24> There's a simple Mark&Sweep GC included, where I just miss dumping the used regs. In this state all stacks vars need to be declared volatile as in potion, so it doesn't miss any stack values which are temp. kept in regs. But adjusting the stack up to the thread local values is cool. Didn't see this before</comment></comment>


Google's Project Fi mobile network is now open to everyone in the US - <AUTHOR> http://www.theverge.com/2016/3/7/11173828/google-project-fi-open-to-everyone <comment><USER2> A couple points;

\- Is this cheap in the US? They present it that way on the product pages. As an Australian I thought we had expensive mobile plans and this seems expensive to me.

\- I cant see this being popular without doing an all you can eat option on data, even if only presented that way via pricing/marketing. People live the security of knowing they can use a service without worrying about additional costs. I suspect they'd be much better offering 'all you can eat' price ?Gb and then throttling data speed to reduce effect/abuse of the outliers of data use.

<comment><USER3> This is definitely cheap for people who could rely mostly on Wi-Fi and use normal data only when you are out. It is probably little cheaper than the regular carriers(Verizon/AT&T),but definitely expensive than T-Mobile.(I am in a family plan & pay $35 for unlimited text/talk & 10GB LTE data).

But T-Mobile has really low coverage outside cities. I will definitely switch if they come up with a reduced data plan since network coverage sucks for T-Mobile in Suburbs.

<comment><USER4> Which is why Fi is nice that it will carrier hop between Sprint and T-Mobile depending on coverage for the area.

<comment><USER5> On theory, this is a nice thing, but in practice, switching between the two worst carriers isn't something you can rely on.

</comment></comment></comment></comment><comment><USER5> T-Mobile is cheaper.</comment>


A hilariously bad phone interview with Google - <AUTHOR> http://www.mkrecny.com/?p=76 http://viewtext.org/article?url=http://www.mkrecny.com/?p=76 <comment><USER3> Heh, I've had this happen twice now with Google.

The first time was for a role I actually applied for. I was honoured to even be considered, but when the interview went similarly to how you describe I was rather gutted.

The second time I received an email and a subsequent phonecall out of the blue. Again I was excited and told that it'd be an 'informal chat regarding opportunities here at Google'. The call started off great - being told that you could work from any office all over the world, employee benefits, exciting-sounding projects, etc. etc.

Then I was asked to rate myself on a "scale of 1-10, where 1-5 you have some knowledge on the subject, 6-7 you're considered an expert, 8-9 you've published work in this area such as a book, and 10 you're the person who wrote the language or you're considered a world authority on the subject." And from then on in it just descended into madness.

How does an average, even an above average person, ever rate themselves - <USER2> they're being reasonably modest - above 4? "I see you're keen on Python, how do you rate yourself there? By the way, you know the guy who invented Python? Yeah, he works here, heh heh" and so on. Following on from that little taster (which made me feel approx. 1" tall) we then had a 'quick fire' round of relatively obscure questions. A held my own here but given how my confidence was undermined at this point I don't think it was especially representative of myself technically.

And that was that. The only thing that I can take away from these is that I'm not the 'type' of person Google are looking for. Good luck to anyone who is.

</comment><comment><AUTHOR> Sadly my tiny linode box can't handle the traffic currently. See article here: <http://viewtext.org/article?url=http://www.mkrecny.com/?p=76>

<comment><USER4> I assume you're using WordPress - are you using any type of caching plugins? W3 Total Cache is what I currently use on the smallest Linode server available (512MB). I'm running Nginx and Debian 6.

<comment><AUTHOR> Sadly running apache without any caching plugins.

<comment><USER4> Check out W3 if you get a chance, and if you ever want to talk about it feel free to message me on Twitter @evanw.

</comment></comment></comment></comment><comment><USER5> It is funny that this recruiter guy "reserves" 10 for the inventor of the programming language. If I wrote the English dictionary and grammar system, would you assume I could write like Shakespeare?

<comment><AUTHOR> Haha - good point

</comment></comment><comment><USER6> I had a full loop with Google last year. It was awful. The guys were really aggressive and incredibly offensive, reminding me time and time again that they hated the company I worked for. Which is fine if it's your personal opinion, but don't invite me to your offices only to insult my employer. Kinda silly, really.

I can't help but wonder that maybe the interview process is broken. Can you really gauge how effective a dev is based on his might at solving a few programming problems on a whiteboard?

I've seen the strongest candidates in this field end up being the worst devs (bad team players, no design docs, not adhering to spec, crap unmaintanable code), and vice versa. Which makes me wonder. Anyone using any interesting techniques out there other than the standard "here's a tricky problem, now solve it"?

</comment><comment><USER7> On a scale of 1 to 10, with 10 being reserved only for individuals who are wiretapping Google's offices, what is your degree of certainty that this phone call was actually from a Google employee?

<comment><USER8> Yeah this reeks of a headhunter trying to scrape up resumes to present to Google.

<comment><AUTHOR> Any yet the individual claimed to be an engineer at Google

<comment><USER9> From my (admittedly outdated) knowledge of the Google recruiting process (I worked there as an engineer and interviewed about 100 people), this was almost certainly NOT an engineer.

Google isn't going to waste an engineer's time going through a predefined script of multiple choice questions over the phone.

These calls are called pre-screens and are usually done by non-technical, dedicated recruiters - frequently contractors.

</comment></comment></comment></comment><comment><USER10> This sounds exactly like my experience with a phone interview with a Facebook engineer.

</comment><comment><USER11> Wow, that sounds terrible - sorry that one of our guys (in this case, really sounds like a recruiter than an actual engineer) expected you to know a bunch of random technical facts.

If it makes you feel better, our technical phone interviews + onsites are better; the engineers who you'd talk to care more about you being a smart candidate than trying to get you to rank yourself lower. I'm sure there are some people who scoff at candidates who, say, don't have the CS Ph.D that they do, but we honestly do have an interviewer feedback system that tells those people to knock it off.

<comment><AUTHOR> Thanks I appreciate your empathy. I'm sure there are many, many fabulous people at Google.

</comment></comment><comment><USER12> My onsite interview with Google was very fair. It was an all-day event. The engies asked very tough questions and expected you to come up with the answer in about 30 minutes (45 minutes max but you need time to ask/interact).

I didn't make it. But I don't feel their engies are assholes (well may be a couple in my 5 interviews). I have a feeling like they don't care how you interact/approach to solve the issue. If you cannot solve it you fail! There is no partial credit whatsoever. This could turn out to be great if you have canned solutions.

</comment><comment><USER13> I had a similar interview with google. Said that I'm a jack of all trades and I said memorization is for dummies (and told him I just google for rote memorization). I told him that I've built websites for 1000s of users and been a lead in different roles. My ability is to be the.... I'll learn it and get it done.... not the person who memorized every fucking sorting algorithm there is. I wished someone read Joel On software's guide to hiring developers.

</comment><comment><USER14> Site appears to be down - anyone snag a cache? Looks like google didn't

<comment><USER15> <http://viewtext.org/article?url=http://www.mkrecny.com/?p=76>

</comment></comment><comment><USER16> Heh.

I appear to be blacklisted from google. I interviewed 4 years ago over a 3 month period, after which they said they were excited to send me an offer.

The next day, they called me back and said, no, they were not going to be giving me an offer.

Recently, I applied for a position I thought I was perfect for - and the google recruiter contacted me asking to talk about the position.

He asked if I had ever applied to google before, and I told him I had. I related a little about the experience and what happened.

He put the phone interview on pause and said he was going to go look into that and talk to the previous recruiter.

Radio silence for over a week. I sent him an email asking if my previous interview experience precluded me from interviewing there...

He said he was still collecting data.

Then he called me last friday and said that after reviewing the position with the hiring manager, they decided not to move forward with me any further, but he had no information as to the reasoning.

That was that.

But here is what I find both hilarious and infuriating: in my current company, a small design firm of just 10 people, we design a lot of google infrastructure projects; their datacenter fiber plants in the EU, NC, projects for gmail and other infrastructure projects they have going on.

I am good enough to be a contractor designing the systems - but apparently not good enough to be an employee.

I wonder if they are reading my emails or something ;)

<comment><USER17> > I am good enough to be a contractor designing the systems - but apparently > not good enough to be an employee.

Or not good enough to mess with the contract they have with your employer?

<comment><USER18> I bet this is the explanation. It's certainly one of the few reasons I can imagine why they'd give and then revoke an offer.

<comment><USER19> It could be the no-poach agreement.

</comment></comment></comment></comment><comment><USER20> Thanks for writing this.

I've been taking a "break" and am finishing up work on my own project. I got one of these emails from a Google recruiter last week.

I had applied to Google back in 2009, but chickened and canceled the interview after I read about the useless and non-trivial theoretical questions they ask.

After reading this, I think I'll still pass. But for different reasons :).

<comment><AUTHOR> Happy to have saved you some time</comment></comment>


Show HN: Dejavu v3, a Kibana alternative - <AUTHOR> https://opensource.appbase.io/dejavu/ <comment><AUTHOR> Hey HN folks,

We're out with a major release for Dejavu: 3.0.0. It offers one of the best onboarding experiences for Elasticsearch (in my biased opinion).

I love Kibana and it's great at visualizing and dashboarding experiences. However, when it comes to working with the raw data (importing / mappings / building search), Dejavu is a great alternative. Both can be used alongside as well, and I often find myself doing this :-)

What you can do with it:

* Import your data (JSON, CSV) files,

* Browse data (powerful search and filtering), do CRUD operations add new mappings,

* It comes with a GUI based query explorer view,

* You can also visually create a faceted search UI.

Direct Github link: [https://github.com/appbaseio/dejavu](https://github.com/appbaseio/dejavu). You can use it as a hosted web app, a Docker image or as a Chrome extension.

Would love feedback / PRs as we are building it in the open.</comment>


Cloud application platform - <AUTHOR> https://raimme.com <comment><AUTHOR> We've created a cloud platform for building and running apps in Java. It's a free tool, we're looking for developers to review it and provide their feedback. You may use it permanently if you find it useful.</comment>


New theory could explain missing 95 percent of the cosmos - <AUTHOR> https://phys.org/news/2018-12-universe-theory-percent-cosmos.amp <comment><USER2> >a fluid which possesses 'negative mass." If you were to push a negative mass, it would accelerate towards you.

I can't wrap my head around that statement.</comment>


Ask HN: Freelancers what are the top 3 problems preventing your business growth? - <AUTHOR>

As a freelancer, what are the top 3 problems preventing you from growing your business? What obstacles are in your way? <comment><USER2> I only have one problem: comfort.

Once you start to earn a certain amount of money, you are comfortable enough to not push further so hard. I mean, sure, an extra 50k/year would be nice, but not really necessary, considering that for extra money I should search for new clients and/or take more projects, sleep less and so on.

The alternative would be to hire some help, but then you are not a freelancer anymore.

</comment><comment><USER3> 1 - finding new work when I'm available for it - when it rains, it pours. Sometimes I have to much work, sometimes nothing for weeks.

2 - Inconsistent pay times. I freelance primarily for a company. Sometimes I get half down, sometimes payment is late. This is probably me being lazy, but I'm expected to get the work done by a certain day; I in turn, expect to get paid by a certain day.

3 - Lack of benefits. I haven't pulled the trigger on freelancing full time because I don't buy into the health care for everyone thing in the USA yet and having a day job that pays me on time and provides me full medical / dental / vision is nice to have. Plus; my wife works nights so may as well earn some extra cash and not watch tv / play video games all night.

</comment><comment><USER4> Getting clients, getting clients, getting clients. I just started out, and with 0 work to show, nobodies going to hire you.

<comment><USER5> Agreed. Even as someone who has a ton of experience I struggle with this more than I care to admit.

</comment></comment><comment><USER6> Having the stability to chase higher quality clients without sacrificing the steady ones I have.

</comment><comment><USER7> 1) Getting quality clients 2) Not having demo videos of the web apps I've built 3) Not having enough business intel to build a solid deal pipeline

</comment><comment><USER8> I have only one problem: freelance is not a business.</comment>


Wall Street: Not Guilty - <AUTHOR> http://www.businessweek.com/magazine/content/11_21/b4229060222515.htm

<comment><USER2> Seems like a PR coup paid for by major banks who are majorly scared. It's all about sidestepping crime by saying "There may have been SOME crime, but it wasn't the ROOT cause of the crisis".

Therefore what? No prosecutions whatsoever? Does the author really think that the law on Wall Street is this relative? That criminal acts only attract prosecutorial attention in those rare (read 'nonexistent') cases where they are the clear and singular causes of global economic meltdowns?

The author goes on to "point out" that "prosecuting these crimes is HARD." Maybe that's what a hack being paid to lie might say, but actual prosecutors know better. Elliot Spitzer (who REALLY know this game, having seen it from both sides) noted in 'Inside Job' (a) how popular cocaine and hookers were (and still are) among Wall St. types (b) how simple it is to prosecute vice cases and (c) how easily they can ruin the careers, lives, and families of those who get busted. After all, the further up the status ladder you go, the harder these things are to live down.

Sure, prosecuting white collar crime by auditing paperwork is tricky, and that's what makes the approach a rookie move. The real pros (like Spitzer) don't bother. Instead, they run a dragnet that catches a number of bank employees with their pants down (often literally). They threaten them with the end of their jobs, marriages, and dignity over a bunch of petty crap that they can make go away IF the poor bastards dig up the kind of dirt on their bosses that the prosecutors could never find on their own. Magically, dirt appears.

Spitzer's big point, however, is that nobody works like this without their boss's approval. If there's strong pressure NOT to do their jobs, those jobs don't get done. And they're not going to get done if the White House is loudly signaling DO NOT investigate or prosecute.

Bill Black had some interesting commentary on this point exactly, including remarks by Gretchen Morgenson and Louise Story, who reported that "in 2008, the FBI, belatedly, realized that it had improperly targeted relatively trivial mortgage frauds while ignoring the massive lenders that specialized in making fraudulent mortgages. The FBI developed a plan to reorient its resources towards the "accounting control frauds" that always should have been its priority. We now know that the Department of Justice (DoJ) deliberately, and successfully, sabotaged this effort to investigate the major frauds.

The second underlying scandal that their column disclosed is that two key members of what Tom Frank aptly termed Bush's "Wrecking Crew" – Geithner and Bernanke – who President Obama chose to promote and reappoint and make his anti-regulatory leaders sought to discourage or limit federal and state prosecutions, enforcement actions, and suits. Geithner's express rationale was that the financial system extreme fragility made vigorous investigations of the elite frauds too dangerous."

[http://www.creditwritedowns.com/2011/04/fiat-justitia- ruat-c...](http://www.creditwritedowns.com/2011/04/fiat-justitia-ruat- caelum.html)

In any case, we seem to be moving from "yes, there was crime, but don't prosecute" to "yes, there MAY have been crime, but we CAN'T prosecute" to "yes, the crisis was bad, but it wasn't CAUSED by crime, so we're not about to prosecute."

Matt Taibai summed it up best in his February RS column "Why Isn't Wall Street In Jail?"

"Over drinks at a bar on a dreary, snowy night in Washington this past month, a former Senate investigator laughed as he polished off his beer. "Everything's fucked up, and nobody goes to jail," he said. "That's your whole story right there. Hell, you don't even have to write the rest of it. Just write that." I put down my notebook. "Just that?" "That's right," he said, signaling to the waitress for the check. "Everything's fucked up, and nobody goes to jail. You can end the piece right there."

Nobody goes to jail. This is the mantra of the financial-crisis era"

[http://www.rollingstone.com/politics/news/why-isnt-wall- stre...](http://www.rollingstone.com/politics/news/why-isnt-wall-street-in- jail-20110216)

</comment><comment><USER3> This is not much more than a poorly titled straw man argument. The argument is not that fraud caused the collapse, but that fraud was discovered during and after the collapse, and that fraud should be prosecuted. Ultimately it doesn't matter if the cause of the collapse was legal or not, though it is hard to ignore the fact that it was (at least) exacerbated by fraud.

A more accurate title might be: "Wall Street caused the crash (though not necessarily by illegal means) and was shown, in the process, to have committed numerous acts of fraud which should be prosecuted."

<comment><USER4> Yep, or "Wall Street: Guilty" would also do the trick.

But, this is Bloomberg. Just enjoy the irony.

</comment></comment><comment><USER5> No conviction does not necessarily mean no guilt. And you may want to take a look at a counterpoint, because convictions may finally be on their way:

Matt Taibi - The People vs Goldman Sachs [http://www.rollingstone.com/politics/news/the-people-vs- gold...](http://www.rollingstone.com/politics/news/the-people-vs-goldman- sachs-20110511?page=1)

</comment><comment><USER6> _Taken from the top, these sentiments imply that the financial crisis was caused by fraud; that people who take big risks should be subject to a criminal investigation; that executives of large financial firms should be criminal suspects after a crash; that public revulsion indicates likely culpability; that it is inconceivable (to Madoff, anyway) that people could lose so much money absent a conspiracy; and that Wall Street bears collective guilt for which a large part of it should be incarcerated._

TLDR: set up a straw man unobvious only to people who haven't read or watched the referenced accuse's (Inside Job, Rolling Stone, etc) then spend 5 pages knocking it down.

</comment><comment><USER7> The article makes a good point. There have been no trials (let alone convictions) of bank executives because they probably did not violate any actual laws. Reckless financial risk-taking on the part of private firms is not illegal. Sure, there were clear instances of fraud and predatory loaning by more minor players, but the guys at the top of the food chain are most likely not guilty of any specifiable crimes.

But if the overwhelming majority of US citizens do in fact believe that the actions of the bank executives should be illegal, the logical thing to do would be to change the laws. (Of course, this solution is a bit unsatisfying, since no one can accurately predict these major market collapses and the next major crisis will likely be different enough that it could very well fall outside scope of any new laws.)

Sidenote: Unfortunately, the recent conviction of Raj Rajaratnam will probably assuage public anger while not at all addressing this issue. From what I understand, he was found guilty of insider trading, which is more or less unrelated to the mortgage-bubble/financial-crisis.

<comment><USER3> The article confuses two related but separate questions. The first is who caused the collapse. The second is whether or not they did something illegal. On the first point, the article claims the banks are "not guilty", which isn't really true. They're excessive risk-taking _did_ cause the collapse. That doesn't mean it was necessarily illegal, just that they are "guilty" of causing the collapse. But just because the causes weren't illegal doesn't mean that they didn't commit fraud along the way. The collapse revealed the fraud that had been going on, and while it didn't _cause_ the collapse, it made it worse.

Ultimately, it doesn't even matter whether there was a collapse or not. The fundamental point of people like Ferguson is that we now know of a number of illegal acts which took place before and during the collapse, yet those have not been properly prosecuted, and that's a problem.

<comment><USER7> Thanks for highlighting that distinction. I guess we can chalk up the lack of prosecution for actual fraud to the incredible power the investment banks have over the political process (i.e. lobbyists, campaign funding, regulatory capture, etc). I watched Inside Job a while ago and details are starting to blur together. (I just remember everyone looking really bad.) Perhaps it's time for a second watch.

</comment></comment></comment><comment><USER8> Fraud, in the shape of "liars' loans", aka Alt-A, was the major driver of the housing bubble: see <http://www.pbs.org/moyers/journal/04232010/profile.html> where William Black discusses the frauds. See Wikipedia on William K. Black for more.

</comment><comment><USER9> Of course the finance industry will tend not to break the law. They lobby to have the laws changed instead to allow them to take the risks they want, at little actual risk to themselves personally.

<comment><USER2> What's remarkable is that in spite of being able to rewrite laws in their favor, these bastards manage to break them anyway. I suppose it's simply because they can.

</comment></comment><comment><USER10> Business Week defending outright fraud by the banking sector?

Shut UP!</comment>


Visualizing 40,000 student code submissions - <AUTHOR> http://www.stanford.edu/~jhuang11/research/pubs/moocshop13/codeweb.html

<comment><USER2> Quite cool when you think about it. Each cluster probably represent a different method for solving the problem. Awesome that it's possible to classify the solutions like this. I think this might be usable for better feedback on Coursera. Cool!

<comment><USER3> Yes, and used in the reverse, starting from a red cluster, you can derivate a working program. Now let's just find a way to find those clusters from problem statements ;-)

<comment><USER2> Ahh yes, I didn't think about that. I wonder if it would be possible to build the best possible solution from this data in some way?

</comment></comment></comment><comment><USER4> Interesting that the outer edges basically have less occurrence of failed answers. I guess that means that there is a positive correlation between thinking outside the box and success? ;)

</comment><comment><USER5> Interesting choice of colors - red signifying that all the unit tests pass :-) (that is usually considered "green")

<comment><USER6> The authors say that the colors correlated to similar implementations that result in similar behavior, with red specifically indicative of passing all tests. (I totally agree with you that green would have been a much more logical choice). Which only leaves green and blue. I'm curious what the distinction is between those implementations (e.g, blue passed some of the tests, green didn't pass any tests).

</comment></comment><comment><USER7> Abstract art? Yes. Of the best variety!

A couple of years ago, I made some abstract art of the inheritance structure of a large project written in a language with (extensively used) multiple inheritance, there being around 1800 classes. No one was game to produce a 15m-wide, 30cm-high wallpaper (the traditional type) of it, so I just removed the class names, leaving classes just dots and made it my computer's wallpaper. It's got quite a few comments. Still, it was nowhere near as pretty as this.

<comment><USER8> Do you still have the image? I've created a few myself and they're really fun to look at. It's interesting to see the symmetry and orderliness of a project in its early stages as compared to the frankenstein's monster it eventually becomes. I'll post mine if I can find or re-run them.

<comment><USER7> Matter of fact, while I'm still officially employed by that company (part time casual) I haven't worked for them this year at all, having been focusing on the final year of my Uni degree. And the images are at work. So I won't be able to access it for at least a month and a half. I believe the number of classes would now be in excess of 2,500. Certain things have been going on in the past few years which have led to significant growth in both the development team and the number of classes!

The language used is an in-house language, developed in the late 1980s and early 1990s, and one that has aged surprisingly well (with comparatively few modifications to the language since then), though there are now better options available.

</comment></comment></comment><comment><USER9> Looks like a load of Pollocks :)

</comment><comment><USER10> I don't exactly see the value in this visualization. Clustering measures and feature analysis would provide far more insight into what's going on here. In fact, it's not even clear how large the dominant clusters are or what all of those speckles mean.

<comment><USER11> ?

clustering is putting similar things near similar things. Tree edit distance is quite a natural measure of distance for tree like things like programs.

You can't avoid some warping when putting high dimensional manifolds on a low dimensional one. You can see a lot of their data does cluster properly but their are some long range red arcs (in the embedding space) which are side effects of warping (they are near in data space).

You can see a cluster of green which is clearly of interest ... why did so many students get the wrong answer in the same way?

I see lots of value in that picture.

</comment></comment><comment><USER12> I keep meaning to take the machine learning course.

This is a great way of using metadata to search for patterns in student assingments. This could detect different "approaches" or "strategies"

</comment><comment><USER13> Probably also allows them to more easily detect cheating on coding assignments.

<comment><USER14> No, comparison of text rather than comparison of ASTs is is better for that purpose. There are many good reasons for ASTs to be equivalent and few good reasons for text to match.

</comment></comment><comment><USER15> Very cool visualization, I'd like to see how this sort of technique could be applied to other real world problems.

</comment><comment><USER16> And probably a way to find who is cheating and who isn't :)</comment>


Coronavirus: US Death Rates vs. China, Italy and South Korea - <AUTHOR> https://www.bbc.co.uk/news/av/world-us-canada-52066105/coronavirus-us-death-rates-v-china-italy-and-south-korea <comment><AUTHOR> Interesting analysis, but what it doesn't really address is scale. The population of the USA is 5x that of Italy, and 6x that of Spain or South Korea. I think the analysis of the shapes of the graphs can be instructive, but not necessarily the numbers themselves. The US is in many ways more like a continent than a country.

<comment><USER2> Cases (and deaths) per million inhabitants seems to me fair enough:

[http://nrg.cs.ucl.ac.uk/mjh/covid19/#covid-world- norm](http://nrg.cs.ucl.ac.uk/mjh/covid19/#covid-world-norm)

[http://nrg.cs.ucl.ac.uk/mjh/covid19/#covid-world- norm2](http://nrg.cs.ucl.ac.uk/mjh/covid19/#covid-world-norm2)

[http://nrg.cs.ucl.ac.uk/mjh/covid19/#covid-us- norm](http://nrg.cs.ucl.ac.uk/mjh/covid19/#covid-us-norm)

[http://nrg.cs.ucl.ac.uk/mjh/covid19/#deaths- us](http://nrg.cs.ucl.ac.uk/mjh/covid19/#deaths-us)</comment></comment>


A day in the life of a memory leak hunter - <AUTHOR> http://www.szegedi.org/articles/memleak.html

<comment><USER2> Excellent article, it was invaluable to me a couple of years ago when I was trying to find a memory leak that was placing a very large project in jeopardy.

</comment><comment><USER3> As a mental exercise think how many people that call themselves "Java developers" would be able to troubleshoot the issues this guy encountered.

I love statements like "take a look the code below" followed by what appears to be perfectly normal code to me and then "the problem in the code above is obvious".

<comment><USER4> This guy definitely deserves credit for focusing on the problem. Most java developers I know would have tried some cheezy workaround like periodically restarting the process. As a consequence things like this go unsolved for years.

This is actually a common issue whenever you have long-lived processes which suck in third-party code. Half the complaints I see about browsers these days is that they leak memory.

I remember a similar problem in C++ years ago with a poorly coded initializer. One of the core dumps of an X application I looked into had over 50 megabytes of copies of the string "Helvetica".

</comment></comment><comment><USER5> I read it, understood some of it -- and am now happy not to be this guy. And I do consider myself a "Java developer", even though I have not been working with Java lately.

</comment><comment><USER6> Though he doesn't mention which Java version he's using, nowadays some core bundled facilities can make such diagnoses a lot quicker. 'jmap -histo' give you instance counts by class in a running JVM -- so over a period of unexpected memory retention, or the period just before an OOME, you can identify supspiciously overrepresented types. A binary heap dump and then browse with the 'jhat' tool can backtrace the exact reference chains causing objects to be retained. -- especially if you have the luxury of debugging a 16MB heap, rather than (say) a 2+GB heap.

The really annoying OOMEs in my experience are those that aren't really object heap exhaustion -- but other depletions that still get reported as OOME. Sometimes, increasing your object heap makes these worse (eg by allowing less space for non-heap JVM structures). At least starting in Java 6, these "other OOMEs" tend to have different messages.</comment>


What if Obama's Health Care Plan's Most Dangerous Enemy Was… Twitter? - <AUTHOR> http://trueslant.com/kimstolz/2009/08/25/heathcare_and_twitter/ <comment><USER2> I can't comment on the content of the article yet, because I'm still struggling to read it. What strikes me as astonishing is how badly it's written so far:

 _Not altogether surprising I suppose given the recession, a new Latina justice who made a mildly offensive gaff early on, and a brave attempt at universal (a word which does not mean "socialist") health care._

This sentence no verb. And if that's not enough, the very next sentence mentions "Obama fanatacs". Yes, petty as it might seem, I am complaining about spelling and grammar. When I'm reading, things like that distract me. If you're addressing a wide audience, please be responsible enough to ensure a certain level of quality. I know that it becomes a non-trivial effort once you're past the 140-character limit, but think of it as an entry barrier for the medium ;)

<comment><USER3> Think of it as (lambda xs . "[This is n]ot altogether surprising[,] I suppose, given" xs).

</comment></comment><comment><USER4> Yes if the twittering masses just left the elite alone they will surely take care of us since we cannot take care of ourselves.

</comment><comment><USER5> _This summer has felt like the summer before an election year._

Nonsense. The last thing any politician wants to do in an election cycle is to talk about policy.

<comment><USER6> Maybe, just maybe, this statement is not about the politicians. Maybe the comparison has to do with the part where there is arguing on the streets between "the sides" of the healthcare and stimulus debates. It could be about a certain charged tension one feels because you can't look anywhere without someone trying to convince you that "$issue is (good|bad)". Maybe its the blowhards on tv are raging about how unfair the other side is being, in a way that rivals election shennanigans. Heck the politicians are double-speaking about policy just the same as always, so I'm not even sure what your retort means.

But you are probably right, that comment was about the politicians themselves. Only politicians can make it feel like election season.

<comment><USER5> Maybe, just maybe, my comment was meant to be taken _lightly_.

<comment><USER6> That's what smileys are for. :)

<comment><USER5> But that ruins the joke for people who get that it's a joke.

Conclusion: plain text sucks. :/

<comment><USER6> Agreed. If you had been here, i would have picked up on the body language/intonation cues that it was a joke. But keyboards don't got that :(</comment></comment></comment></comment></comment></comment>


Evolution may occur through a dependency graph, not the conventional simple tree - <AUTHOR> https://evolutionnews.org/2018/07/bio-complexity-presents-a-better-model-than-common-ancestry-for-explaining-the-pattern-of-nature/ <comment><USER2> This is an article from an antievolution, pro-intelligent design, 'science news' website, run by the Discovery Institute. It is promoting a paper from their own journal.

It was not peer-reviewed. And was created and funded based on ideological presuppositions.

Meanwhile in the real-world, it has long been known that the evolutionary tree is a graph. But the degree of lateral gene transfer is typically thought to be small. Even more so for more complex taxa. (Perhaps more common in bacteria, for example).

Please don't confuse this website or paper with science. The author would need to do a lot more work in a very different intellectual context to make it so.

<comment><USER3> Thanks for this reply. Since most people (myself included) are not familiar with the state of the art, this article sounds somewhat compelling, given it describes a plausible correction to the prolific idea of evolutionary trees. At least it's immediately clear they are overstating the impact of this work though, given the presentation style and inconsistency. Claiming the graph model and simultaneously dismissing LGT with no further explanation is nonsensical.

<comment><AUTHOR> Indeed, thanks for clarifying. I apologise for posting pseudo-science in the first place.

(Although a little bit of divergent thinking is healthy for the mind)

</comment></comment></comment><comment><USER4> Their about page ([https://evolutionnews.org/about/](https://evolutionnews.org/about/)) lists "Discovery Institute" as the copyright owner.

From wikipedia on the Discovery Institute: "Discovery Institute is a politically conservative non-profit think tank based in Seattle, Washington, that advocates the pseudoscientific concept of intelligent design."

</comment><comment><AUTHOR> Would this imply that species have a clever way to acquire "modules" from other species?

Would that happen via crossbreeding? Or some mysterious form of gene "absorption"?

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

<comment><USER3> The OP article specifically writes

> These disappointing results have required evolutionists to devise several ad > hoc mechanisms to explain the ubiquitous inconsistencies. Examples include > lateral gene transfer (LGT), differential gene loss, and convergent > evolution. Yet, the widescale appeal to LGT has been seriously questioned.

LGT is a synonym for HGT. I'm not sure why the article brings this up, since the model (DAG vs tree) and the mechanical implementation (LGT, etc.) are different things. The need for a mechanical explanation (defined by observation) does not change with a new model (also defined by observation). That said, new models can provide the right mental states to speed up discovery of correct mechanisms, so this work may have some significance, but it will be impossible to tell a priori.

</comment></comment></comment><comment><USER6> The "conventional simple tree" is just a depiction of data put into visual representation easy for humans to understand.

On the lineage of species, the actual heritage and relationship through evolution is more of an acyclic graph. We just have species that we know fill the gap between other species enough to know that a tree is the simplest way to depict evolution over billions of years, just like a tree may depict a family genealogy or family tree but even then we know its not all linear because humans have married between families and been incestuous at times.

</comment><comment><USER7> May be they are Modules with feature toggles and evolution just turns on/off what is there already.

<comment><USER2> This is part of the post-intelligent-design attack on evolution. The idea that we couldn't have evolved, because evolution can't create information. It merely turns on and off information that is already there. The website linked here is an intelligent design site. But the idea in your comment would be used in various forms on a number of other creationist sites. It allows them to imply that these feature modules were created by God. And evolutionary change is merely flicking switches.

<comment><USER7> Yeah, I noticed as I made my comment that this was a likely conclusion. Either God or Aliens. Or Both.

However, I didn't know that the web site itself was an intelligent design site.</comment></comment></comment>


Are Front End Development Skills Enough for a Career? - <AUTHOR> https://yangshun.im/blog/2019/11/03/front-end-development-enough-career <comment><USER2> If you seek a career in the software arts, you will have to run to keep up no matter what specialization you choose. At least so it seems to me. (I have been a professional programmer continuously since 1974, but I actually wrote my first program in 1964 or so).</comment>


The decline and approaching demise of Christian Science - <AUTHOR> https://www.theguardian.com/world/2019/aug/06/christian-science-church-medicine-death-horror-of-my-fathers-last-days <comment><USER2> I hate how much of a misnomer it is - it's neither Christian nor science.</comment>


Show HN: Vocally.us – get direct voice-feedback from your users - <AUTHOR> https://www.vocally.us <comment><AUTHOR> Hi HN,

We just launched Vocally.us - a tool to collect qualitative feedback from your users, customers, employees or market using intuitive voice surveys.

We built Vocally.us because despite working with tons of data in our past, we always felt like there was something missing the connected quant metrics (the What) with qualitative rationale (the Why).

We think that Product, Research and Marketing teams could all benefit for a tool that connects the What to the Why by making it easier to capture quant and qual data and connecting the dots between them.

Here's a short demo survey you can take yourself: [http://bit.ly/Vocallyus- short-demo](http://bit.ly/Vocallyus-short-demo)

Here's a full-featured version: [http://bit.ly/Vocallyus-full-featured- demo](http://bit.ly/Vocallyus-full-featured-demo)

Obviously there are tons of features missing and a long roadmap ahead, but would love to get your feedback on what you think of our stab at the MVP.

Welcome all feedback and comments.

Cheers!</comment>


Ask HN: How should we spend spare GCP credit? - <AUTHOR> We have been given a large amount of Google Cloud Platform credit ($70k+), which is due to run out in the the next 5 months.
Our credit burn rate is less than $1k per month, therefore do you have some novel ideas on what we should do with it?
We would like to use it for "good" projects, and not things like running bitcoin miners! We have a background in ML and web software, although being a startup we have limited development time and resources.
If you suggest ML projects are there any readily available datasets for model training? Many thanks... <comment><USER2> > We would like to use it for "good" projects, and not things like running > bitcoin miners!

I was just about to say use it for mining, but then I read that. You could always use it as a CDN or mirror service to host Linux distro ISOs

</comment><comment><USER3> I'm really interested to know how you got the credits in the first place!?

I have been trying for a while now but finding it difficult to find anyone to speak to at GCP.

It's for [https://getshnap.com](https://getshnap.com)

<comment><AUTHOR> We won it from a startup competition - good luck with Shnap... looks good

</comment></comment><comment><USER4> Distribute among the students who need to train there machine learning models but do not have access to high end machines</comment>


Show HN: Self-tracking & data micro-blogging service - <AUTHOR> https://zenobase.com/

<comment><AUTHOR> Created this service because I was fed up using a dozen or so specialized sites to keep track of various aspects of my life (e.g. outdoor trips to help plan future trips, list of movies I've watched, how long ago I got my last haircut etc). I wanted something more generic with better control over my data, but without resorting to Excel. Now I'm hoping to expand this service to make it useful to more people, so any feedback is appreciated!</comment>