HNHacker News
TopNewBestAskShowJobs

mhernandez1988

152 karma · joined November 13, 2014

submissionscomments
mhernandez1988··on JankyBrowser: The only cross-platform browser that fits in a Gist
True, i say publish it, this package is a hell of alot better than most of the crap on npm.
mhernandez1988··on Thrust: Chromium-based cross-platform, cross-language application framework
al2o3cr, actually no. There are a load of difficult implementations needed to achieve even the most basic webbrowser, even when building on top of the already great chromium content lib. For instance, Thrust's predecessor ExoBrowser failed where Thrust is succeeding, thankfully we have progressed to a state of composability where we can take the work of others before and compose it into something useable for the world. The 500 something commits to Thrust were no simple feat, and their are many more to come.
mhernandez1988··on Thrust: Chromium-based cross-platform, cross-language application framework
One could use c++ instead of Python/JS/Go, I would however recommend still using the JSONRpc bridge to communicate. I would not recommend using c/c++ at all, as Atom.io has proven more modern garbage collected languages have become so incredibly fast that c/c++ are primarily distractions unless you are a master of the incredibly huge ecosystem and can sling code together fast without having leaks, pointer issues, and a host of other security issues.

At a minimum, I would recommend using Go or NodeJS with a C binding for any extremely low level operations you would like to achieve, that would make everything much more suitable, you would also benefit of the ecosystem of modules.

mhernandez1988··on Thrust: Chromium-based cross-platform, cross-language application framework
Essentially yes, you can import python modules into go-python and expose their API's via WebSockets to Javascript.
mhernandez1988··on Thrust: Chromium-based cross-platform, cross-language application framework
Yes. In some cases ive experienced both. Sometimes it installed sometimes it did not.
mhernandez1988··on Thrust: Chromium-based cross-platform, cross-language application framework
Apologies to all, we are restructuring the application to work better with go get. You can try with the -d flag to avoid building files. this should download the application to the proper gopath. then you can use the instructions from the go-thrust repo homepage.
mhernandez1988··on Thrust: Chromium-based cross-platform, cross-language application framework
As well as go get -u {urltopackage} go install
mhernandez1988··on Thrust: Chromium-based cross-platform, cross-language application framework
Now to add some more context, Thrust's predecessor (ExoBrowser) still used embedded NodeJS, this made it incredibly difficult to package native modules with applications. The Thrust team learned from the mistakes of the past and decided to try to simplify the stack as much as possible to allow true composability.
mhernandez1988··on Thrust: Chromium-based cross-platform, cross-language application framework
Node-Webkit is hacky at best. Atom-Shell is a major improvement on Node-Webkit, however not quite there. Native modules need to be compiled for a completely different target.

Thrust takes it a step further, improving on the past. Thrust uses the same backing library as Atom-Shell (brightray) to expose the Chromium Content Library.

Thrust is cross-platform cross-language. Use a similar familiar api from any language you want, or roll your own. No need to use javascript on the backend if you dont want to.

For example, Go-Thrust can compile, this is a particular advantage for distributing applications.

mhernandez1988··on Thrust: Chromium-based cross-platform, cross-language application framework
Correct, there have also been other similar implementations along the same vain, but they all attempt to inject one technology into another. Thrust takes a different approach, it is itself the chromium content library, with some added libraries, and an rpc interface. This allows it to be used without forcing another library implementor to `inject` their code into it.