Stack-Oriented Programming - <AUTHOR> https://en.wikipedia.org/wiki/Stack-oriented_programming <comment><USER2> The old RoboWar game on the Mac featured a stack oriented language for programming your battle robots. It was a great introduction to RPN and thinking about the stack.

One of the interesting aspects of the game was the way the CPU was limited to a very small number of instructions per tick. At most you would get 50. So if you had a complex task that had to be executed in one tick, like filling the screen with bullets before your robot shut down due to lack of power, the way to do it was to preload all of the arguments onto the stack, wait for the tick to turn over, then call all of the functions at once. Basically allowing you to bank processing time for the turn you needed it.

<comment><USER3> In CoreWars, which used assembly-like language to create programs fighting each other, one of the most powerful strategies was to inject a SPL instruction (basically fork) into an enemy program, preferably jumping to the SPL instruction itself. As a result, the enemy program would quickly be split into 64 processes (usual maximum number), so the actual logic would be running at 1/64 speed, bogged down by the dummy processes.

<comment><USER4> If you could successfully do that, why wouldn't you just bomb a DAT in instead?

<comment><USER5> Because the opponent could already be running multiple processes - killing one would only speed up the others.

The programs that uses the SPL-bomb tactic usually tried to catch all the enemy processes (slowed down to uselessness by the SPL-bomb) in the same place before finishing them off with a DAT.

<comment><USER4> I see. I don't think the original version of CoreWars had multiple program counters? Got to admit it's been a while.

<comment><USER5> You're right, the version described in the original article in the Scientific American did not have the SPL instruction, but the first "Core Wars Standard" proposal in 1988 introduced it.

You can see the different versions collected here: [https://corewar.co.uk/standards/](https://corewar.co.uk/standards/)

</comment></comment></comment></comment></comment></comment><comment><USER6> I went through a basic Forth tutorial [0] a couple of years ago and really enjoyed the process. It gets you to the point of building a real game of "snake", although it slightly glosses over the actual canvas interface.

[0] [https://skilldrick.github.io/easyforth/](https://skilldrick.github.io/easyforth/)

<comment><USER7> The really interesting thing about Forth is just how minimalistic a bare-metal Forth implementation can be - not even an interpreter, but literally a few words handcoded in machine code, and the rest built from there (and then possibly optimized with more machine code, _if_ you need that).

Given the ease with which Forth can be ported to other platforms and architectures, I often wonder why there's no C-to-Forth translator - it seems like it would be just about the easiest way to bootstrap things.

<comment><USER8> Bare metal like on the Ace.:)

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

[http://jupiter-ace.co.uk/](http://jupiter-ace.co.uk/)

</comment></comment></comment><comment><USER9> Bitcoin also uses stack oriented language, and the interpreter is actually very short and simple:

[https://en.bitcoin.it/wiki/Script](https://en.bitcoin.it/wiki/Script)

[https://github.com/bitcoin/bitcoin/blob/master/src/script/sc...](https://github.com/bitcoin/bitcoin/blob/master/src/script/script.cpp)

<comment><USER10> Yes! Stack-based abstract machines are often used because they allow compact code that is very easy to create and interpret.

As another example, Pascal p-code (UCSD p-code) is also stack-based:

[https://en.wikipedia.org/wiki/P-code_machine](https://en.wikipedia.org/wiki/P-code_machine)

The Java Virtual Machine (JVM) also uses an operand stack:

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

<comment><USER11> That P-code was not (quite!) portable between computers, was a lost opportunity. How cool it would have been.

</comment></comment></comment><comment><USER12> Oddly, that article doesn't link to the most interesting modern use. It's for security exploits. People have built compilers that output a binary that consists largely of return addresses that point into the middle of normal functions.

[https://en.wikipedia.org/wiki/Return- oriented_programming](https://en.wikipedia.org/wiki/Return- oriented_programming)

<comment><USER13> This deserves a bit of clarification: ROP is an application of threaded code technique. Conventional Forth (proto-father of stack-based/concatenative languages, alongside with Joy) is based on indirect-threaded code (ITC), so the connection between ROP and stack-based programming is rather indirect (pun intended).

For anyone interested, Book by Loeliger [1] and "Moving Forth" series [2] are essential readings on this topic.

[1]: [https://archive.org/details/R.G.LoeligerThreadedInterpretive...](https://archive.org/details/R.G.LoeligerThreadedInterpretiveLanguagesTheirDesignAndImplementationByteBooks1981)

[2]: [https://www.bradrodriguez.com/papers/](https://www.bradrodriguez.com/papers/)

</comment></comment><comment> munk-a I'm a bit confused why "using postfix notation" is considered a programming paradigm - I'm semi-fond of post-fix notation (it is the second best notation after prefix after all) but[1] it's incredibly trivial to convert between prefix and postfix notation and most programming language expressions use prefix already - it's just the infix ones that are a bit weird... Allllso, expressing if statements without any infix notation is sort of terrible, I've never seen an option to do it that isn't incredibly misleading or confusable.

A core question, though, is why? Is tab-oriented programming have a wikipedia page where programs are written predominantly using tab stops instead of spaces? It's honestly a very similar sort of distinction to make.

1\. I'm trying not to stray too far into all turing complete languages are turing complete and thus difference is meaningless land.

<comment><USER10> As I see it, the key characteristic of stack-oriented programming is not that it "uses postfix notation".

Rather, the key characteristic is that there is an important _implicit_ feature available, namely _the stack_ (or, as for example in the case of PostScript, _several_ stacks), by which arguments can be passed along.

As a consequence, you get a form of _compositionality_ of language elements that is not available in languages that lack this feature: A language element may consume, change and create entities on the stack, and the next language element can pick them up _implicitly_.

This often allows very concise and elegant code, and can also be interpreted very efficiently.

<comment> munk-a That's quite helpful, it may be a lack of in-depth reading of the page but the persistence and implicit passing of computation between operations is helpful to understand the differentiation. In more classic procedural languages you'll usually have a function stack that is being pushed and popped two but actual program values are handled using entirely arbitrarily loaded references that get juggled around as needed for computation - does stack programming often have a similar concept to frame popping when an issue with I/O or something similar is encountered or do we just get a panic that aborts computation?

<comment><USER10> To get a glimpse of stack-oriented programming, I really like and recommend _PostScript_ , because this also automatically introduces you to a widely used programming language with important practical applications, and it's also great fun to learn.

So, for instance, let's elicit an error using Ghostscript, a freely available and efficient PostScript interpreter:

        $ gs
        GPL Ghostscript 9.27 (2019-04-04)
        ...

At the "GS>" prompt, I now define "f" via:

        /f { /hello g } def

Note that "f" refers to "g", which is not yet defined.

Therefore, when I then invoke "f" via:

        GS>f

I get an error:

        Error: /undefined in g

And importantly, the stack is _retained_ , so I can inspect it at this point, interactively, using for example "pstack":

        GS<1>pstack
        /hello

This shows that /hello is still on the stack. From there, we can resume in various ways, for example by _clearing_ the stack (with "clear"), by redefining and reinvoking "f" etc.

<comment><USER14> Is PostScript used beyond page description? I'm really curious :)

<comment><USER15> I recently saw an announcement[0] of a Z-machine in Postscript. The Z-machine is a runtime for text adventure games. Also posted on HN[1] but no comments were made.

[0]: [https://groups.google.com/d/msg/rec.arts.int- fiction/HNtntxC...](https://groups.google.com/d/msg/rec.arts.int- fiction/HNtntxCpcHA/IB0EiadzDgAJ)

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

<comment><USER16> Yes; I wrote that program, and the Usenet message and the message on HN (which mentions the message ID for the Usenet message). If you have comments about it, I suggest writing a follow-up message on Usenet.

PostScript is a real programming language and can be used for many things (especially graphics). I also wrote a JSON parser in PostScript (see message <firstname.lastname@example.com> on comp.lang.postscript), and then someone else post their JSON parser in PostScript too.

I think PostScript isn't such a good protocol or document format, but it is good as a programming language. It is what I might use if I want to make a diagram (but unfortunately Ghostscript cannot produce SVG output; it can output PDF though, as well as many raster formats).

<comment><USER14> Nice! Thanks for answering! Would you choose PostScript over Forth as a general purpose language?

<comment><USER16> I think it would depend on what I am trying to make; there are advantages and disadvantages to each. In the case of the JSON parser, I think it is helpful that PostScript has data structures (such as arrays and dictionaries) and arbitrarily typed values like JavaScript and many other scripting languages have. In the case of Z-machine, Forth would probably do as well as PostScript (or probably Forth would do better, actually).

Someone was unsure how useful would be the JSON parser I wrote in PostScript, but if you want to print some diagram based on data in JSON format, then it can be helpful.

(I could implement Z-machine in Forth too if I wanted to do, but I have not done so yet because I have other things to do; I don't know if I might do so in future or not. I could implement Z-machine in any programming language with byte arrays, including assembly language (I started but haven't finished one in 6502).)

</comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER17> The stack-oriented approach can also be used within modern languages to realize the benefits of simplicity and code-reusablility. I created a python package for data analysis that treats a data frame like a stack of columns and lets you manipulate columns using postfix operators: [https://github.com/punkbrwstr/pynto](https://github.com/punkbrwstr/pynto)

<comment><USER18> Wow, this looks really interesting. Was there any particular reason you decided on this approach?

<comment><USER19> How is that more interesting than simple .modify_column(params)?

<comment><USER17> You definitely could do a similar column-level functional approach that way, but I think the simple syntax of the stack-oriented approach makes it easier to read and catch errors. The code would be a lot longer that way.

</comment></comment></comment></comment><comment><USER20> This makes me miss my HP 28S calculator from the 80s. What a beautiful machine that was.

<comment><USER21> I loved my HP-50g, allowed my to program all day long while stuck in stupid high school classes. RPL is a nice little language, a bit hard to read after a break though. And the fact that HP calculators throw away all whitespace and indention after saving a program certainly doesn't help.

</comment></comment><comment><USER16> I have used Forth, PostScript, dc, and other stack-based prorgamming. However, mostly in PostScript code I have not seen the Forth-like notation for the stack effect, although I do use that in my own PostScript programming, because I think it is better than the notation Adobe uses.

Some virtual machine instruction sets (such as Glulx and Z-machine code) still require instruction operands but allow some or all of them to be optionally specified as stack operands. This allows you to have both stack and a register-like programming.

</comment><comment><USER22> A Brainfuck tape can be thought of as two stacks and a register. '<' or move- left becomes push the register onto the right stack and pop the left stack into the register.

</comment><comment><USER23> Can someone who knows more about Forth clarify this for me: what "level" is something like Forth? Is it higher or lower-level than something like C?

The reason I'm confused is that I see Forth in a lot of areas that look like they're typically for "C and lower", but looking at the syntax, Forth looks like a high-level language.

<comment><USER24> Neither.

 _I recall that the first thing that jumped out at me was that Chuck 's code didn't have all those layers that my code had. There was the abstracted code on top and the hardware drivers on the bottom and very little in between. There was not a clear distinction in style at various levels as in my code where there were always someone else's code layered under mine that I could not or dared not change. Chuck's code looked abstracted and high level right from the bottom, the top used almost as many primitives as the bottom code._ [1]

The confusion seems to come from the idea that a piece of code _has to be_ either "abstract" all the way or "close to the metal" all the way. Why should it be? If you need to flip a bit in a peripheral between a call to some filesystem function and a call to memory page management function, just do it directly, don't invent a pseudo-high-level function just for that. Bare metal ain't dirty.

[1] [http://www.ultratechnology.com/levels.htm](http://www.ultratechnology.com/levels.htm)

<comment><USER25> > Bare metal ain't dirty.

No, but it's not as solid as it sounds. What happens when version 2 of the hardware appears, and moves the bit to a different register?

<comment><USER8> The same thing when a new OS release break some API call.

<comment><USER25> .. which they do far less often than hardware changes. You have a reasonable chance of running a 25-year-old Win32 program or 20-year-old statically linked ELF Linux program.

</comment></comment></comment></comment></comment><comment><USER26> I recently wrote an accepted answer on cs.stackexchange about how to implement sorting on a stack machine: [https://cs.stackexchange.com/questions/117949/stack- permutat...](https://cs.stackexchange.com/questions/117949/stack-permutation- algorithm/117975#117975)

The asker isolated the question well, so I had no idea what Forth or stack machines are. Still it's a nice exercise to to implement common algorithms with a restricted set of moves.

</comment><comment><USER27> Fun to see this, I just finished implementing a stack-based language of my own design this weekend.

The language is called UnoScript, inspired by the UNO card game. UNO has a natural stack built-in (thinking of the draw and discard piles) so there's a really natural connection. Link here if you're curious: [https://github.com/berlinquin/UnoScript](https://github.com/berlinquin/UnoScript)

</comment><comment><USER28> There are stack based languages that have an intrinsic elegance. For example:

[https://esolangs.org/wiki/Pancake_Stack](https://esolangs.org/wiki/Pancake_Stack)

And remember to Eat all of the pancakes!

An interpreter can be written rather quickly (compared to any productive program in the respective language) and it is interesting how much you can actually achieve with such primitive tools.

</comment><comment><USER29> Is Human Resource Machine [1] basically also a stack oriented programming game, or am I confusing the physical stacks of paper you order the little guy to move around with computer stacks?

[1] [https://tomorrowcorporation.com/humanresourcemachine](https://tomorrowcorporation.com/humanresourcemachine)

</comment><comment><USER30> 8087 had an 8 level stack [https://en.wikipedia.org/wiki/Intel_8087#Registers](https://en.wikipedia.org/wiki/Intel_8087#Registers)

<comment><USER31> > 8087 had an 8 level stack

Why "had"? The x87 instructions are alive and well in modern intel processors. You can also generate code for them (for example, if you use "long double" in C) with all major compilers.

</comment></comment><comment><USER32> Just saw this in your class this morning!

</comment><comment><USER33> I expected this to be a joke about Stack(Overflow)-Oriented Programming

</comment><comment><USER34> I read this title and thought, hmm is this another name for 'lock-in' or similar? You know like pick a stack of tools and then only use those, to the point you can hardly do anything at all without them. (which isn't necessarily bad, if it allow you to get things done fast and good)

On topic: always good to read up on less common programming principles just to, erm, avoid lock-in

<comment><USER35> I believe that's called resume oriented development.

</comment></comment><comment><USER36> May the Forth Be With You! :)

<comment><USER37> FORTH LOVE IF HONK THEN</comment></comment>


Part Three: Gracefully Scaling to 10k PostgreSQL Connections for $35/mo - <AUTHOR> https://articles.fti.bi/postgresql-10k-connections-part-three <comment><AUTHOR> Hi! Here are links to Parts One and Two of the series if you missed them, let us know what you think!

[https://articles.fti.bi/postgres-10k-connections-part- one](https://articles.fti.bi/postgres-10k-connections-part-one)

[https://articles.fti.bi/postgres-10k-connections-part- two](https://articles.fti.bi/postgres-10k-connections-part-two)</comment>


We need a Wikipedia for data - <AUTHOR> http://bret.appspot.com/entry/we-need-a-wikipedia-for-data <comment><USER2> Isn't Metaweb's Freebase (<http://www.freebase.com/>) doing this?

Check it out if you have not seen this before, these guys are Rockstars!!

<comment><USER3> Exactly my thought. Freebase is awesome, I just wish they didn't use JSON.

<comment><USER4> Why no JSON?

<comment><USER3> I'll be the first to admit it might just be me ;)

I prefer XML and haven't used JSON extensively enough to be proficient with it. If there are pluses to using JSON over XML I'm ignorant to them.

<comment><USER5> "Readmore" perhaps? ;)

<comment><USER3> HA, nice one! Any suggestions on where to start?

<comment><USER5> Here you go:

<http://json.org> <http://en.wikipedia.org/wiki/JSON>

I use JSON when I'm doing Ajax things. Jquery and Django both have methods to encode/ decode JSON.

</comment></comment></comment></comment></comment></comment></comment><comment><USER6> Joel had an article on "commoditizing your complements": <http://www.joelonsoftware.com/articles/StrategyLetterV.html> . Of course we want to commoditize data, to raise the value of hackers (raise the expected return from hacking). On the other side, data companies want to commoditize hackers, to raise the value of data... a process we are sure to resent.

<comment><USER7> Absolutely, my first thought on reading this was "Why won't these data companies understand they should throw away their business so us coders can make some money?"

</comment></comment><comment><USER8> It's like freebase all right, but the article has something right about adoption. He points out some big company would have to donate a great starting dataset to drive adoption.

I think this is one problem with Freebase. Another problem I see is the structuring of the data, it is a hurdle to sharing.

Finally the last problem I see is Data is currently very much seen as a competitive advantage. When Google introduce functionalities to make corrections on Google Maps, I don't think they do it to share with everyone else. They do it because they want Google Maps to be the destination with the best possible data. A wiki of data is a great idea, but I'm not sure we have the solution yet.

<comment><USER9> _It's like freebase all right, but the article has something right about adoption. He points out some big company would have to donate a great starting dataset to drive adoption._

<http://news.ycombinator.com/item?id=157966>

<comment><USER10> This improves the (easy) technical hurdles, but how about (very difficult) social, economic, and bureaucratic ones?

One of the biggest competitive advantages companies have is data. Like the article and previous comment already said, adoption is the hardest barrier. Unless someone can provide a compelling reason for companies/scientists/etc to give data or data access, there really isn't much else to discuss.

I think sites like mashery and dapper.net are going in the right direction, by providing good licensing rights and monetization controls that can incent large companies with reliable datasets to participate.

</comment></comment></comment><comment><USER11> There's largely no such thing as "closed source" data. Many of the restrictions people claim on publicly distributed data are bogus: you cannot claim copyright on a comprehensive collection of facts. <http://www.iusmentis.com/databases/us/> [http://blog.infochimps.org/2008/04/02/good-neighbors-and- ope...](http://blog.infochimps.org/2008/04/02/good-neighbors-and-open- grazing/) I don't think baseball is cracking down on people making money on this, unless they infringed their (quite reasonable) hot news claims to the real-time data.

Baseball is the leading example of why _giving away most of your data is the best use of it_. The sport of baseball -- the way it's played on the field, the way players are scouted and trained, and the way it's enjoyed as a fan (Moneyball? Fantasy Sports?) -- have been revolutionized by amateurs making use of free open data.

If you give out the great bulk of your data, people will be enhancing it with metadata, building tools on top of it, and most importantly connecting it to the rest of humanity's knowledge store and mining it for connections you'd have never conceived. Giving out "up to last month" or "daily intervals" will grow sharply the market for "real time" or "second-by-second". Baseball's mission statement concerns bats, bases, butts and seats -- not visualizing correlations among heterogeneous data stores. By releasing their data for free they let the smartest people in the world have the opportunity to perform that second task for free.

We're about to enter the age of ubiquitous information. Drawing these data stores into open formats, making them discoverable, and interconnecting them across knowledge domains presents explosive opportunities. But who will own this data and what access will they allow? If you want to help ensure that the answer is 'everyone' and 'all of it', come join the <http://infochimps.org> project, a free open community effort to build an Allmanac of everything.

</comment><comment><USER12> Two years ago I wrote <http://formula1db.com> , to teach myself sql. To get the data, I had to screen scrape formula1.com . Once I had the data, learning SQL became a joy. I haven't done much with the data since I built the site, but I am considering open sourcing it.

What I don't understand is, why don't sport leagues open source their data. What do they lose? Its a good think that people are so excited about your sport, that they build custom apps based on it. Sadly sport leagues don't seem to get it, I remember the MLB cracking down on a fan generated datatbase of baseball statistics a while ago.

<comment><USER13> Actually, MLB data is fairly close to being open-sourced. Historical data IS open-sourced (though not by MLB itself):

<http://baseball1.com/content/view/57/82/> <http://retrosheet.org/>

Current major and minor league data is available as well, though MLB will crack down on anyone who is trying to make money off of derivative products. Here's where you'll find it, as XML:

<http://gdx.mlb.com/components/game/>

One can do pretty cool stuff with all of it, and many people have, despite the fact that we can't make money off of it:

<http://minorleaguesplits.com/> (my site)

<http://baseball.bornbybits.com/2008/pitchers.html> (analysis based on detailed pitch speed / break information that MLB started collecting last year.)

</comment></comment><comment><USER14> It's so painfully obvious that this is a good idea, and yet people are skeptical of the Semantic Web, which has been promoting this idea for almost a decade (and doesn't require centralization). Why?

<comment><USER6> Here's three anti-SemWeb articles that try to answer your question:

<http://www.well.com/~doctorow/metacrap.htm>

<http://www.shirky.com/writings/semantic_syllogism.html>

[http://blahsploitation.blogspot.com/2005/09/i-always- figured...](http://blahsploitation.blogspot.com/2005/09/i-always-figured-that- at-least-rdf-was.html)

<comment><USER14> Why is "metacrap" a problem for the semantic web, but not for data-Wikipedia?

The Shirky article is a well-known strawman.

Thanks for the pointer to the last one, I'll read it when I get a chance.

<comment><USER6> I really shouldn't be doing this...

> Why is "metacrap" a problem for the semantic web, but not for data- > Wikipedia?

Because Wikipedia is centralized, and the SemWeb isn't.

> The Shirky article is a well-known strawman.

DH3. Contradiction

<comment><USER14> I don't want to turn this into a huge debate either, but those articles (and uncritical readings of them) have set the web back years.

> Because Wikipedia is centralized, and the SemWeb isn't.

If data-Wikipedia and a television station are both publishing data about when your favorite show is on that station, who are you more likely to believe?

Obviously you need to be careful about where your data comes from, but a single centralized source is not necessarily more trustworthy than many carefully selected sources.

Blind crawling isn't (and will probably not be) the norm for data collection on the semantic web.

> DH3. Contradiction

Heh, got me there.

Shirky's thesis is based on the idea that making inferences from data is the ultimate purpose of the semantic web.

But linked, machine-readable data--that is, the semantic web--is useful even if inferencing is useless. I don't think this is a claim that needs evidence, it should be fairly obvious.

Shirky's article's portrayal of the semantic web has little to do with the real thing. Here's a much broader debunking of it: <http://www.poorbuthappy.com/ease/semantic/>

<comment><USER6> I'm happy some Semantic Web proponents understand that blind crawling won't work. But TimBL disagrees:

> I have a dream for the Web [in which computers] become capable of analyzing > all the data on the Web – the content, links, and transactions between > people and computers... The 'intelligent agents' people have touted for ages > will finally materialize.

The debunking explicitly agrees with Shirky's conclusion, and should have given more serious scrutiny to his premise. The RDF format deals with "triples" precisely to enable inferences ("syllogisms"). Syllogisms are the only thing the SemWeb brings to the table that wasn't there before. If we have to pick sources and massage data by hand as you say, then I'll go with CSV files.

<comment><USER14> Where does TimBL say that "intelligent agents" will be blindly crawling? Certainly agents have to follow links they haven't seen before (there wouldn't be much point if they didn't), but following links provided by trusted sources is vastly different from what Google does.

> The RDF format deals with "triples" precisely to enable inferences > ("syllogisms").

As far as I know, this is not and has never been true.

RDF deals with triples because they're a small unit of data, which makes it easy to take the chunks you want from one dataset and graft them onto another set.

I suppose you can call matching URIs to graft one triple onto another a syllogism, but it would be a stretch; if that's a syllogism then so is joining two tables in a relational database. It has nothing in common with the ridiculous examples Shirky uses.

> If we have to pick sources and massage data by hand as you say, then I'll go > with CSV files.

Have fun merging data from multiple sources. RDF can't make this completely painless, but it can make it easier than CSV files.

Your third article doesn't make much sense to me. How is RDF "semantically committed"? An individual RDF vocabulary is "semantically committed", but so is an individual XML schemas or a documented use of JSON. RDF (like XML and JSON, and the generic tools for all 3) doesn't care what you put in it.

<comment><USER6> Me:

>> The RDF format deals with "triples" precisely to enable inferences ("syllogisms").

You:

> As far as I know, this is not and has never been true.

TimBL, <http://www.w3.org/DesignIssues/Semantic.html> :

> sometimes it is less than evident why one should bother to map an > application in RDF. The answer is that we expect this data, while limited > and simple within an application, to be combined, later, with data from > other applications into a Web. Applications which run over the whole web > must be able to use a common framework for combining information from all > these applications. For example, access control logic may use a combination > of privacy and group membership and data type information to actually allow > or deny access. Queries may later allow powerful logical expressions > referring to data from domains in which, individually, the data > representation language is not very expressive.

I'm not sure if this quote supports my point of view or yours, or even if there's any factual difference between our views.

<comment><USER14> This has gotten kind of confused.

When I talk about merging data, I'm talking about taking two independent documents:

       <brian> parentOf <bct>
       <brian> name 'Brian'

and

       <bct> name 'Brendan'

and being able to join those graphs on the <bct> node, to say that a person named Brendan has a parent named Brian. This is what TimBL means by combining data from multiple applications (IMO).

This is trivial for software to do and takes a lot of the effort out of merging datasets. It's what makes the semantic web a web; you're linking different datasets together. I don't see how Shirky's arguments apply here.

\--

When I say "inferencing", I mean something like Swish [http://www.ninebynine.org/RDFNotes/Swish/Intro.html#ScriptEx...](http://www.ninebynine.org/RDFNotes/Swish/Intro.html#ScriptExample) does.

Given two statements:

        <brian> parentOf <bct>
        <bct> gender <male>

and an appropriate set of rules, an inference engine can create a third statement:

        <bct> sonOf <brian>

This is what I understand Shirky's article to be about. IMO the applications of it are limited. It can also lead to the ridiculous results Shirky suggests.

Enabling inferences of this kind is neat, and it may be useful in the future, but it's not what the semantic web is About.

<comment><USER6> Your first example takes

        <brian> parentOf <bct>
        <brian> name 'Brian'
        <bct> name 'Brendan'

and deduces

        'Brendan' hasParentNamed 'Brian'

How is this substantially different from the second example? Forgive me if I'm thick; I'm honestly trying to understand.

<comment><USER14> It's not deducing a third property "hasParentNamed".

It's joining the two graphs so that you can do a query like this:

        SELECT ?parentName WHERE
        {
          ?child name 'Brendan'
          ?parent parentOf ?child
          ?parent name ?parentName
        }

to find the name of Brendan's parent.

You're being quite patient with me, thanks. :)

<comment><USER6> Still not getting it, here's your second example in that syntax:

        SELECT ?son WHERE
        {
          <brian> parentOf ?son
          ?son gender <male>
        }

What's the fundamental difference? That one example yields a new RDF triple, and the other yields a query result? Surely this is just a matter of representation.

<comment><USER14> Good point. I think you've changed my mind about the utility of inferencing :).

The difference between querying and inferencing isn't what I was trying to emphasise, though. My point was the difference between being designed for making queries/inferences within a dataset, and being designed for joining distinct datasets.

Querying within a dataset is easy: SQL, XPath, XQuery, LINQ, etc. You can write rules for transforming any data model that you can query.

RDF isn't anything special in these areas (though I do think that SPARQL is an awfully nice query language). What it gives you is a way to link and merge datasets.

</comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment></comment><comment><USER15> "No one really wants factual data accuracy and completeness to be their competitive advantage"

Some people actually do build their business on this. It's not the most sustainable business model, but in today's world, good data can be - and is - a competitive advantage. In an ideal world, should it be that way? Maybe not. I think that's what this post is getting at.

</comment><comment><USER6> Free vector map data is growing: <http://openstreetmap.org> . They recently got donated the whole Netherlands.

<comment> craig-faber Plus India. (It's not up yet.)

</comment></comment><comment><USER16> I remember seeing this company that organized data... oh yeah, they also wrote most of my textbook and aquired Reuters:

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

Could they really end up being the Encarta Encyclopedia of data?

</comment><comment><USER17> Sounds a lot like what I think Freebase [<http://www.freebase.com/>] are trying to do.

</comment><comment><USER18> I've thought about this before... Wikipedia covers unstructured data, but we need something to be its analog for structured data. Others have pointed out freebase (which kicks ass IMO), but there's also swivel (<http://www.swivel.com/>). Swivel's correctness model, however, doesn't seem to be the same open idea that freebase is. It seems more to be focused on data "authorities" and "official" data providers as opposed to just an "accuracy of the masses" system that the more open sites rely on.

</comment><comment><USER19> <http://theinfo.org/get/data> <http://www.ckan.net/package/list>

And Freebase, as mentioned by dood

</comment><comment><USER20> There was a rumor that Google would host scientific data

[http://blog.wired.com/wiredscience/2008/01/google-to- provi.h...](http://blog.wired.com/wiredscience/2008/01/google-to-provi.html)

I am not sure if this is true or what the status is.

Open Data Commons has an interesting license for open datasets

<http://www.opendatacommons.org>

</comment><comment><USER9> <http://dbpedia.org>

</comment><comment><USER21> Bret is spot on. Open data would unlock a vast amount of wealth. Other suggestions: A collection of various kinds of texts, translated into 20-30 different languages. 100 million words (per language) would be fine. 20 minutes of text, spoken in thousands of different voices/accents.

<comment><USER22> An open translation dictionary is a fantastic idea. You would have to be careful to clarify the context. A word in one language can often translate to several words in another language, for example. But I think it's do-able.

And I think you meant 100 thousand words per language. :-)

<comment><USER21> I don't mean a dictionary (also a good idea), I meant texts: articles, novels, blog posts, transcripts of conversations, etc.

As for dictionaries, there's wiktionary, but it's broken because it's based on words, not meanings, so you'd need 30*29 translations for each word.

Mmm, maybe I should do it...

<comment><USER22> But a good translation is really, really tough to do. It's an art form. Just having a basic context isn't usually enough. "I'm going there to see you." Am going on foot or by car? (Gehen vs. fahren; chodit vs jezdit.) And how well do I know you? Each culture has a different point where they go from formal (Vous/Sie/Vy) to informal (tu/du/ty), based on how well you know someone. I'm telling you, it's tough.

</comment></comment></comment></comment><comment><USER23> My degree thesis was on this subject, except this...

It stores the data as English text, parseable into Prolog predicates (ie, key/value data chunks), and you have a special editor which shows you the predicates generated by the English you just wrote.

Does this sound useful to anyone? I'd love to pick up on it.

The parser for English I wrote is in Lisp, and works very well (it's recursive, etc).

And of course, you don't have to make a new database, you just do the usual Wiki editing and just make sure the text you enter is parseable by the latest parser.

</comment><comment><USER24> A Dataset Catalog: [http://www.datawrangling.com/some-datasets-available-on- the-...](http://www.datawrangling.com/some-datasets-available-on-the-web.html)

</comment><comment><USER25> Finding high quality data is _very_ expensive, and very well-guarded with license restrictions once you do cough up for it..

Seems like factual data will inevitably gravitate toward free, though. The sooner the better.

</comment><comment><USER26> Regarding (some) stocks: [http://blog.infochimps.org/2008/03/20/stock-market- dataset-i...](http://blog.infochimps.org/2008/03/20/stock-market-dataset-is- up/)

</comment><comment><USER27> Have you heard of freebase? From what I've read online, I think they are doing something like this.

</comment><comment><USER28> There is also Swivel: <http://www.swivel.com/>

</comment><comment><USER29> <http://theinfo.org/>

</comment><comment><USER30> we need a wikipedia for ______ is generally true. the problem is getting all the knowledgeable people involved with ______ to contribute their time.

</comment><comment><USER31> the gate keepers, of this information are profiting off of it. As long as that continues they will resist change.</comment>


Show HN: CPoW: Constrained Proof of Work (section 2) - <AUTHOR> https://mox.network/indigopaper.html <comment><USER2> I can't think of anything wrong with this, but I feel like there should be.</comment>


You Ain't SPDY [slides] - <AUTHOR> http://speakerdeck.com/u/chris/p/you-aint-spdy-ruby-nation

<comment><USER2> FWIW this is a follow-up to [http://www.confreaks.com/videos/652-gogaruco2011-you-ain- t-s...](http://www.confreaks.com/videos/652-gogaruco2011-you-ain-t-spdy)

</comment><comment><USER3> BTW, I just helped push things so that Ubuntu 12.04 will ship with OpenSSL 1.0.1.

This means that TLSv1.1 and v1.2 support will be widely available to libraries and binaries that use OpenSS which will hopefully get people off of SSLv3 and TLSv1 sooner.

<comment><USER2> That's fantastic news. It'll be so much easier if NPN is available in Ubuntu proper. Huge thanks!

</comment></comment><comment><USER4> In short, with SPDY your server will push all related files like images to the client when it requests the page. Currently this is done by sending the page, having the client read it, and then the client requests all the later files.

</comment><comment><USER5> The coupon code for the free book doesnt work anymore</comment>


HAProxy 1.9.2 Adds GRPC Support - <AUTHOR> https://www.haproxy.com/blog/haproxy-1-9-2-adds-grpc-support/ <comment><USER2> As the author, any questions I might be able to answer, let me know.

<comment><USER3> This release has my gears spinning! All these new features leave little time for sleep! Thanks HAProxy team!</comment></comment>


Show HN: Handy web-based coding – Write and run Hello World in 10s - <AUTHOR> https://paiza.IO/

<comment><USER2> A demo code console?

<comment><AUTHOR> Yeah, that can be one use case, that I haven't think about !

Whenever you come up with new coding idea, learn or teach new language, feature, just write simple task or batch jobs, or want to share code(you can also embed to your blog, etc.), you or your friends can just write, run or share codes with paiza.IO !

Please just try it out, and give me feedback ! Thanks !</comment></comment>


How do I become a programming teacher full time? - <AUTHOR>

I have this website: http://www.markhagan.me/samples
I currently ad-support this hobby and make about $1.00/day doing it. :) I get a few emails a week with questions/thanks/etc which is actually what makes it worth my time.
How do I go about making this my full-time job while keeping the information and videos completely free?
--- I was thinking: buy a domain to hold the programming samples, get on a regular video-posting schedule, beg for donations. Many of you guys are going to have far more experience than me in this realm, and I would love to hear your opinion. Teaching people to code is my dream.
Thanks! <comment><USER2> You're asking the wrong question.

The right question is: How can I make a site that's more compelling than lynda.com or stackexchange?

I also think part of your problem is that you want to keep the information and videos for free. Yes a real infobusiness will give away some stuff for free, but it can and should also sell content if that content has any value.

Hint: If your content solves a problem, it has value.

Other thoughts:

\- Not every hobby should be a business

\- Another model can be to use free information to build a consulting business

<comment><AUTHOR> Thanks for the feedback!

I love stackexchange. They are fantastic at responding to one-off questions. My style is to build small, functional applications from launching visual studio to debug without cutting the video.

I feel you on not making every hobby a business. I also brew beer and have now given up on "starting a micro brewery" and, instead, focused on brewing really great beers that my friends and I like. Ever since doing that, I have been winning more awards and have tuned my brews to my tastes.

Given the current amount of questions that are emailed to me, maybe a model could be a private screen-sharing session where I can correct their mistakes on their computer. I would like that.

</comment></comment><comment><USER3> When was the last time you donated to someone for videos?

Run an 12 week course teaching people to code like bloc.io with leads generated from your free content.

<comment><AUTHOR> Good point. I can't remember ever paying for a specific video (or even considering donating, other than clicking an ad). I wasn't familiar with bloc.io, but that is really cool! That road is the all-in approach if I go it solo. I have some designers at my disposal: maybe one of them would help me.</comment></comment>


For 18 minutes, China hijacked 15 percent of the world's Internet traffic - <AUTHOR> http://webcache.googleusercontent.com/search?q=cache:4lR05JZoeUMJ:www.nationaldefensemagazine.org/blog/Lists/Posts/Post.aspx%3FID%3D249+http://www.nationaldefensemagazine.org/blog/Lists/Posts/Post.aspx%3FID%3D249&hl=en&gl=us&strip=0

<comment><USER2> Disclaimer: I am not a security expert, but I did study networking and network security for a few years.

This article seems a bit over the top. It's pure speculation, and it seems much more likely that an engineer configured a router incorrectly, panicked for 15 minutes, then fixed it.

"What set this incident apart from other such mishaps was the fact that China Telecom could manage to absorb this large amount of data and send it back out again without anyone noticing a disruption in service."

We've got a technically inclined community here: When your Internet access is slow for a while, what do you attribute it to? I doubt anyone's first instinct is "must be a man-in-the-middle attack." Again, it seems much more likely that they simply had the capacity to handle most of that traffic (biggest country in the world, modernization, etc.) and no one noticed because the Internet is often flaky.

<comment><USER3> When my internet is slow, my first inclination is traceroute (mainly so I can complain to comcast is it's their fault which it usually is), which presumably would show what was happening.

<comment><USER4> I wouldn't consider your behavior normal. :)

The parent makes a valid claim.

<comment><USER5> I've only done traceroute a couple of times, normally when my internet is crawling at a bizarre time of day. I expect some slow down at primetime when everyone is home from work and school, I don't expect it when I'm up at 5-6am.

</comment></comment></comment></comment><comment><USER6> _Internet encryption depends on two keys. One key is private and not shared, and the other is public, and is embedded in most computer operating systems. Unknown to most computer users, Microsoft, Apple and other software makers embed the public certificates in their operating systems. They also trust that this system won't be abused._

Umm, yeah, right. Basic fail at understanding public/private key cryptography.

If crypto systems relied on trusting that everyone does the right thing, they would be useless.

After such a fundamental failure, it's hard to take the rest of the article seriously.

<comment><USER7> Actually, I think the article is right. They have not failed to understand public/private key cryptography; you have failed to understand where you actually get your bank's public key from. Obviously, the bank has to send it to you. But then the problem is, how can you trust it really is your bank's key? The way we use is to trust a long list of people (CAs) to sign certificates saying "this key belongs to this domain."

So, if your browser has a CA belonging to CCNIC, a Chinese corporation which could certainly act for the Chinese government, they could pull off this spoofing. The question then is, is CCNIC in people's browsers? According to <http://www.mozilla.org/projects/security/certs/included/>, it is in Firefox.

As to how to pull off the spoofing, if you have a root CA, you can sign arbitrary certs, i.e. for domains you don't own.

So, the article is right and SSL does require trusting all your trusted CAs are trustworthy.

(edited for clarity and tone)

<comment><USER8> SSL may require "trusting all your trusted CA's", but that statement is a tautology. If you don't want to trust a Chinese CA, remove them from your root certificate store. SSL will continue to work, and you probably won't even notice the impact.

<comment><USER7> Yes, the last sentence was meant to be a tautology — the trusted CAs are trusted, if a trusted element is hosed, you are hosed, that's what trusted means. I have no doubt you are more knowledgeable and experienced in this than me, and of course you're right that you can remove the Chinese CA, but I don't think that is a sufficient solution to the proposed attack.

Firstly, I doubt that US (say) government personnel will remove Chinese CAs, never mind contractors or even ordinary business people or citizens, so to my mind this is a risk to trusting SSL, even if expert users can mitigate it as you have described.

Secondly, I believe CAs can also sign other CAs (and indeed Entrust did this for this very Chinese CA) so it's not that simple. You might need to distrust most CAs, which makes using SSL slightly tricky.

Thirdly, even if you remove the CA now, how do you know you weren't already MITM-attacked back in February? It's too late.

As for mitigation, alerting the user on CA or certificate changes might help, but getting the UX right will be hard. I could see a solution in the future where your bank sends you a memory stick with portable firefox installed on it and precisely one trusted certificate — the bank's. Of course, that means trusting the mail system, but since we already trust the mail system (e.g. using mailed statements for ID verification) we can't be worse off. An attack would require hijacking the USB stick _and_ your connection to the bank at the beginning of the same session for it not to be noticeable — not so easy.

</comment></comment></comment></comment><comment><USER9> It seems to me that data going over a publicly accessible network that is designed to let that data go by whatever route is necessary has been routed over a part of that network.

How is that a problem? You cannot expect your internet data to be private: the nature of the beast is that it will be public. Anything sensitive must be encrypted in such a way that by the time the encryption is broken by your enemy (considering the likely resources they have) the data is no longer useful.

Did I miss something?

</comment><comment><USER10> I'm a little bit surprised that peers did not have filters on inbound BGP advertisements. As an operator you typically don't trust most of your peers and only accept advertisements for ASs and network blocks previously agreed upon. Filters are modified manually.

The largest operators have peering links with no filters ("everyone is equal"), but that implies a lot of trust. And "trust" should not be a word placed next to a communist country name.

<comment><USER11> _And "trust" should not be a word placed next to a communist country name._

The word "trust" shouldn't be placed next to _any_ government.

</comment></comment><comment><USER12> RIPE stores every BGP update message sent through the AMSIX in an Oracle DB. I know this because I know the guy that does it. I don't know specifically about ARIN but we can safely assume they do the same.

Unless someone actually goes and looks at what was being sent by Chinese BGP routers at the time of this supposed outage they should STFU. I'm not saying this is definitely BS. But the article is seriously short on details.

</comment><comment><AUTHOR> Can anyone with more knowledge comment on plausibility of this?

Google Cache: [http://webcache.googleusercontent.com/search?q=cache:4lR05JZ...](http://webcache.googleusercontent.com/search?q=cache:4lR05JZoeUMJ:www.nationaldefensemagazine.org/blog/Lists/Posts/Post.aspx%3FID%3D249+http://www.nationaldefensemagazine.org/blog/Lists/Posts/Post.aspx%3FID%3D249&hl=en&gl=us&strip=1)

<comment><USER8> Presumably, a broken BGP advertisement. These days, they create breathless "news" stories like this one. Back in the '90s, when small-town ISPs managed to accidentally advertise short paths to huge chunks of the Internet, they broke the whole Internet. It's hard to get too wound up about it.

If you're worried that China is going to MITM your SSL sessions, remove their certificate from your cert store.

If I was a Chinese supercyberspy, I probably wouldn't do something as blatant as _routing the entire Internet to China_ just to get traffic I wanted. I think I'd do something much more akin to spearphishing an overseas Google employee to get onto their internal network.

<comment><USER13> "Also, the list of hijacked data just happened to include preselected destinations around the world that encompassed military, intelligence and many civilian networks in the United States and other allies such as Japan and Australia"

If this claim is valid, it would seem likely that the bad BGP advertisement was not accidental.

<comment><USER14> If it wasn't accidental, then I doubt it was a serious operation. Most likely a fishing expedition. Testing the waters to see what the reaction is and what data (or kinds of data) they are able to harvest.

<comment><USER15> China just validated that they can intercept trafic for malicious intent, with no international retaliation to speak of. How is that not serious?

<comment><USER2> "This happens accidentally a few times per year, Alperovitch said."

They aren't the only ones.

</comment></comment></comment></comment></comment></comment><comment><USER16> BGP could stand to get a security update but as with most fundamental internet protocols it will probably never happen. Most people seem to believe this incident was accidental. More info,

<http://bgpmon.net/blog/?p=282>

[http://www.nytimes.com/external/idg/2010/04/08/08idg-a- chine...](http://www.nytimes.com/external/idg/2010/04/08/08idg-a-chinese-isp- momentarily-hijacks-the-internet-33717.html)

</comment><comment><USER17> Interesting note about public keys that are automatically trusted by proprietary operating systems, and the potential for abuse by foreign powers. Reminded me of the discussion a while back about how it's relatively easy to become a root certificate authority in Firefox. Everyday cryptography needs some serious revamping.

<comment><USER8> The UI for everyday cryptography needs some serious revamping.

It's _not_ relatively easy to become a Firefox root CA, but too many people are, and part of the reason why is that your cert store configuration is buried deep in the "don't touch, no user serviceable parts" bowels of your configuration.

<comment><USER18> And how does one fix/change it?

</comment></comment></comment><comment><USER19> If you want more technical internet routing information, always look to NANOG. These two threads are discussing what happened, as it happened, by the people who are likely to fix/deal with it:

[http://mailman.nanog.org/pipermail/nanog/2010-April/020789.h...](http://mailman.nanog.org/pipermail/nanog/2010-April/020789.html)

[http://mailman.nanog.org/pipermail/nanog/2010-April/020865.h...](http://mailman.nanog.org/pipermail/nanog/2010-April/020865.html)

</comment><comment><USER20> I got a message alert in Gmail two days ago saying that my email had been accessed from China. I wonder if that was related.

<comment><USER21> It says that the hijacking occurred in April. Someone in China accessing your email just two days ago is probably just coincidence. However, it would still be a good idea to look into it (and change your password)

<comment><USER20> Thanks. I did change the password. A search indicates that something similar has been reported by others about every month this year. [http://www.google.com/search?sourceid=chrome&ie=UTF-8...](http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=gmail+accessed+from+china)</comment></comment></comment>


Direct3D team office has a Wall of GPU History - <AUTHOR> https://blogs.msdn.microsoft.com/directx/2019/01/07/wall-of-gpu-history/ <comment><USER2> Anybody know what the long monstrosity of a card was under the 1996 section?</comment>


Humble Book Bundle: Python 2019 by Packt - <AUTHOR> https://www.humblebundle.com/books/python-packt-2019-books <comment><USER2> Apologies to the authors, but anything from Packt is a hard pass.</comment>


Fojo - the ultimate camera app for your iPhone - <AUTHOR> http://www.infinum.co/the-capsized-eight/articles/fojo-one-of-the-most-powerful-camera-apps

<comment><USER2> -1 for disabling pinchzoom on mobile devices</comment>


Spelling Bee kids will have to know definitions - <AUTHOR> http://bostonherald.com/print/news_opinion/national/2013/04/spelling_bee_kids_will_have_to_know_definitions

<comment><USER2> Press release: <http://www.spellingbee.com/ruleschanges></comment>


Show HN: Firefox crack for linux – run unsigned addons without recompiling - <AUTHOR> https://gist.github.com/zb3/cfbb94e45d9318adcb63051a66a586ea <comment><USER2> It would be better to link to the project homepage, rather than the product hunt page:

[http://crxextractor.com/](http://crxextractor.com/)

This feels too much like "growth hacking" / product-hunt spamming.

<comment><AUTHOR> How is this related to my submission? Maybe this comment should be made here: [https://news.ycombinator.com/item?id=12332573](https://news.ycombinator.com/item?id=12332573)

<comment><USER2> Yeah sorry about that. I swear I commented in the correct location, and as you say it was definitely intended for the other story.</comment></comment></comment>


Can California Keep 7M People Indoors? - <AUTHOR> https://www.nytimes.com/2020/03/17/us/california-shelter-in-place-coronavirus.html <comment><USER2> Are we sure that the economic damage of the shutdown of the world economy out weighs the heath risks of the virus. Are we in group think here? A major recession/depression means a lot of people go hungry, lose access to medical care etc. Does anyone know of studies or research that looks at the health impacts of a shutdown vs. the health risk of the virus ? Just asking questions.</comment>


Next HNKansai Meetup: March 1st, Kyoto - <AUTHOR> http://hnkansai.org/

<comment><USER2> This meetup has no formal presentations planned but we already know that two members of the community will bring the following topics:

1\. programming and controlling quadcopters

2\. a chrome extension to push changes from Chrome Dev Tools directly to GitHub</comment>


CSS Flexbox in 5mins - <AUTHOR> http://devbryce.com/site/flexbox/

<comment><USER2> This is cool, but definitely took me longer than 5 minutes. I gave up halfway through. The tour should simply do these things for the user, and narrate it as it goes live. That would be impressive.

Giving us some funky interface and having us click through 52 slides, read them, and then do what they say but converting the couple of sentences of text into many clicks and drop downs? It seems cool, but I definitely gave up.</comment>


Vivaldi Is Quickly Becoming the Alternative Browser to Beat - <AUTHOR> http://techcrunch.com/2015/03/08/vivaldi-chrome-alternative-tech-preview-2/ <comment><USER2> We've seen a lot of these press releases reprinted as articles about Vivaldi this week, but despite their claims more features != catering to power users.

I'm a web developer, I spend at least 10 hours a day in a web browser. Usually several of them. Usually with several windows spread across several desktops, and a large number of tabs in each window. If you want to appeal to me, use resources efficiently. So far every metric I've seen of Vivaldi shows it is a memory hog.

They tout the idea that the browser comes with features which are only available as extensions in other browsers. That's not a feature. The browser should come with only absolutely essential features and the rest _should_ be extensions. I don't want my browser bloated with a ton of features I'll never use, and neither does somebody else who likes a different feature set than me. By trying to cater to everyone at once, you're actually making your product terrible for everyone.

</comment><comment><USER3> I'm fairly impressed with Vivaldi and I appreciate its roots greatly. I'm just a bit uncomfortable with its proprietary nature. I'm not a free software zealot, but I do make the effort to use free software when I can.

Not quite the same category, but if anyone is interested in a modern Opera- alike browser check out Otter : [https://github.com/OtterBrowser/otter- browser](https://github.com/OtterBrowser/otter-browser)

Their main website isn't loading for me at the moment (edit: must have been the network I was on, I'm connected to a different one now and it loads fine), but you can get a good deal of info from the Github. It's under active development and while I wouldn't replace Firefox with it yet I may very well at some point.

<comment><USER4> Vivaldi is free. It's just not open source.

<comment><USER3> Vivaldi doesn't cost money. That is not the same thing as being free. [https://www.gnu.org/philosophy/free- sw.html](https://www.gnu.org/philosophy/free-sw.html)

</comment></comment></comment><comment><USER5> Windows 7

Vivaldi 18.104.22.168 (Developer Build)

Empty startup: 217 MB

Tab with [http://redwolf.de](http://redwolf.de) : 28 MB Tab with [https://github.com/wchristian/Microidium](https://github.com/wchristian/Microidium) : 41 MB

Every new tab opened takes at least 28 MB, and pages with higher complexity use more. The progression is linear.

Simply put, they can put in as many features as they like, if they don't get the memory use in check, it'll be even less of an alternative.

However, since it is based on Blink, they're stuck with the memory profile of the exact same rendering engine as in Chrome/Opera 15, and can barely differentiate themselves by providing a different UI.

This is just the same thing as 10 years ago when everyone was making "browsers" based on an iexplore engine webview. As much as i want someone to take up the baton of Opera 12, this is not done by repeating the mistake Opera ASA did and forking Chromium.

<comment><USER6> The memory usage doesn't seem that bad for a modern browser that sandboxes each tab.

How do you suppose they reduce the memory consumption for each tab without being able to reuse many of the content between tabs?

</comment></comment><comment><USER7> Great to see Vivaldi getting traction and attention. I did not agree with the direction Opera was taken after they switched from the Presto rendering engine to Blink. Many of the features focused on power users were thrown out, and when users complained to Opera, they were told to wait on extension developers to fill in the gaps. Many people prefer not to have to install multiple extensions and therefore have to trust multiple extension developers. I hope Vivaldi is successful in filling the void left by the changes to Opera.

</comment><comment><USER8> I have to say that I tried Vivaldi a couple of weeks ago and found it too alien and unintuitive for my taste, both on the Mac and under Ubuntu.

In comparison, "mainline" Opera is (at least for me) not just faster than Chrome, but also refreshingly free of bundled crap (including Google logins and the like).</comment>


#Microsoft sued #FancyBear to gain control of the domains used in its campaigns - <AUTHOR> http://securityaffairs.co/wordpress/61232/cyber-crime/fancy-bear-lawsuit.html <comment><USER2> I'm not sure if it's the only reason that people keep flagging your submissions, but I suspect people are flagging them because they really dislike the use of hashtags in the submission title. The hashtags are not part of the titles and don't belong there. It looks like you have a habit of using them in your submissions and other people have a habit of flagging those submissions, maybe in response to that.

I found this article interesting and didn't know about this lawsuit before, so this submission was helpful to me. But I also don't like to see hashtags in HN submission titles.</comment>


Feynman's Letter to Wolfram - <AUTHOR> http://lostandcurious.blogspot.com/2007/04/feynmans-letter-to-wolfram.html

<comment><USER2> Here is the complete thing: <http://elzr.com/posts/wolfram-feynman> (including the original letter that Feynman was replying to)

<comment><AUTHOR> Oh, that's much better. Thanks. Funny that all my Googling only dredged up that barely legible photo.

</comment></comment><comment><USER3> Great find. There's quite a few things that are useful. Take for instance this quote ...

_"... One of the things he often said was that "peace of mind is the most important prerequisite for creative work." And he thought one should do everything one could to achieve that. And he thought that meant, among other things, that one should always stay away from anything worldly, like management. ..."_

The reason for this is thinking under stress is quite difficult and anything you can do to reduce it allows more thinking time.

        Q: Is a startup environment toxic for thinking?

So it's not surprising prime hacking time might be after hours in a room with the door locked away from distractions such as noise, offices and other people.

</comment><comment><USER4> Note the assumption at the end that you can't find love with someone with technical prowess.

<comment><USER5> Or that you wouldn't want to.

</comment></comment><comment><USER6> Here's the letter on Google Books: [http://books.google.com/books?id=HpgNSVS6fUYC&pg=PA390&#...</a>

</comment><comment><USER7> Well, Wolfram did create his own successful company, presumably working with other people, so this advice didn't turn out quite right.</comment>


CoronaVirus free speech category (open sourced) - <AUTHOR> https://upvotocracy.com/a/CoronaVirus <comment><AUTHOR> [https://github.com/profullstack/reddit-clone- svelte](https://github.com/profullstack/reddit-clone-svelte)

[https://github.com/profullstack/reddit-clone-api- js](https://github.com/profullstack/reddit-clone-api-js)

I found this old project using svelte and mongoose on github, but the OP was unresponsive so I forked it and added categories. I plan on adding some more features and making it easily brandable.</comment>


BugJuggler: plans for a 21 m tall robot that juggles cars - <AUTHOR> http://www.bugjuggler.com/

<comment><USER2> We had a hydraulic accumulator in the machinery for making MDF at work, and it scared the crap out of me. Priming it involved filling the reservoir with roughly 10 standard high pressure nitrogen bottles, and then compressing that further. The basic idea is that it is an air spring that you use to store energy.

I am ok with sitting in the stands while cars fly through the air, but I am not comfortable knowing that these three guys are going to make a big breakthrough storing that much energy, in a very unstable form and then put it near paying customers.

I have no problem believing that the first stage of the project can work, but this is the sort of thing that won't scale that well.

</comment><comment><USER3> Sounds safe.

</comment><comment><USER4> Hmph. Unless it can roller-skate too, I'm not interested.

</comment><comment><USER5> As a reasonably proficient juggler and a less than reasonably proficient roboticist:

The only functional juggling robot at any scale is housed inside a case and doesn't use an arm, it can juggle at exactly one width, and doesn't use any form of complex reverse kinematics.

There isn't any kind of "arm" on any scale that is currently capable of juggling (that I've seen anyway). Some get close, but the only videos are of slower forms where they get assistance from people or interact with people.

That also entirely ignores the physics of the situation. To get a 1000kg car to move up the 8 or so meters from catch to head height, and then catch it again, the forces are enormous. You'd need to apply nearly 80K newtons of force over a second or so to slow the object down on the catch.

</comment><comment><USER6> Not built yet.

<comment><AUTHOR> True, I edited the title to make that clearer and less click-baity. Thanks.

</comment></comment><comment><USER7> Though an interesting concept, from an engineering perspective, this sounds like a horribly bad idea.

Also, the project page doesn't seem to clearly get across how incredibly early stage it is. Their 8ft small scale robot arm is still conceptual...

<comment> jack-r-abbit What a joke. Their "prototype" video even says "Robot arm imagery is computer generated." How is that even a prototype?

</comment></comment><comment><USER8> That "haptic interface" is never going to work. How can you juggle without feeling your hands?

<comment><USER9> It's extremely hard at human scale. I worked on building human-sized walking robots, initially with hand controls, and I couldn't learn the eye-hand coordination needed to make it balance. Juggling is similar to walking in terms of speed and complexity of feedback.

However, the fact that it's so large means the time constants are longer. At 10x bigger than a human, each juggle should take sqrt(10) as long. So maybe it's possible to do with entirely visual feedback.</comment></comment>


Show HN: Split Optimizer – Affordable visual A/B testing tool - <AUTHOR> http://www.splitoptimizer.com/

<comment><AUTHOR> Hey guys!

I decided to create Split Optimizer to fill a gap (I think) in A/B testing services with low, affordable costs for small businesses and bootstrappers (like me).

It is very simple to integrate into your website and start testing straight away. If you want to see how simple it is, just check out this video I made [https://www.youtube.com/watch?v=k_eUmBK- Oak](https://www.youtube.com/watch?v=k_eUmBK-Oak)

Pricing is simple: first 10,000 page views are on me, after that each 5,000 views are just for 1$. No scammy fees for over usage, one simple formula.

Please email me at email@example.com, or comment here. Any suggestions are appreciated!

</comment><comment><USER2> Hey, nice tool. I especially like being able to click on the elements and edit "in-page". I've been building AB Press Optimizer ([https://abpressoptimizer.com](https://abpressoptimizer.com)) which is an A/B testing plugin for WordPress and have been considering adding similar functionality. Is it just Javascript or are you using a library? Anyway, good luck with it!

<comment><AUTHOR> Hi peacemaker, thanks for the feedback! It is just Javascript with Sizzle for jQuery like selectors.

</comment></comment><comment><USER3> Will be trying it this week on my site.</comment>


Vim.wasm - <AUTHOR> https://rhysd.github.io/vim.wasm/ <comment><USER2> I thought I was getting stuck in insert mode, and I got fairly frustrated before realizing my Vim keybindings browser extension was grabbing ESC and keeping it from this weird browser-Vim.

We brought this abomination on ourselves.

<comment><USER3>
      Ctr+[

Vim-ing on devices with not physical Esc key makes you get used to this (default configured, no extra keymapping required) Esc alternative :P

<comment><USER4> I really dislike shortcuts with `[` and similar keys. Design software also tends do use them. On a Portuguese keyboard layout[1], I need to press ⌥8 to get `[`. So shortcuts like ⌃[ become ⌃⌥8, which in vim produces `8`.

[1]: [https://en.wikipedia.org/wiki/File:KB_Portuguese.svg](https://en.wikipedia.org/wiki/File:KB_Portuguese.svg)

<comment><USER5> That's why I use the EurKEY [1] layout on all my machines!

This way I can use all the default US-based shortcuts for emacs/vim/... while still being able to easily type the special chars for my native language, e.g. pressing AltGr+o results in 'ö'.

This method is slightly inconvenient for typing long texts but for me it's still the perfect solution to such problems.

[1]: [https://eurkey.steffen.bruentjen.eu/start.html](https://eurkey.steffen.bruentjen.eu/start.html)

<comment><USER6> I was not aware of this, but found a similar solution that is available almost on any computer: On Linux (my main work environment) I use the English International with AltGr Dead Keys. This gives me a lot of European (and other) accents by combining AltGr+<Accent simulation key> <Letter on which to put the accent>.

Examples:

ä - AltGr+" a (the double quote looks visiually like 2 dots)

ç - AltGr+, c

õ - AltGr+~, o

and so on. I found this solution very practical, even if quite late in my life (went from German QWERTZ, to French AZERTY, to end up with QWERTY), because QWERTY is available everywhere, even if I have to work remote through Windows computers, and it is much much friendlier than AZERTY/QWERTZ. Additionally it gives me to write with the same layout German, French, Portuguese, etc. And it is very easy to remember how to get the accents, because the used signs are visually close.

</comment></comment></comment></comment></comment><comment><USER7> Does anyone know if lynx plans on supporting wasm? I'd like to try this editor in a terminal.

<comment><USER8> At this point, the easier route to getting a text-based browser to support something like this would be creating a new one based on WebKit/Blink.

It would probably need to get the engine to draw to a fake screen buffer and run an OCR algorithm over that. And even if the OCR and layout worked well, there would be a lot other work necessary to get reasonable text based interactivity, though that's probably partially solved by projects like Vimium. Some interactions like dragging would likely never be supported.

Not easy at all, but somehow more reasonable than updating lynx to support all of today's new technologies. I wonder if anyone's already tried something like it.

<comment><USER9> > _OCR_

Hey, dial back the blasphemy there. HTML is not PDF, it's usually made from text in the first place.

I'd guess you could force all text to use a monospace font, with fixed measures and line-height, and limit the width of the page. Then mostly dump the resulting text arrangement into the terminal.

Now, layouts from the various elements and CSS are probably a lot trickier, but snapping all margins and padding to multiples of a symbol's size should go a long way.

It seems that this could even be embedded at different levels in the browser: the layout engine or just the user's JS. (If JS can obtain the exact layout of text lines and elements―likely not, though, especially in forms. Maybe via devtools.)

<comment><USER10> > HTML is not PDF, it's usually made from text in the first place.

I don't know, man. Most websites would be smaller if they were replaced by a HD video of someone reading the contents.

</comment></comment></comment></comment><comment><USER11> The GitHub readme has a bunch of great content on it. [https://github.com/rhysd/vim.wasm](https://github.com/rhysd/vim.wasm)

</comment><comment><USER12> This is absolutely incredible. I never thought this would be possible-- wasm opens a new phase of software development and deployment.

<comment><USER13> Or just use regular Vim and not think that everything needs to run inside of a web browser, especially if you value user privacy and computer resources.

<comment><USER14> Would be nice to be able to use vim (or any other editor of your choice) in web text boxes.

<comment><USER15> This is the logic that makes everyone move their workflow into emacs. A lot of what we do is text editing, so having a good text editor everywhere makes sense. Some programs like mutt can also drop in to your editor of choice when composing an email. Imagine if we all had vim for typing up these HN comments. I'd like something like this to be more feasible. Maybe there could be a standard for forums that gives you vim editing in the same way many give you markdown. It could also be cool to support org-mode syntax.

<comment><USER16> Imagine if programs knew how to interact with one another and could plumb data between them instead of everything living in one monolithic application.

</comment></comment></comment></comment></comment><comment><USER17>
      :colorscheme
      unknown                       "that's weird
      :set file^I^I                 "I guess tab autocomplete doesn't work
      :set filetype=cpp
      i#include <iostream><Esc>     "I guess syntax highlighting doesn't work either
      :set tabstop=4 softtabstop=4
      i^I^I                         "at least that worked!

</comment><comment><USER18> Where's the escape key on my iPhone?

<comment><USER19> Try:

Ctrl and [

That should send the same as Esc (ASCII 27).

I seem to remember this working on a new iPad Pro keyboard.

<comment> no-such-address This is incredible. I think I needed this about 40 years when typing on a small Teletype (non-ASR33) without an escape key.

<comment><USER20> The reason is interesting as well. Paraphrasing from this blog post[0]

When you format the ASCII table in four columns, you can see `ESC` and `[` on the same row. Holding `CTRL` essentially ~lops off the first three bits~ subtracts 64, resulting in `ESC`

       ...
       ...
       0011000 CAN    0111000 8    1011000 X    1111000 x
       0011001 EM     0111001 9    1011001 Y    1111001 y
       0011010 SUB    0111010 :    1011010 Z    1111010 z
       0011011 ESC    0111011 ;    1011011 [    1111011 {
       0011100 FS     0111100 <    1011100 \    1111100 |
       0011101 GS     0111101 =    1011101 ]    1111101 }
       0011110 RS     0111110 >    1011110 ^    1111110 ~
       0011111 US     0111111 ?    1011111 _    1111111 DEL

[0] [http://www.catb.org/esr/faqs/things-every-hacker-once- knew/](http://www.catb.org/esr/faqs/things-every-hacker-once-knew/)

<comment><USER21> > Holding `CTRL` essentially lops off the first three bits

No, it inverts the 7th bit (or subtracts 64).

The Linux `ascii(7)` man page has a similar table, but with 2 columns. The first 32 control characters listed there have their "caret notation" character in the opposite column.

<comment><USER22> Is this why the symbol for Ctrl is also commonly the symbol for xor?!

<comment><USER21> I'm not sure. I think the caret is just a prefix to make it distinguishable from the normal letters.

It is the reason why Ctrl+i in a terminal is the same as Tab though. Likewise for Ctrl+m == Enter.

</comment></comment></comment></comment></comment></comment></comment><comment><USER23> This is pretty dope, but I'm terrified about the fact that Firefox lets it take over Ctrl+L, Ctrl+1, or any other way (that I can find, at least) of breaking out of Vim with a keyboard aside from closing the tab with Ctrl+W - which is even more terrifying since I use that in Vim a ton, too :O

...but this _is_ pretty cool :D

<comment><USER9> The actual issue is that Windows and Linux don't properly use a 'super' key―while the 'Win' key is sitting there uselessly.

Ironically, MS' own 'ergonomic' _(cough)_ keyboards have gigantic Win keys, right under the thumbs which are the strongest digits. These keys are _great_ to use on Mac, it's an eye-opener as to how the historical keyboard mutations ended up in just the wrong way for two platforms (and for Emacs).

I could also say some things about the nonsensical shape of keyboards and the moronic replication of the typewriters' staggered key layout...

<comment><USER24> I'd love to hear your take on the nonsensical shape and staggered key layout. Do you have suggestions for keyboards that do away with this?

I have myself been looking at [https://ergodox-ez.com/](https://ergodox- ez.com/) but I'd love to hear of alternatives, especially if you have first hand experience on them.

<comment><USER25> Hi, I have experience both with the ergodox and the now-discontinued Truly Ergonomic Computer Keyboard™. The TECK honestly has a slightly better layout for me - the two halves are closer together and seem to fit my hands just a bit better. On the downside, the TECK's hardware quality was atrocious with keys double-pressing or missing presses after about a year of use. It also uses its own microcontroller with its own closed-source firmware so there's nearly no community around it. I'm not sure I can politely explain just how much the TECK fails.

The ErgoDox on the other hand has been a joy to use for approximately a year now and its design allowing for wasy swapping of keyswitches plus its open- source firmware mean I have limitless customisability and am not stuck using low-quality chinese cherry-mx clones (kailh). I hear they've actually improved now, but the ones in the TECK were definitely subpar.

I use a split ortholinear keyboard because a standard layout keyboard makes my fingers hurt after a while. ErgoDox and TECK(while it worked) were both good enough for mitigating my problems while not being as exotic and unwieldy as a kinesis.

I would love to try out a [https://shop.keyboard.io/](https://shop.keyboard.io/) once (hopefully) the price comes down a bit.

<comment><USER26> As an avid mechanical keyboard hobbyist with an enormous collection of MX variants (I have 10 ortholinear keyboards in various stages of construction in my living room right now, and about 80 models of switches from various manufacturers), I would argue that kailh had surpassed cherry in quality and selection by a wide margin in recent years. You really should give them another try.

</comment></comment></comment></comment></comment><comment><USER27> I wonder if this will be useful for electron based editors like vscode's vim plugin. I know the plugin is "good" but I always find something that works in vim and doesn't in the plugin and end up going back to my terminal.

<comment><USER28> I heard that you could embed neovim for that sort of thing, since neovim has an ipc. I don't know how well the feature is maintained though.

<comment><USER29> I recently found Oni, which aims to be a web-tech UI for neovim. (The new version should even support the full VSCode extension API / ecosystem) [https://github.com/onivim/oni2](https://github.com/onivim/oni2)

</comment></comment></comment><comment><USER30> The timing on this is really interesting for me. I've been working on a full web vim product (plugins, multi-session, cloud storage, backup, etc.) and I'm pretty close to a beta product (POC is fully functional, just polishing a few rough edges). If anyone is interested in hearing more, email me at email@example.com

</comment><comment><USER31> Running on Firefox and `Shift` generates a `^P` character.

<comment><USER32> Same here, Firefox on Ubuntu 16.04.

</comment></comment><comment><USER33> Not sure if it's a bug or user error (not sure if writing is supposed to be supported yet), but after doing the following, the page becomes nonresponsive:

:o test.tx :wq I get an fsync failed error and I'm told to press enter or type a command to continue.

I can't do either.

</comment><comment><USER34> I am impressed that

        :imap jk <Esc>
        :imap kj <Esc>

works great. However it seems like outer and inner text objects aren't working at all. E.g. daw, ci)

<comment><USER35> is this a common key binding? I've seen it before and it makes a lot of sense but I'm wondering if I will run into issues. I don't want to disrupt my flow and muscle memory and later regret it.

<comment><USER36> Unless you type a lot of graph algorithms notes (and have to write "Dijkstra"), you rarely encounter the key sequence jk. It makes it easier to work with vim and never move to hit the Esc key.

<comment><USER37> That or you're writing in Dutch. Neither of ij, jk or even kj work in Dutch, because they are very common.

<comment><USER36> That's a very fair point! I hadn't considered this at all, I mostly write in English, and subconsciously assumed this would be true of most Vim users.

</comment></comment></comment></comment></comment><comment><USER38> Perhaps it's because I block web fonts but once I start typing little turds remain where the intro text was.

<comment><USER39> why do you block webfonts?

<comment><USER40> Same reason people block Google Analytics or Facebook Like buttons. Many fonts are hosted by fonts.google.com

</comment></comment></comment><comment><USER41> :! cat /etc/passwd

[blocked]

sorry can't help myself trying this. but good job!

<comment><USER42> It runs client side, though

<comment><USER43> It's nice when tools prevent you from pwning yourself :)

</comment></comment></comment><comment><USER44> I see many comments on broken key combinations. Obviously, we need to somehow overcome a UI/UX limitations of the applications that run inside a browser if we're moving into browsers with the consumer apps. I wrote a dedicated article on this: [https://database.blog/trello-hot- keys/](https://database.blog/trello-hot-keys/)

</comment><comment><USER45> sorry for being dense, but I can't seem to save files or do anything seemingly practical. Is there any practical use cases for this library, or is this purely along the lines of "Hey checkout this cool hack!"

<comment><USER46> When I was working on the Sage Notebook, circa 2007, I made the best textarea- IDE I could... folks requested vim and emacs bindings but browsers just weren't ready. Heck, I wrote my own javascript console because iirc only Firefox had one at the time, I digress... I look forward to a vim plugin for the IPython notebook!

<comment><USER47> I used this back in the day and it worked pretty well. Not sure how it cooperates with the newer Jupyter makeover but worth a shot!

[https://github.com/lambdalisue/jupyter-vim- binding](https://github.com/lambdalisue/jupyter-vim-binding)

</comment></comment></comment><comment><USER48> My test for "non-native" Vim is always 'q:' which should open a command line window of previous commands at the bottom of your screen - unfortunately that does not work.

Furthermore I can't use 'Ctrl-v' that let's you select a column of text (EDIT: correction, this _does_ work).

'q:' should not be captured by the browser? Nevertheless impressive work.

<comment><USER49> ctrl+v works fine for me (firefox windows)

<comment><USER48> It does not work for me on Firefox/Fedora (EDIT: it _does_ ). However 'q:' still does nothing.

</comment></comment></comment><comment><USER50> <ctrl-w>w closed my browser window. Should have seen this one coming.

</comment><comment><USER51> I was hoping :w with filename would download the contents :D

</comment><comment><USER52> Unfortunately it's not working on my android phone with hacker keyboard (full keyboard with esc). There are also horizontal lines across the screen that should not be there.

</comment><comment><USER53> Good work. Almost there.

Things that doesn't work starts from where you might need to change word "ciw", visually select word "viw".

</comment><comment><USER54> My take on vim web version: [http://exitvim2.win](http://exitvim2.win)

</comment><comment><USER55> Now I really can't quit the internet

</comment><comment><USER56> Trying to save errors out with "E667: Fsync failed" and then it gets stuck.

</comment><comment><USER57> How do Emscripten cross-compiled things and WASM compiled things handle the display? Is it a framebuffer they blindly draw to, do they need shim layers added to interpret normal output to window-scaled in-browser output?

<comment><USER58> In this example, author implements custom UI layer as it is described in readme "WebAssembly frontend for Vim is implemented as a new GUI frontend". Input and output is handled in JS side but core functionality resides on WebAssembly part. I am not familiar with Vim but probably I/O is well seperated from logic code so it might be easier to modify it to work on browser but I actually don't know how it is working for other applications.

</comment></comment><comment><USER59> Also see previous discussion about the code on the GitHub repo [https://news.ycombinator.com/item?id=17487936](https://news.ycombinator.com/item?id=17487936)

</comment><comment><USER60> Any plug-in support? Could I upload my vimrc to a server, then download it, apply it, and run :PlugInstall to get my vim setup in any web browser?

<comment><USER61> where would it store your plugins?

this is vim running in your browser, not some weird hybrid server-side vim thing that stores all your config files and plugins server-side in a per-user account but then transpiles them to wasm (regardless of plugin language) and sends them to the browser.

</comment></comment><comment><USER62> very cool, some of the set commands don't seem to work for me... set softtabstop for example didn't appear to work. also i might have a local setting but tab complete with set wasn't working... again probably local settings. and :w wtf didn't work :D seems to crash it. This is super cool

[update] ah i see from the readme write support is in the todo list.

</comment><comment><USER63> Why does it completely freeze on :w foo ? It asks for ENTER or any key but that doesn't work at all at that point.

</comment><comment><USER64> pretty fun as an experiment. It would be so cool if someday github/gitlab had this as an option for editing files

<comment><USER15> I think this is why a lot of people still handle issues via email. It integrates well with the classic text editors.

</comment></comment><comment><USER65> On mobile I see a blank gray page. Perhaps this only works on desktop browsers. I still have no idea what it is.

<comment><USER39> I imagine vim wouldn't be very optimized for mobile.

<comment><USER65> When I clicked on the post, I figured it would be some sort of vim plugin etc. Hopefully they can update the site to show a banner or some indication saying what the site is (vim in a browser?) and that it doesn't support mobile browsers.

</comment></comment></comment><comment><USER66> Think I crashed it. Did a :w foobar and got an error and the page was stuck, with the computer fan ramped up.

</comment><comment><USER67> i had to turn off adblock plus and ublock origin to get this to work for some reason

</comment><comment><USER63> Will wasm ever use html/css properly? Or will it just be more like flash?

<comment><USER68> It can already interact with the dom and people are working on making this more seamless and faster.

The real question would be: why would you do that when you can instead use any proper native UI toolkit?

Answer: it's now a choice. If you need command line stuff like vi running smoothly in a browser, the DOM is an obstacle, not a solution. If on the other hand you want a wasm application driving the DOM and generally looking and feeling like a web app, you can do that as well. There are several frameworks emerging for rust, kotlin, C#, and other languages that do exactly that and that use bindings for the DOM and other APIs you have in javascript in a browser. Basically, you are writing normal dom/html/css based applications; except it all compiles down to wasm and does not involve any javascript.

</comment></comment><comment><USER32> I can't save.

:w test

"test" E667: Fsync failed Warning: original file may be lost or damaged.

</comment><comment><USER69> :q! is not working! Help, I can't exit.

But seriously, this is great work.

</comment><comment><USER70> Try inputting some diacritics, it breaks spectacularly.

Just tried ą ę ł etc ;)

</comment><comment><USER71> Next step will be to bundle this in an electron app.

</comment><comment><USER72> Does this get us any closer to being able to edit text fields using vi keybindings? I've tried some of the plugins (long ago) and was underwhelmed with the experience.

<comment><USER73> Try out qutebrowser. Still some shortcomings, but I've switched to it for daily use.

</comment></comment><comment><USER74> Is there a good iOS port of Vim available?

<comment><USER75> iVim by Boogaloo

[https://github.com/terrychou/iVim](https://github.com/terrychou/iVim)

</comment></comment><comment><USER76> What is the use case for this?

</comment><comment><USER77> Vi, the original roguelike.

</comment><comment><USER78> This is so cool! Well done!

</comment><comment><USER79> Why was wasm used for this? It's not a javascript replacement as stated by webassembly.org.

<comment><USER80> Because it's a pure port of Vim, which is written in C.

</comment></comment><comment><USER81> How can i save a file ?

</comment><comment><USER82> Lol. Why no :Explore?

</comment><comment><USER83> Fucking touchbar.

</comment><comment><USER84> Don't do :wq

<comment><USER85> Or try to change splits

</comment></comment><comment><USER24> Sounds like a great fun little project. Shame it doesn't work.

</comment><comment><USER86> diw or ciw doesn't seem to work :(

</comment><comment><USER87> Looks good!

How can I close it?</comment>


NMOTW – Weekly hand picked node modules - <AUTHOR> http://nmotw.in/subscribe/

<comment><USER2> Why were the specific modules chosen?</comment>