The Ties That Bind Facebook's Libra - <AUTHOR> https://www.wired.com/story/ties-bind-facebooks-libra/ <comment><USER2> "Hey, look at how many people have connections with or have collaborated with other people in this same industry even though they're at different companies now." Um, ok. That's kind of how the world works.

But I did find one quote interesting:

> The Senate is a deliberative body with 100 members, each of whom has a > single, equal vote," she adds. "But I've seen quite clearly that an equal > vote is not the same as an equal say. So I have real concerns about who will > get to ask the questions, who will get to set the agenda."

Because there is a lot more to governance than just casting votes. But the article didn't go into any detail about what membership in Libra actually entails (maybe that's already been covered?)

<comment><USER3> Indeed: the actual votes are among the least important parts of it. It's not whether you're voting up or down on something, but precisely what that something says. The actual vote is generally a foregone conclusion. The writing is, like any other collaborative document, a vast exercise in managing people's differing priorities, both on this issue and in other outside issues.

</comment></comment><comment><USER4> I don't really care what Libra is on launch. What I really care about is the potential of the technologies behind Libra and what Libra can become.

The most decentralized and trussfree system right now is probably Bitcoin, which I wouldn't say it is decentralized on day 1. But it is the fundamental of what we have today (which I admit it isn't that much), and what we can achieve tomorrow. It is the potential excites me.

People doesn't need to trust FB, or any other companies relates to FB. But you can audit the open sourced code and evaluate how much do you want to trust the code. This is simply not possible with traditional technologies. So I will say it is a net improvement. As long as it is not a regression, I want to see it happen.

<comment><USER5> "People doesn't need to trust FB"

They have an aspiration to decentralise it at some unspecified time in the future. So maybe you don't need to trust them then, (maybe we still will, the devil us in the detail). Up until that point, we do need to trust them.

<comment><USER6> I feel Facebook is a corporation with obvious bad motivations (trying to avoid the loaded word "evil" here) and should not be trusted with anything at all, they've repeatedly shown that "trust" means nothing to them.

The thought and implications of FB having any type of control over the financial system, the very foundation of our current society, are absolutely horrifying to me.

</comment></comment></comment><comment><USER7> I like to hate on Facebook as much as anyone but there's a fairly obvious explanation for this situation: of the 100 or so organisations that initially expressed interest, the 27 organisations that have so far formally joined are more aligned with Facebook. It's an easier decision for them so they acted more quickly.

With PayPal pulling out and governments expressing concern, it will come down to what well known financial institutions like Visa and Mastercard decide to do.

If they still sign on, I'd hope the balance will be much better by the time they hit the target of 100 founding members. Time will tell.

It'll be interesting to see how far Facebook can push this if other organisations bail out.

That said, I don't for a moment believe that Libra exists for the greater good.

<comment><USER8> Not one of the 27 has formally joined. All have merely expressed interest, via letters of intent

</comment></comment><comment><USER9> This would be like a bunch of bean counters working at an accounting firm trying to be part of the hippie movement and put on their own Woodstock. "independent", "anti-establishment" my ass.

<comment><USER10> It doesn't need to be anti-establishment, or some sort of decentralised nirvana. It just needs to be better than the awful, awful, awful state of international money transfers.</comment></comment>


Making voice calls in Slack - <AUTHOR> https://get.slack.help/hc/en-us/articles/216771908 <comment><USER2> Let's hope co-working center remain quiet, coworking centres its the obligatory 50% procrastinating on facebook (top blue bar), then 25% on slack (purple left side) and the rest possibly doing some work. At least with phone (and skype on phone) people take their calls outside or to a booth</comment>


Ask HN: What's your favorite GitHub project mascot? - <AUTHOR>

<comment><USER2> How about we start with yours.

<comment><AUTHOR> [https://github.com/libuv/libuv](https://github.com/libuv/libuv)

Maybe not my all-time favorite but a recent one that I liked!

</comment></comment><comment><USER3> Octocat</comment>


Ask HN: Building an automated headless YouTube upload server with v3 API - <AUTHOR> I have very poor rural broadband, ~300Kbps up max. Uploading even a 100MB video takes an hour.
I want to use a Pi to build an automated upload server that will silently upload videos overnight. I have a working Python script to upload, pulled from the API docs, but want to take it to the next level.
I am aiming to create a web interface to upload videos. Select a video, it pulls across network to the Pi and the Pi then uploads to YouTube overnight. Adding another video should queue it to upload after the first one. Going to the web interface again should display the upload status.
My question is how to get this working in the background. Either I call a Python script from PHP and use nohup and & for background or I upload from PHP (preferred). But surely this will hit max runtime limits and fail?
I'd like some guidance on this architectural decision. I have the basis of the app - videos stored to a sqlite so status can be retrieved - and video upload to the Pi. I now need to find the best way to upload to YT, with a queue system so uploads are handled in order, and in the background. Uploads must continue after the browser is closed and the server needs to run headless. <comment><USER2> First of all, is a web interface absolutely required? It adds a lot of complexity to something that is no more than a couple of lines of Bash glue. For monitoring, you can just keep an SSH session to the Pi.

How i would do it, requiring no user input:

* Designate a hot folder on the NAS, where i put all the videos to be uploaded.

* Establish a list of what has been transferred (nothing initially).

* From the Pi, poll the NAS folder for files that haven't been transferred yet.

* If a file is found, cat file | curl --data-binary @- POST it to YT.

* On success, record the transferred filename.

* Continue polling.

Of course, you can quite easily bolt-on a web interface to this, by exposing some of the steps as API endpoints.

<comment><AUTHOR> Something like this was actually my original idea - just monitor a directory for changes. Then I've still got the issue of running this in the background, constantly, though, so the uploads occur automatically and keep running in background even after user logs out. (Monitoring is not as important as headless uploads)

<comment><USER2> That shouldn't be an issue, why aren't you using tmux/screen in the first place? It's what most people use to persist sessions across logins (and much more, like terminal multiplexing). I personally use Byobu with the tmux backend on all my servers.

If you don't want to use extra software, a simple cron job running every minute would suffice.</comment></comment></comment>


Digg dumps Shouts for Facebook, Twitter and email  - <AUTHOR> http://venturebeat.com/2009/05/26/digg-dumps-shouts-for-facebook-twitter-and-email/ <comment><USER2> I have memories of annoying developer no. 2 endlessly quoting Dave Winer's platitude about "sending away users to make them return." SBW (<http://sbw.org>) was right again.

Listen to your most annoying developers.

<comment><USER2> And as an aside, if we ban valleywag, shouldn't we ban ex-valleywag writers writing valleywag-like content?

</comment></comment><comment> brown9-2 I have never heard of "Shout" before reading this article.

</comment><comment><USER3> I'm confused. How can Twitter be "invading" Digg? Didn't Kevin Rose invest in Twitter? If my memory serves me correctly, he mentions his investment in this video. <http://www.vimeo.com/3934635>

He also started WeFollow, the Twitter directory. <http://wefollow.com/>

</comment><comment><USER4> good, this feature seemed to only be used for <del>spam</del> relentless self- promotion.</comment>


Is the Solar System Really a Vortex? - <AUTHOR> http://www.universetoday.com/107322/is-the-solar-system-really-a-vortex/

<comment><AUTHOR> It's not often you get to hear an astrophysicist say "...then we're all buggered."</comment>


On-die GaAs LED matrix made by hand (1969) - <AUTHOR> https://www.youtube.com/watch?v=HnMjoitdRRM&t=8m30s

<comment><AUTHOR> This link was found here:

[https://www.reddit.com/r/electronics/comments/2xhofi/1969_to...](https://www.reddit.com/r/electronics/comments/2xhofi/1969_tomorrows_world_video_segment_showing_a_5x7/)</comment>


The Road to Ember.js 1.0: Final Release This Weekend? - <AUTHOR> https://github.com/emberjs/ember.js/issues/3246?utm_source=javascriptweekly&utm_medium=email

<comment><USER2> Im just getting settled into Rails and will intro myself to a js framework in a few weeks. For employment purposes: Ember or Angular?

<comment><USER3> Honestly, if you're just starting out, go with Backbone. Start there, then add marionette to the mix. From there it'll be a lot easier to understand ember or angular. Ember will feel a lot more natural from that point though.

The reason is, don't get confident in magic. Learn good OOJS, then learn what some simple helpers can do. At that point, you'll understand the magic of angular and ember better. Maybe others won't agree, but, as an anagoly, you really shouldn't jump into android development before you have a good handle on java.

<comment><USER4> After Backbone, as you start to get into the realm of dozens and dozens of models, which is more appropriate?

I've heard Ember is better for "data/model-driven" apps whereas Angular is better for "interaction-driven" ones. Is this an appropriate analogy? I wish I had the time to explore both for their own merits.

If you were going to develop the next Gmail, which would you choose and why?

</comment></comment></comment><comment><USER5> ember sux.. its way over designed.. use angular

<comment><USER3> I can see your account was created 3 minutes ago. How childish can you be?

<comment><USER6> What's more, judging by his karma people are upvoting this shit...</comment></comment></comment>


Hyenas of the Security Industry - <AUTHOR> http://seclists.org/dailydave/2010/q2/58 <comment><USER2> Another round of navel gazing and arguing over the best way to self-promote from the security industry talking heads? Color me shocked.

More seriously, some people disclose privately, some people disclose publicly, others don't disclose. What value does a standardized take on disclosure add to the security industry?

</comment><comment><USER3> Vendors don't want the bother of dealing with vulnerbilities and are unlikely to voluntarily pay those who discover them. It is up to researchers to use leverage to induce vendors to take responsibility for their oversights. Researchers should make the pain of vulnerbilities such that, due to public embarassment and resulting loss of sales, vendors are motivated to compensate.

</comment><comment><USER4> tptaceck?

<comment><USER5> Yeah, this mail is a big deal. Lots of people talking about it.

I like lcamtuf's take on it best:

[http://lcamtuf.blogspot.com/2010/06/not-disclosure-debate- ag...](http://lcamtuf.blogspot.com/2010/06/not-disclosure-debate-again.html)

<comment><USER4> Yup.

      > Nobody in this debate is particularly forthcoming (Spengler
      > included, as much as I enjoyed his post), and no solution
      > is perfect. Only one of these groups has PR departments, though.

Also Spanglers response on the comments is important:

      > I commented specifically on the 'de-evolution' of "responsible
      > disclosure" into something where it's deemed irresponsible
      > if a researcher doesn't allow a vendor to sit on a vulnerability
      > for as long as they feel like.</comment></comment></comment>


Play - JSFiddle for ElasticSearch - <AUTHOR> https://www.found.no/play/

<comment><USER2> Oh hey.

I'm the developer that's been working on Play. There's some more information about it here: [https://www.found.no/foundation/presenting- play/](https://www.found.no/foundation/presenting-play/)

In summary, it's a preview - neither feature complete nor bug free, and it badly needs some better getting started material. We wanted to get it out there as we think it's quite useful already, however.

We've pledged to open source it, and that's something I'll be working on in not too long, I hope. First out will probably be the search editor, which is something that's quite useful to run on a real cluster.

Happy to hear any and all constructive criticism. :)

<comment><AUTHOR> Hey mate, I saw it from you answering my question on SO and have been having a play with it.. I really like it (even though I'm still struggling with my query!) and thought it deserved to be shared :)

<comment><USER2> Hehe. Thanks for the vote of confidence. :)

(Tip: You can auth with Github by clicking the octocat-icon, so you can save revisions of your query and get history through the gist. An often-missed feature I need to make more obvious. :)

</comment></comment></comment><comment><USER3> This is great! I used Sense (chrome extension that does something similar) to define my Elasticsearch behavior a few weeks ago, but this looks like it has more going on so I'll definitely bookmark it and pull it up next time.

</comment><comment><USER4> It looks very nice, but I'd kill for more contrast!</comment>


Why I'm staying in Afghanistan - <AUTHOR> http://www.theguardian.com/world/2014/nov/08/the-expats-who-call-afghanistan-home

<comment><USER2> > To Father Moretti's Afghan friends, the bishop of Kabul is "mullah sahib", a > token of respect for his status as a man of God, even if his God is not the > one they believe in.

This always annoys me, given that it is a central part of Islam that its goes back to Christianity, that it shares the same god as Judaism and Christianity, and that Jesus is a prophet and bringer of Gods word.

Christians, Jews, and others who includes the Old Testament / Torah in their holy texts are explicitly called out as "People of the book", and are explicitly given the opportunity to enter heaven if they believe and are good people.(While poor atheists like me are condemned to burn in hell). The Quran makes a rather big deal out of this, since presumably it was an important recruitement tool.

So it should not be surprising that a Christian priest is treated as a man of God by muslims, as long as he is not proselytizing, as conversion from Islam is a big deal.

Christians seem to very rarely realise just how much of muslim faith is lifted straight from the Bible.

<comment><USER3> > Christians seem to very rarely realise just how much of muslim faith is > lifted straight from the Bible.

Couldn't you say a similar statement about Christianity lifted from the Torah? The first half of the Bible is just from those stories if I remember correctly.

<comment><USER2> It's a bit different. Islam acknowledges the Torah as a holy script - it is explicitly mentioned in the Quran. Repeatedly. While exactly pointing out that it is a common source for Christianity, Judaism and Islam.

The Christian Bible incorporates the Torah pretty much in the form of the Old Testament..

However when I mentioned that muslim faith is largely "lifted" from the Bible, part of my point is that Islam goes further: A lot of the Quran itself consists of fragments of Biblical stories adjusted to fit the message the Quran is intended to convey. Whereas the New Testament of the Bible is reasonably original in content (the Old Testament / Torah borrows from all kinds of preceding religions), in the Quran, the Bible references are woven in all over the place.

Of course this makes fully sense under the muslim premise that Jesus was a prophet, and that the Bible is simply an imperfect version of Gods word, whereas the Quran is intended to be Gods actual words dictated word for word to Muhammed - even if the Bible has been "corrupted" by human retelling, it'd make little sense if the Quran was "all new stuff".

But a lot of christians have no idea how many of "their" stories that muslims also believe in, and just how closely the two religions are related. Some I've talked about the subject with even finds the idea preposterous and offensive, which is just bizarre.</comment></comment></comment>


Show HN: Trio, 50% better than Pair - <AUTHOR> http://trytrio.com/

<comment><USER2> Check out their "investor", too!

<http://mudmtn.com/>

</comment><comment><USER3> I love these parodies. I feel like developers spend too much time "making money" and not enough time sticking it to the man.

I hope this gets built into something tangible.

</comment><comment><USER4> From the site's footer:

"Trio was lovingly handcrafted by a team of artisinal craftsmen in San Francisco's vibrantly gritty Mission District."

WOW, that's a sentence.

</comment><comment><USER5> The demo link left something to be desired :(</comment>


Things Reacters do that Re-framers avoid - <AUTHOR> https://purelyfunctional.tv/article/react-vs-re-frame/ <comment><USER2> By chance, I stumbled upon this same article a few weeks ago while re-learning React and learning Redux.

I didn't get much out of the article since gripes 1-5 are all solved by Redux, and 6 is a complaint about Redux having too much boilerplate.

It also seemed to me that mapStateToProps and mapDispatchToProps aren't given a fair representation in this article (especially with the "selector" pattern emerging within them). If your Redux store is denormalized already, then yes, mapStateToProps will seem quite redundant. However, if you're working with multiple sets of async data, it's _much_ easier to organize your store by fetch method and denormalize inside mapStateToProps.

<comment><USER3> Having to use something like Redux, conceptually solid but so full of boilerplate, instead of re-frame is kind of like having to use Java at work instead of Clojure.

Some of us are just lucky, I guess.

<comment><USER4> So true. Some of us are lucky enough to use a concise language like clojure. I am really asking myself why lisp and functional programming in general are not really taught in schools.

<comment><USER5> Functional programming is taught in schools. Sometimes even with lisp. Students unvirsally seen it as impractical theory.

The popular ressurection of functional on frontend is relatively new development. Before, it was used only in few math related areas.

<comment><USER6> Functional programming is widely used in finance.

<comment><USER5> I would count that as one member of "few math related areas".

</comment></comment></comment></comment></comment></comment><comment><USER7> > 1\. Reacters load data on mount. I want my Views to be pure. They need to > take some data and output DOM.

At least this item comes off as a straw-man argument. Reacters also want their views to be pure. They do not typically load data in presentational components, and it can be easily avoided.

That said, granted: Clojure, Elm et al. achieves purity and immutability in a simple and clean way JS/React/Redux can only approximate. The latter is for the dirty pragmatists among us, I guess.

<comment><USER8> Somewhat strawman, yeah. But it still seems valid - React allows you to do this, and you do see it in the wild.

People who have been bitten by it (or read enough best-practices stuff to avoid it up-front) will know better and won't do so, but _you have to know better_ \- that's kinda the central point in here. React has more footguns, and the article is arguing that they're unnecessary / things end up worse than if they weren't allowed, without losing flexibility.

</comment></comment><comment><USER9> This article fails to understand what components are in React. They are the building blocks for every aspect of an application. My data stores are components, my views are components, my styles are components.

The author obviously comes from an MVC background where a component is one specific aspect of an application, and enabling it to do all these other things seems sacrosanct. But they've got it backwards.

Think of a React component on the same level as a function: we design our functions as purely as we can, but it's not the function's fault if it's written poorly.

<comment><USER10> The author also mentions why they see this property of React as a problem.

This is just like earlier versions of Java which didnt have enums or lambdas, but used classes for everything. See what's happened now.

</comment></comment><comment><USER11> Mobx / rxjs solves a lot of these problems for those of us who can't use cljs or elm because our clients are afraid of them.

<comment><USER6> Why do you let your clients make your technological decisions?

<comment><USER11> Because they are paying me and therefore it's not my decision. I give advice but if the client insists on something that's what they get.

</comment></comment></comment><comment><USER12> I've built a lot of apps with React/Redux, both complex and simple ones.

At first there were lots of boilerplate code, and lots of kind-of-similar-but- different code all around. After each project, I extracted and generalised the helper components/methods/systems to create my own 'framework', and now I have a foundation that eliminates most of the pain points that people experience with react/redux, that's specific to the way I develop software. Thats why I love React and surrounding ecosystem, it allowed me to choose the relevant libraries/solutions that fits my workflow.

Here is my thoughts about the points in the article:

1\. Reacters load data on mount

In my components, I just declare the data that it needs, and the relevant system loads the data and sends it to the component via props. (like Relay) No requests happen in the component directly. When you have only a few components that needs data in your app, fetching it in the component works, but when you have a complex app (I build ERP systems) you need a centralised way to handle data fetching.

2\. Reacters register a bunch of event handlers in their components

Declarative event-binding works great for me (similar to react-event- listener[0]). Instead of adding the subscribe/cleanup logic to every component, I just declare the events I'm interested in, and just add the relevant handling code to my component.

3\. Reacters optimize when to render

Using redux and never overwriting the store takes care of this for me.

4\. Reacters load data when stuff changes

Same as 1., yon can declaratively state what you need, and the relevant system can handle the rest of the logic without changing anything in the component.

5\. Reacters worry about when to set state

I'm not sure if this is really a problem, especially when you learn how the lifecycle hooks work.

6\. Reacters use a lot of Redux boilerplate

Redux has a goal to keep things simple, and let users choose the relevant 3rd party solution to your needs. It means that you need to do some work to create a no-boilerplate solution, but in the end it will work flawlessly according to your needs.

In my 'framework', I generate the store definitions and action handlers for my database models automatically from SqlAlchemy model definitions, thus eliminating 95% of the boilerplate.

I know that there are frameworks out there that eliminates the need to create your own solutions to most of these problems, but I've found out that, when you try to go out of the 'blessed' path, you will be banging your head to the wall more times than you want. With building my own solutions around the react/redux, I'm in control of the things that I care about. When you control the 'magic' part of the stack you use, you have a lot of power in your hands when problems arise.

[0]: [https://github.com/oliviertassinari/react-event- listener](https://github.com/oliviertassinari/react-event-listener)

</comment><comment><USER13> What about setting a value deeply nested in your state when you change something in a deeply nested component? What if that value is inside an array?

<comment><USER14> Only the portion that changes will be rerendered because of the way Clojure shares nested data structures when there are changes.

<comment><USER15> Not quite: while Clojure does share nested data structures, and that does allow for some neat tricks around fast comparison operations, the fact that only changed SUV trees rerender is all due to react, and its shouldComponentUpdate. A normal js app can get the same results, if it wants.

</comment></comment></comment><comment><USER16> How would this work in re-frame:

Let's say I have a box with 1000 items. It will take some time to load, so those 1000 items should not be painted in one go (freezing the UI), but instead be shown incrementally, from top to bottom.

Imagine that while it is loading, I can click a "delete" button on one of the items, so that item would disappear while the list is still growing at the bottom.

<comment><USER17> You create a virtual list, only rendering the items visible in the viewport. Use intersection observer or scroll events to find out when you're about to go past the selected item.

<comment><USER16> Doesn't that cause either stuttering, or flickering in the viewport?

<comment><USER18> When I did this back before ajax was a thing, it was by using image elements that were moved like a treadmill, we managed those so that there was a buffer outside the screen area that was pre-filled to avoid stuttering. Essentially we rendered ~1.5 screens wide / long and would fill them in a non-blocking way when the buffer was reduced.

<comment><USER16> But when you click the scrollbar and drag it down, you can easily make the viewport scroll by more than 2x its height in a matter of milliseconds.

I experimented with this myself, and the UI designer I worked with thought it was not pretty when the screen turned blank while scrolling rapidly.

The problem I had was that painting the items in the viewport took already more time than the allotted time per frame.

<comment><USER19> This means the code has issues. I have virtualized data grids holding thousands of records with each cell incorporating d3 visualizations and this does not happen.

<comment><USER20> Do you have a link you can share?

<comment><USER17> react-virtualized [0] is a great implementation of a virtualized list using ReactJS.

[0] [https://bvaughn.github.io/react- virtualized/#/components/Lis...](https://bvaughn.github.io/react- virtualized/#/components/List)

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER21> I agree that reactjs would have been better without setstate, instead with tightly integrated Redux, which would remove much of the Redux boilerplate.

For the most part, this is what this reframe thing aims at as far as I can tell.

Setstate really should be long term deprecated, it's a design error in react.

<comment><USER22> No, it's really about knowing what is global and what is local. You have plenty of things for which local state makes sense.

<comment><USER21> True, but ideally the framework would lead programmers automatically to ways of doing things in the "right way" instead of overusing local state.

A "better react" would make it natural and obvious to use store versus local state in the appropriate way.

<comment><USER22> Well, that's not really the idea behind React. You could say local storage is more a convenience than anything, React is primarily about rendering your data.

The problem is that, with Redux at least, composing data stores is a major pain. The only pattern supported out-of-the-box is horizontal slicing (have different reducer for separate pieces of data). This may work for separate pages, but it does nothing for you as soon as you need data sharing. I don't think React itself should change, but I haven't found a really satisfactory solution to the problem of sharing stored data.

</comment></comment></comment></comment><comment><USER20> How do Re-framers handle components that wants to redraw using a timer, such as an animation or progress bar?

<comment><USER23> you would normally start setInterval/whatever function somewhere and you dispatch the change to re-frame when needed. Reframe will update the db and the components subscribing to that data will redraw when a change occurs. The component(s) themselves have no coupling whatsoever to what is providing the displayed data.

</comment></comment><comment><USER24> 'componentDidMount' doesn't exist anymore in React es6.

<comment><USER25> It still does (these docs use the ES6 class API): [https://facebook.github.io/react/docs/react- component.html#c...](https://facebook.github.io/react/docs/react- component.html#componentdidmount)</comment></comment>


Show HN: Prove the Work – Flexible engagement in the marketplace of ideas - <AUTHOR> https://provethework.com/ <comment><USER2> Love the idea, have you looked at hashr.io? Could you add your contact details on the site? Also add details of timestamp on the message. Maybe tag @patio11 on twitter?</comment>


The Boundary Between Hardware And Software - <AUTHOR> https://www.gnu.org/philosophy/hardware-software-boundary.html <comment><USER2> Hi, I write HDL for FPGAs in my day job. Programming an FPGA in C seems like a fundamentally bad idea to me.

C is a procedural language. Most languages are procedural to some degree, but C is entirely sequential. Digital hardware, unlike a C program, is entirely concurrent. When you write HDL for hardware, you're not really writing a program, you're _describing_ the hardware layout itself. Really it's closer to making a logic gate or circuit diagram. HDL doesn't "run" like a software program. It just exists on the FPGA. That's the design, and it doesn't change once it's programmed on the chip. As such, the only "procedures" in hardware are from causality from something that happened in the past in the same hardware, either from a different part of the circuit, or the same part in a clocked design.

So what would be a good tool to describe hardware? I think (preferably immutable state) functional languages would be much closer, because they're much less procedural. You can more directly describe complex logic that takes some input, and gives some output, in a manner such that sequence of events does not matter. This would be much more powerful when mapped to an FPGA, because everything that didn't rely on a previous result could happen at the exact same time. And THAT much better utilizes the power of hardware. Implementing a long chain of sequential events on hardware is... not the smartest way to design hardware.

<comment><USER3> Why 'strict'?

<comment><USER4> Because hardware is fundamentally strict, when you read a value you read it.

<comment><USER5> Is it ? aren't there differential circuits with history that won't activate the subsequent circuitry in case the read value didn't change ?

<comment><USER4> The order of operations is strict, when you specify you want something you grab it. In contrast Haskells evaluation order does not match the definition order necessarily.

</comment></comment></comment></comment></comment><comment><USER6> "As for the HDL code itself, it can act as software (when it is run on an emulator or loaded into an FPGA) or as a hardware design (when it is realized in immutable silicon or a circuit board)."

This statement comes with some pretty heavy caveats. You can't just compile any arbitrary piece of software to hardware. At least not directly...not without an implied runtime package to support your program on hardware. Software developers tend to take this stuff for granted, especially at the high level. If you're writing C, where is your stack living? Do you plan on using the heap? Those need to go down to hardware somewhere.

This is the big trouble with FPGAs+Software Developers. Folks at the software level can (and probably tend to) fully utilize the Turing completeness (or anything power above regular language recognition at least) in their languages, inadvertently or not. When you want to support a computation that requires more power than finite automata can provide, you're going to need to bundle in things like memory management functionality, and maybe even a proto- processor. The rub is that you already have these things in literally any computer, and they're likely going to be faster than what you can do on an FPGA. For now anyway.

FPGAs are a tough nut to crack from the bottom up and the top down. If they're going to turn into a massively disruptive technology, we're going to need better tools for them and maybe some different thinking about how we program for them.

<comment><USER3> Indeed, but you can compile a lot into h/w. For example, you can compile recursive and higher-order functions and ground-type mutable state. You can also have a type system that tells you at compile time whether your program can be compiled or not.

Here are some entry points to the Verity/GOS project:

* Paper describing the theory: Dan R. Ghica, Alex I. Smith, Satnam Singh: Geometry of Synthesis IV: Compiling affine recursion into static hardware. ICFP 2011: 221-233

* Compiler from Verity to HDL: www.veritygos.org

</comment></comment><comment><USER7> Although I haven't developed hardware, I feel that hardware development suffers from rigidity. Is there noticeable progress of development not manufacturing in last 10 years? It seems that hardware developers often complain about VHDL and Verilog while continue to use them because they are only actual options vendors support. I found netlist format such as EDIF seems assembly language for hardware, but I also heared that vendors need to produce their own custom netlist from souce of VHDL or Verilog. I suspect that processors could evolved more than pace of Moore's law if tools have accumulated developer's creativity.

</comment><comment><USER8> The hardware level cross-over between logic and physics is of exceptional interest to me, and one of the drivers of my personal investigation of computing more generally.

It is my current understanding of FPGAs that they allow for reconfigurable _logical circuits_ , but still implement those functions using fixed _spatial circuits_ , primarily by dispatching signals down routing traces as specified by LUTs. These spatial circuits, in particular the routing paths, as the physical underpinnings of an FPGA are non-reconfigurable, and form the proprietary core of the product. I have three question, if anyone could provide insight:

(1) Is the above notion correct, or does the act of burning in a bitstream to an FPGA actually physically reroute traces within and between blocks of logic gates?

(2) The latter option in (1) would presumably still require some sort of supporting hardware, itself non-reconfigurable, and subject to proprietariness correct?

(3) Are there reconfigurable devices that offer complete, self-hosted reconfigurability? By which I mean that an unconfigured device must first be bootstrapped (via an external tool) to contain the bitstream burning auxiliary circuitry, but this framework remains no more fixed than the rest of the device. Furthermore, the bootstrapped circuits can update themselves, by creating second-generation support circuitry elsewhere on the device, which access and alters the first generation configuration.

Thank you in advance.

Edit: (4) Given the answers to (1), are there any devices that have reconfigurable routing traces?

<comment><USER9> Re (3), FPGA Partial Reconfiguration has been a standard feature on high-end parts for a long time. However I've heard (never used it myself) that the present implementations are of limited utility. Most applications that can afford a high-end FPGA can afford an auxiliary processor for management duties, so self-reconfiguration remains something of a curiosity.

<comment><USER8> Thank you. To your knowledge, does any device have the property described in "Edit: (4)..."?

<comment><USER9> I'm not sure what you mean by 'physically reroute traces'. If you mean, physically move a metal trace across the chip, that's not really possible at this point.

One-time programmable devices (GAL and PAL devices that are essentially obsolete, most FPGAs are SRAM based these days) require physical fuses to be blown in order to program functionality. I suppose that's a physical change, but one that's irreversible.

</comment></comment></comment></comment><comment><USER10> The most relevant part of this mail seems like the announcement of the reverse-engineering success that allows programming an FPGA with a FOSS toolchain. That that toolchain currently uses C seems like a minor implementation detail; if the bitstream format is understood well enough to generate it, it should be possible to use an HDL to as well.

<comment><USER11> But the next generation of fgpa obsoletes the reverse engineered insights.

</comment></comment><comment><USER12> "software is the operational part of a device that can be copied and changed in a computer; hardware is the operational part that can't be. This is the right way to make the distinction because it relates to the practical consequences."

I disagree.

Operation of computers cannot be classified simply into hardware and software. There are 3 important parts: \- Hardware \- Software \- The interface (basically the instruction set)

Another way to view ISAs is like a "Contract" between hardware and software. Hardware promises that certain instructions will provide certain behavior. Software acknowledges this and uses these instructions to build software on top of it.

<comment><USER13> As mentioned earlier, FPGA's do not fit this 3-part distinction.

In addition, CPU microcode doesn't fit this distinction, as the microcode is software (not hardware) that is hidden behind the ISA's interface.

Also, I can think of computers that only have hardware and data input (without any programs or instruction set). Basically number crunchers that run a fixed program (e.g. DSP's or non-general GPU's that perfom a specific function), with only the data input that can change.

You bring up a good point by acknowledging "The Interface". But I would reclassify into a different set of parts, something along the lines of: "Interface" \- "Implementation". I/O can be programs and/or data that interface with the implementation which can be hardware and/or software, or another whole computer. (This is potentially recursive classification, so it can include virtual machines.)

</comment></comment><comment><USER14> FSFs stance on firmware is one of the areas where the situation gets somewhat silly: [http://lwn.net/Articles/460654/](http://lwn.net/Articles/460654/)

<comment><USER13> Clever, they insert an additional chip between the cpu and wifi whose sole purpose is to load wifi firmware, and thus make it non-update-able "efectively circuitry" to bypass the silly FSF rules.

Using the same logic, what if someone ran netflix's proprietary DRM decryption-specific code in a seperate co-processor that interfaced with the main CPU only via the w3c's Encrypted Media Extensions? Assuming this code is never updated and runs isolated from the CPU, according to the FSF silly rules about updatability, they would be OK with this "effective circuitry" (of course ignoring their concerns about DRM itself). But if that same code would be run inside firefox's sandbox for EME plugin's, it would be considered dangerous non-free software.

</comment></comment><comment><USER15> The best way I found to think about this is best summarised by Alan Kay: "Hardware is crystallised software".

I think is the best metaphor because you can think of the crystal as immutable software.

FPGA's are like melting crystals.

They can eventually mutate under some circumstances until they crystallise again (crystals/temperature vs. FPGA reprogramming)

<comment><USER16> I find it more natural to think of software as different internal states of hardware or driving the state changes, at least.

For FPGAs, the "software" defines the hardware (in a sense) so there is a very tight integration between the two - to the extent that there really isn't any.

</comment></comment><comment><USER13> "Firmware that is installed during use is software; firmware that is delivered inside the device and can't be changed is software by nature, but we can treat it as if it were a circuit."

So any code, gate patterns, or microcode (preinstalled or not) that is potentially update-able (regardless of difficulty) would be considered "software". But any code, gate patterns, or microcode that is preinstalled into some rom or fuse memory inside the chip or that is otherwise impossible to be updated would be considered "hardware".

If an entire OS microkernel (like seL4) is burned into some rom inside the same chip with cpu and is physically impossible from being updated, it would be considered hardware by this gnu.org definition, but should be considered software according to wikipedia's definitions:

"[Software] is any set of machine-readable instructions that directs a computer's processor to perform specific operations." "[Hardware] is the collection of physical elements that constitutes a computer system."

Theoretically anything in software can be implemented as hardware and vice- versa. But should updateable-ness really be the differentiating factor? Now lets say that seL4 was compiled into VHDL to put in a fpga. (I am using seL4 as an example because it is small and written in a functional language which would be easier to implement in hardware than a macrokernel written in a sequential language like C, and because it performs a significant function of a computer, even though it may be impracticable to implement in a hardware description language). Is that hardware or software now? I would say hardware, because it is now a collection of physical elements connected together. But gnu.org's definition only seems to care about the updateability-ness.

What if instead the seL4 code was on a rom that couldn't be updated internally, but could instead be physically removed from a socket or unsoldered and replaced (even if not intended to be). I'm not even sure whether this gnu.org definition would consider it hardware or software, but I would guess using the strict updateable-ness criterion alone, by having some manner to be replaced, it would be considered software.

Sometimes organizations choose definitions to provide realizable goals. FSF uses this updateable-ness distinction, and then can for example say that the libreboot X60 runs entirely free "software". But of course my libreboot X60 has a bunch of processors running un-updateable proprietary code, such as the wifi, disk, and graphics chips, even though they are interfacing to the cpu using open source drivers. Also FSF seems to tolerate the preconfigured microcode already on the cpu, but won't tolerate microcode updates loaded at boot. But by using this non-updateable-ness criterion, FSF has a much more manageable but achievable conditions to meet the goal of free computing rather than having to "free all the things".

Maybe FSF is attempting to find definitions relevant to libre-ness. But I don't think making up their own new definition of hardware and software is necessary for achieving goal of free computing, nor terribly useful. I think they should just stick to the 4 freedoms (to run the program, to study how the program works, to redistribute copies, to improve the program) and might be better focusing on using the word "program" instead of having to make up their own new definitions for hardware and software. The word "program" transcends the distinction between hardware and software.

<comment><USER17> There is no firmware at all on the ath9k wifi chipsets. The firmware in the HDD/SSD is the same issue on all computers, not just libreboot. The graphics chip doesn't contain any firmware, instead the "video bios" is included in the SPI chip alongside coreboot or libreboot. In the case of libreboot, all current targets have free Video BIOS implementations, referred to in coreboot as "native graphics initialization".

<comment><USER13> "There is no firmware at all on the ath9k wifi chipsets."

No, there is firmware inside the wifi. Just looking at a specific chip ath9k wifi device: [https://www.qca.qualcomm.com/wp- content/uploads/2013/11/AR94...](https://www.qca.qualcomm.com/wp- content/uploads/2013/11/AR9462.pdf) I see it has a "32-bit Tensilica Xtensa CPU" and this CPU is running some proprietary firmware on the embedded Code ROM. Although this firmware cannot be updated, is completely isolated from the main x86 CPU in my libreboot X60s, can't directly access any data outside of the physical miniPCI board, and only interfaces to the rest of computer via open-source x86 driver code on the main CPU, this embedded ROM code controlling the embedded RISC processor is however still proprietary firmware. This is the same deal with the microcontrollers inside the HDD/SDD and graphics chipset, which all have proprietary embedded firmware which is interfaced with by the opensource x86 drivers. Firmware != driver.

<comment><USER17> The PDF that you linked to is talking about AR9462. Libreboot machines typically use chips with the AR9285 chipset.

<comment><USER13> Ok, I simply linked to that as an example of a device that can interface with the free ath9k driver. Looking at [https://www.qca.qualcomm.com/wp- content/uploads/2013/11/AR92...](https://www.qca.qualcomm.com/wp- content/uploads/2013/11/AR9285.pdf) I can't really see any closer detail inside of the black boxes labeled "Baseband PHY and Wireless MAC" and "Host Interface" but I can make a very educated guess that they are running some very simple RISC and/or DSP with code off a ROM responsible for performing all the non-analog functions necessary for wireless media access control (e.g. error recovery, finding free channels, Rx/Tx buffering) and for interfacing with PCIe bus, outside of functions that handle higher level of the networking stack that are more practically implemented in the ath9k driver code running in the x86 cpu.</comment></comment></comment></comment></comment>


Show HN: Scheduling Async Voice Messages on RPi Made Easy with NatOS - <AUTHOR> https://github.com/ruchir594/NatOS <comment><USER2> Very cool, been looking for something like this!

</comment><comment><USER3> That's cool guys keep working on it!

</comment><comment><USER4> interesting.

</comment><comment><USER5> amazing!</comment>


The importance of upvoting - <AUTHOR> https://www.julian.com/blog/upvote <comment><USER2> Agree: Remember to visit the [https://news.ycombinator.com/newest](https://news.ycombinator.com/newest) page.

</comment><comment><USER3> Down voting should be disabled as it's too open to abuse.</comment>


Show HN: Musish – Web client for Apple Music - <AUTHOR> https://musi.sh <comment><USER2> (self-plug here) If you're interested in web-based music players, I actually author one that's open source. It uses youtube/soundcloud iframes to play the tracks themselves, but allows for syncing playlists across from spotify as well as browsing top charts and syncing libraries between devices.

[https://next.kaiserapps.com/discover](https://next.kaiserapps.com/discover)

[https://github.com/benkaiser/stretto/tree/next](https://github.com/benkaiser/stretto/tree/next)

<comment><USER3> i made www.muusical.com a few years ago. i haven't been maintaining much lately but I'm still quite interested in meeting people with similar interests.

</comment></comment><comment><USER4> The code is very well-written.

Some highlights:

[https://github.com/Musish/Musish/blob/master/src/app/service...](https://github.com/Musish/Musish/blob/master/src/app/services/MusicPlayerApi.js)

[https://github.com/Musish/Musish/blob/master/src/app/utils/U...](https://github.com/Musish/Musish/blob/master/src/app/utils/Utils.js#L20)

[https://github.com/Musish/Musish/blob/master/src/app/utils/C...](https://github.com/Musish/Musish/blob/master/src/app/utils/Constants/DragDropType.js)

<comment><USER5> What about this horrible code section: [https://github.com/Musish/Musish/blob/74a1a0c570c002d5980f15...](https://github.com/Musish/Musish/blob/74a1a0c570c002d5980f15defd38e5a322b162db/src/app/services/MusicApi.js#L119)

<comment><USER4> Well it _is_ JavaScript...

</comment></comment></comment><comment><USER6> Seems like spotify and apple music both do the same thing here. the js api creates an iframe to their "embedded player" which is just their full player without a ui which will respond to rpc commands from the page.

[https://embed.music.apple.com/](https://embed.music.apple.com/) [https://sdk.scdn.co/embedded/index.html](https://sdk.scdn.co/embedded/index.html)

Would be nice if paying users could access actual streams, although that would probably violate the drm or something.

<comment><USER7> Spotify DRM _has_ been cracked before (extraction 320kbps Vorbis streams without recompression), but for obvious reasons there are no ready-made public PoC's.

<comment><USER8> Doesn't librespot count?

<comment><USER7> Possibly. I haven't looked into it though.

</comment></comment></comment></comment><comment><USER9> This is amazing! One of the main reasons I went with Spotify after 3 yrs of Apple Music is because I moved to use Linux as my primary desktop and I didn't have an Apple Music client there. This is making me reconsider getting Apple Music subscription again!

I'm going to see if there's a Github link or maybe reverse engineer the API and make it into a desktop app (mainly for Media key controls and Desktop integration to be honest).

<comment><USER10> It looks like Apple has a public API for this.[1] No need to reverse engineer.

1\. [https://developer.apple.com/documentation/applemusicapi](https://developer.apple.com/documentation/applemusicapi)

</comment></comment><comment><USER11> Has Apple said anything about why they aren't releasing their own web player?

With the API integration it seems pretty straight-forward to make one, so there's got to be a strategic reason they don't want to?

Maybe they want to encourage people to use native apps wherever possible, since they have more advantage over Chromebooks there?

<comment><USER12> In the short-term, micro context, like most exclusive Apple apps, it's one more reason to buy Apple devices and lock existing users into upgrading to Apple devices. Switching apps is a hassle, especially if there's no easy ways to migrate data.

In the broader context and rough terms, it's against Apple's interests that web apps in general take off over native apps. In theory, there's no reason web apps shouldn't be as capable as native apps for 90% of workflows (playing music being well in that 90%).

If web apps, at large, take off:

1\. The App Store loses relevance, and so Apple loses influence over developers, distribution, and 30% piece of the cake. 2\. Apple loses platform lock-in, since web apps run everywhere. It'd be a no-brainer for companies to have one team developing for the web, instead of one for the web and one or two for mobile.

I don't doubt if Apple wanted they could form a team with enough expertise to build solid web apps and make their services gain marketshare, but the experience would either have to be subpar vs native (like iCloud.com is IMO) or solid enough that they would unwittingly prove web apps are equally capable to native apps, and so create demand for more web apps, more progress in that space, and stray away from an advantageous position for them.

<comment><USER13> Apple Music is not an exclusive app though:

Android:

[https://play.google.com/store/apps/details?id=com.apple.andr...](https://play.google.com/store/apps/details?id=com.apple.android.music&hl=en)

Windows 10:

[https://www.microsoft.com/en- us/p/itunes/9pb2mz1zmb1s](https://www.microsoft.com/en- us/p/itunes/9pb2mz1zmb1s)

<comment><USER12> Oh, go figure. I stand corrected on my first point about immediate platform lock-in. Longer-term, I still believe Apple is refraining of heavily supporting the web to keep overall control of its platforms.

</comment></comment></comment></comment><comment><USER14> I had created something similar using Spotify and Youtube to replace a need for a spotify subscription - [https://www.livejam.com](https://www.livejam.com)

Now I'm thinking about turning it into a desktop app coz its a pain to keep a tab open for playing music.

<comment><USER15> Maybe you could fork FreeTube to save some time:

[https://github.com/FreeTubeApp/FreeTube](https://github.com/FreeTubeApp/FreeTube)

</comment></comment><comment><USER16> This is great, thanks! As someone who previously listened to Apple Music on Linux via the Windows edition of iTunes running using Wine in a Docker container (lol), a proper alternative is massively appreciated.

<comment><USER17> May I ask why all of the effort to use Apple Music? Why not switch over to Spotify which has a ton more open libraries / APIs?

<comment><USER18> Personally I don't use Spotify because the interface is hostile to people who prefer listening to full albums, and I don't want to support a monoculture if I have an alternative (not that Apple is some great panacea for artists, of course).

<comment><USER19> I listen to music that way too, but I'm toughing it out on Spotify still. I'm curious, how do you feel Apple Music's interface is better in that regard?

I was too late for rdio, but from what I hear it sounds like the music service I really want :/

<comment><USER20> Not OP: I really like how (especially on the mobile app) it's always pretty easy to see which albums each track is associated with no matter what direction I get to the Artist from. In Spotify, I have issues where from some directions, it just lists all of the songs that I have saved from an artist, ignoring the album information. It also will sometimes end up with the songs in alphabetical order, making it difficult to listen to the album. While there's always a way to end up seeing a view that I want, it usually ends up with me clicking though a bunch of links to get to the Artists default page, and on things like CarPlay, that's not really an option either making it more difficult.

That was one of my main reasons for switching to Rdio when it was out, and while I really liked Rdio for its UI, it definitely had enough bugs/delays in song starting that I ended up moving (reluctantly) back to Spotify until Apple Music was released. Now, with that handled along with cloud uploads of my local media (I buy a lot off of bandcamp), it feels like a much more whole offering. I wish social and discovery features were up to Spotify's levels, but I personally have moved away from those for various reasons anyway, so it's not as much of an issue for me as it is for users who really utilize those features.

<comment><USER17> Yeah, I have found Apple Music to be better than Spotify for the curation of music libraries.

> it just lists all of the songs that I have saved from an artist, ignoring > the album information

AM definitely has Spotify beat here. Click an artist, see their albums, choose an album to listen to. All in one view. It seems so natural ... I wonder if this is because I learned to curate my music on iTunes, and it is just a habit?

But for music discovery, open development practices (this is the biggest reason I switched from AM to Spotify - knowing that no matter what kind of thing I want to hack together, Raspberry Pi connected to BT speaker connected to projector, I would be able connect Spotify to it somehow), and social music experience, I think Spotify has AM beat.

<comment><USER21> > AM definitely has Spotify beat here. Click an artist, see their albums, > choose an album to listen to.

Maybe I am missing something, but it seems like the flow you describe is exactly how it works in Spotify. Here is an artist page with the album list prominently featured: [https://i.imgur.com/wNAjoCa.png](https://i.imgur.com/wNAjoCa.png)

<comment><USER17> Sorry, I was referring to your curated music library, not searching.

For example, in Spotify they just list all the tracks

[https://i.imgur.com/Bse9J7z.jpg](https://i.imgur.com/Bse9J7z.jpg)

In Apple Music, they list the albums, year, artwork, etc.

[https://i.imgur.com/jyktt7R.jpg](https://i.imgur.com/jyktt7R.jpg)

I definitely prefer Apple's for browsing my current music.

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER22> I did kinda that same thing for soundcloud a few years ago with meteor <3\. It's been awhile since this code was touched.

I stopped developing it because soundcloud's UI started to really match my design and feature set.

but:

\- my search is faster (just a long startup time) \- it will actually shuffle all your songs and not just the last 20-ish

[https://sctunes.herokuapp.com/](https://sctunes.herokuapp.com/) [https://github.com/hipstersmoothie/sctunes.meteor](https://github.com/hipstersmoothie/sctunes.meteor)

</comment><comment><USER23> I'm perplexed as to why the web client is so much better than the native itunes client. This was completely unexpected. I have to say the web platform has come a very long way.

<comment><USER24> Apple has little motivation to improve the music player and has a massive megalith in iTunes to support. It does so much it's likely quite difficult to work on. I mean I think it still installs bonjour on windows for some reason.

<comment><USER25> That reason is probably to discover AirPlay speakers on the network, right? Sounds useful to me

<comment><USER24> I'm just listing out all the baggage that monolith drags with it. The pct that wants to just listen to music or sync their phone is way hire than those with the expensive air speakers no one is buying. But they all get bonjour by default.

<comment><USER25> Most people may not buy specific AirPlay speakers, but for example if you have an AppleTV or AirPort-express they can be used for this as well. I use it a lot and I'm glad iTunes can find them!

</comment></comment></comment></comment></comment><comment><USER17> Lovely design. Question, why would we not just use Apple's official site? For example, search for something on [https://tools.applemusic.com/en- us](https://tools.applemusic.com/en-us), then just click sign in on the top right once you select your music. I believe there is a way to see your current library too.

Great work.

Edit: Changed link.

<comment><USER18> I've never heard of that site, and it clearly doesn't look like it's intended for use by subscribers. I can't get it to play a full song even after signing in.

</comment></comment><comment><USER26> Great job! Thank you. I'll see if I can add support to this for the last.fm scrobbler extension that I use.

PS: For those of you who use Apple music and are into Indie / Alternative music, here's a 2018 mixtape I made recently.

[http://linkdot.link/2018-mixtape.html](http://linkdot.link/2018-mixtape.html)

Edit: Added playlist

</comment><comment><USER27> Looks very well done! Is the source code available anywhere? I was planning on working on an Apple Music web client myself and would be happy to contribute.

Edit: Musish github repo: [https://github.com/Musish/Musish](https://github.com/Musish/Musish)

</comment><comment><USER28> This is actually pretty nice. I was expecting a heavy bloated web app but its not. Good work.

</comment><comment><USER29> Very cool! Would be incredible if you could access your iCloud Music Library as well.

</comment><comment><USER30> This is really well put together, works flawlessly for me.

</comment><comment><USER31> Really well done. Design was a nice surprise :)

</comment><comment><USER32> This is amazing!

How did one person make a client that is 100x faster and more stable than Apple's?

<comment><USER33> Yeah I don't think it is any faster or more stable than the actual Apple web client. They probably use the same API's. Plus lots of considerations that applies to any website. Is it available in multiple languages? How accessible is it? Does it work on older browsers? Also, digging around, the Apple web client seems pretty up to date. Isn't old software. I like the search feature though on this.

<comment><USER33> Yeah looks like you can get Chinese pages as well. [https://itunes.apple.com/cn/artist/taylor- swift/159260351](https://itunes.apple.com/cn/artist/taylor-swift/159260351)

</comment></comment></comment><comment><USER34> Please change the title so it includes that this is about an Apple Music webclient

<comment><USER35> Updated from "Unofficial Open-Source Web Client my friends and I created".

</comment></comment><comment><USER36> Title is very misleading. I came here thinking it was a new web browser (an http client).</comment>


Show HN: Harvey, command line app that manages license for open source projects - <AUTHOR> https://github.com/architv/harvey <comment><AUTHOR> Hi everyone!

Harvey is a simple CLI app which I created. It helps you choose and add license for your open source project from command line.

<comment><USER2> is this named after Harvey Specter?

<comment><AUTHOR> Yup, he is the inspiration behind the name! ;)</comment></comment></comment>


Vitamin D, part 3 – The Evidence - <AUTHOR> https://www.devaboone.com/post/vitamin-d-part-3-the-evidence <comment><AUTHOR> Part 1 and Part 2 discussed on HN previously:

Vitamin D, part 1: back to basics - [https://news.ycombinator.com/item?id=24138590](https://news.ycombinator.com/item?id=24138590)

Vitamin D, part 2: Shannon's story - [https://news.ycombinator.com/item?id=24261948](https://news.ycombinator.com/item?id=24261948)</comment>


Catch a Fish - <AUTHOR> http://go.c800colon5.com/blog/2015/03/27/catch-a-fish/

<comment><USER2> My grandpa was always into fishing. I asked him if he ever went fly fishing. He kind of shuddered. "Frustrating?" "That's a word for it"

Told me about a time he worked at a lumber camp in Colorado. The old man there kept a fly rod on the front porch of the cabin. Every day at 5 he would walk down to the stream and catch trout for dinner for the workers.

</comment><comment><USER3> Interesting read.

Fishing marketing is incredibly intriguing. Current reel technology is probably only marginally different than your 30 year old Ambassador, but there are baitcasters that are $200+. A $200 reel won't catch more fish than a $50 one, but people still buy into the "new 8 bearing, neodymium braking, cross drilled carbon fiber spool" type marketing.

</comment><comment><USER4> I find the font and font color hard to read.

<comment><USER5> How about the words and their meanings, though?

</comment></comment><comment><USER6> I grew up on the beaches of Australia, and had my share of fishing time, casting the long shores endlessly, catching and releasing, never eating much fish but having a good time wasting nothing but time with my grandfather, who bought me my first - and only - beach fishing rod. I learned to set my own rigs depending on conditions - the long trailer for the surf, the sinker spoon for the sand, and so on. Whenever I ran out of tackle, I'd don my snorkel and go out and do a collection, retrieving all the competing fishermens' stuff right off the reefs they'd left it. I learned that you don't need much to catch some stupid fish - just a few centimeters of an old white plastic straw and a small hook is enough to get yourself the surface dwellers.

Since I moved away from it all, and haven't picked up a fishing rod in decades, it all still stays with me - but I put that old passion into programming now.</comment>


Firefox Replay - <AUTHOR> https://firefox-replay.com/ <comment><USER2> Mods: the link should perhaps be changed to: [https://developer.mozilla.org/en- US/docs/Mozilla/Projects/We...](https://developer.mozilla.org/en- US/docs/Mozilla/Projects/WebReplay)

This currently has 1215 points, and the link is no longer valid. It now just shows an image of Firefox's devtools and the sentence "Replay is an early experiment. We'll let you know on @FirefoxDevTools when it's ready for input." That's not useful, interesting, or informative. The MDN docs seem like an appropriate replacement.

<comment><USER3> The initial version of the site gave a good overview of Firefox Replay: [https://web.archive.org/web/20191128111509/https://firefox-r...](https://web.archive.org/web/20191128111509/https://firefox- replay.com/)

<comment><USER4> That gives me "The Wayback Machine has not archived that URL."

I also get the same for all the other snapshots, maybe Mozilla applied for a takedown?

Edit: I found it on archive.is: [http://archive.is/0ei35](http://archive.is/0ei35) Though it seems a bit broken.

<comment><USER3> You can also use my browser extension [1] to quickly find the original version of the site in other places:

[https://megalodon.jp/2019-1128-2050-51/https://firefox- repla...](https://megalodon.jp/2019-1128-2050-51/https://firefox- replay.com:443/)

[http://cc.bingj.com/cache.aspx?q=url:https%3A%2F%2Ffirefox-r...](http://cc.bingj.com/cache.aspx?q=url:https%3A%2F%2Ffirefox- replay.com%2F&d=4637856076988454&mkt=en-WW&setlang=en- US&w=-rUAvVyll0c9DeiDtD0UxEivsNUOE-Nm)

[http://cache.yahoofs.jp/search/cache?c=ULQkH25vOxAJ&p=https%...](http://cache.yahoofs.jp/search/cache?c=ULQkH25vOxAJ&p=https%3A%2F%2Ffirefox- replay.com%2F&u=https%3A%2F%2Ffirefox-replay.com%2F)

[http://22.214.171.124/search2.naver?group=web&mtype=web_doc&w...](http://22.214.171.124/search2.naver?group=web&mtype=web_doc&where=web_html&from=webkr&u=https%3A%2F%2Ffirefox- replay.com%2F&r=1&docid=a00000fa_eca2899c556f1179fdaa8f92&rev=31&tl=firefox- replay.com%2F%2C+.firefox-replay.com%2F)

[1] [https://github.com/dessant/view-page- archive](https://github.com/dessant/view-page-archive)

<comment><USER5> This is a really cool extension, thanks for sharing!

</comment></comment></comment></comment></comment><comment><USER6> This is a pretty nice comment from the source that explains how it works: [https://github.com/mozilla/gecko- dev/blob/11d9c7b7fa82fdfb8a...](https://github.com/mozilla/gecko- dev/blob/11d9c7b7fa82fdfb8ac2a8f0864e9d8d5fe2b926/mfbt/RecordReplay.h#L32-L73)

``` // Recording and replaying works by controlling non-determinism in the browser:

// non-deterministic behaviors are initially recorded, then later replayed

// exactly to force the browser to behave deterministically. Two types of

// non-deterministic behaviors are captured: intra-thread and inter-thread.

// Intra-thread non-deterministic behaviors are non-deterministic even in the

// absence of actions by other threads, and inter-thread non-deterministic

// behaviors are those affected by interleaving execution with other threads.

```

<comment><USER7> What is non-determinism in the browser?

<comment><USER8> Once source comes from the memory allocator, and the pointers it gives out.

If you have an ordered map of pointers (e.g. std::map<void*>), iterating over the map will not be deterministic because the pointers given by a (regular) allocator are not deterministic.

<comment><USER9> This may be true in c++ but I believe is not in JavaScript. The language defines iteration order over keys of an object to be the insertion order (except numeric keys which are in ascending order). Not sure if there's anywhere that iteration order is actually nondeterministic that's allowed by the spec.

</comment></comment></comment></comment><comment><USER10> Ooooh wow. This might be enough to get me to use Firefox to develop with. This could be huge for its market share, a big part of the reason chrome was able to become so popular was because of how good its devtools were (compared to the competition at the time).

Firefox definitely managed to catch up but not before lots of devs switched to chrome and stopped checking for compatibility with Firefox.

<comment><USER11> Do you really think the web developpers that use advanced dev tools can make a real difference in their market share? (real question)

<comment><USER12> Developers in general are very influential.

Not only among our family and friends, but also because our choices create a lock-in effect due to the nature of our work.

When you use Chrome day in and out, your work is going to be optimized for Chrome and will work best on Chrome. This led to a Chrome-optimized web and while Google isn't necessarily to blame, we're back to the days of " _works best in IExplorer 6_ ".

Companies and products that attract developers will eventually attract regular people as well. You could say that this is a chicken and egg problem, developers following the users, but with few exceptions (like the iPhone) in my experience thus far it's usually the developers that come first.

\---

It's worth mentioning that Chrome isn't popular only because of its technical excellence, but also because of Google's incessant marketing and bundling. But if we remember Microsoft and their declining browser market share, marketing and shoving your products down people's throats isn't enough. The product, especially if it's a _platform_ , has to not suck and to be used by developers as well.

So yes, if other browsers like Firefox want to stay relevant and grow, a major requirement is to provide excellent developer tools.

Kudos to Mozilla for understanding that.

<comment><USER13> Developers and computer geeks have been overestimating their influence for over a decade. If geeks were influential, the "year of the Linux desktop" would have been years ago, no one would be on Facebook, and people wouldn't buy into Apple's wall garden and people would care about "freedom". Definitely no one would have bought the iPod since it "had less space than the Nomad and no wireless". ([https://slashdot.org/story/01/10/23/1816257/apple- releases-i...](https://slashdot.org/story/01/10/23/1816257/apple-releases- ipod))

The consumerization of technology happened a long time ago.

<comment><USER12> Not sure what you mean, but as an anecdote I quit using desktop Linux years ago and whenever I go to developer conferences, the majority are on MacOS and I think I see more people on Windows 10 than on Linux.

That people wouldn't buy into Apple stuff is a big assumption, because we did do just that, for better or worse. Speaking of which, I see many more successful commercial desktop apps for MacOS than for Windows or Linux combined, even if Windows still has a much bigger market share. And this happened since before Apple's App Store for MacOS became a thing.

I was also one of Facebook's early adopters, many of my programmer friends were too. Being from Romania, let me tell you, the early adopters here were all software developers ;-)

<comment><USER14> There might be some bias in there.

" see many more successful commercial desktop apps for MacOS than for Windows or Linux combined"

Office profits by itself would crush all MacOS application sales.

Maybe it is easier for the single developer to create something profitable on MacOS but that's because the bigger players have marketshare over windows in the profitable niches.

<comment><USER13> Office has always been available for the Mac. How many indy developers and small shops outside of games really have been successful making software?

</comment></comment></comment></comment></comment></comment></comment><comment><USER15> They should've put this note at the very top of the page: "Mac OS only for now!".

What is the point of promoting this to everyone at this stage?

<comment><USER16> Team member here. Firefox Replay is currently in user research phase while we validate it.

Cross platform support will absolutely be a priority when Replay is on the official roadmap.

Thanks for the feedback, firefox-replay.com is also a work in progress. We did not plan an official release today.

We'll be sure to make the Mac OS limitation more clear.

Here is some more context on the mac specific functionality ([https://searchfox.org/mozilla- central/source/toolkit/recordr...](https://searchfox.org/mozilla- central/source/toolkit/recordreplay/ProcessRedirectDarwin.cpp#52-76)).

<comment><USER17> What benefits it provides than record and playback using a screen recorder?

<comment><USER18> Based on the linked MDN page (from the current top-rated comment) it sounds like the main point of this is to have a rewind-able debugger.

</comment></comment></comment></comment><comment><USER19> If this works well, it could eventually be a very big boon for Firefox in the business world. Q&A can now send reproducible bug demos to development. Technical clients can do the same. I wouldn't be surprised if someone built tooling to map these recordings into automated tests either: expect the given recorded workflow to not throw errors.

I can't quite remember when I had a bug where a tool like this would've been useful, but I'm sure I would've been (and will be) very thankful for it.

<comment><USER20> Oh yeah, wow. Having bug reports come with a replayable & inspectable recording of the user's session would be an absolute game changer. We approximate this now with telemetry tools that allow you to see what the user was doing (sort of), but this would be 100x better.

<comment><USER21> I wonder how often the bugs will be so deep that something like LogRocket won't be enough.

</comment></comment></comment><comment><USER22> Why "Download Firefox Nightly for macOS"?

Is it not supported on Linux and Windows? Why?

<comment><USER23> This blew me away a bit. Is MacOS this popular in the Web frontend crowd?

I always felt that the price/quality ratio was way off with MacOS, compared to a good regular laptop. By good I mean top 10% ranked by price/quality. Even if it wasn't, Apple's general hostility towards consumers is infuriating. Right- to-repair is a banal example.

<comment><USER24> > Is MacOS this popular in the Web frontend crowd?

Yes, and seemingly in the web backend crowd too (Ruby, PHP, Python but not as much AFAICT).

If you go to a web conference and don't pull out a Mac, you do get comments and/or questions (depending if you're running Windows or Linux).

At Python conferences I've seen fewer Macs and more of the good old ThinkPads running Linux. My feeling is that community has a more "Computer sciencey" taste in laptops, because they're not all web programmers.

<comment><USER25> > My feeling is that community has a more "Computer sciencey" taste in > laptops, because they're not all web programmers.

Or maybe just because they _can_ be bothered to spend a few days setting up their laptop just right and actively maintain it.

I'm a fairly advanced user but I can't be bothered to do so on a laptop and would rather have a Mac to carry around and GNU/Linux on my desktop.

</comment></comment></comment></comment><comment><USER16> Thanks for the feedback!

Replay is in the user-research and validation phase and still quite experimental.

firefox-replay.com is a work in progress. We're still sorting out the best way to communicate record and replay debugging and the new use cases.

We'll share more on @firefoxDevTools when we have something to report.

<comment><USER26> Great work! Some insights from FANG. Two more things are necessary to make this a game changer: 1. JS level API to record RNR traces and upload them along with error reports (this will be a new W3C standard). This will be a compelling reason to include Firefox into the automation toolchain and at that point compatibility with Firefox will be mandatory. 2. JS level virtualization or sandboxing. Right now we have the iframe-level sandboxing but this granularity is too coarse because modern web apps have become really big (think of O365). We need a way to fragmentize the JS execution context into smaller docker-like sandboxes and record RNR traces for them. Rationale: big subcomponents should be isolated from each other and have separate traces. As a side effect, this new VM API will enable us to do one cool trick.

</comment></comment><comment><USER27> What's going on? I just see a block of text next to a static image.

"Replay is an early experiment. We'll let you know on @FirefoxDevTools when it's ready for input."

<comment><USER28> I think they saw that it got a lot of attention on HN and weren't in a stage with the product where they were ready for the corresponding feedback.

For anyone who missed what it was, it allows you to derterministically record and replay your browsing for debugging purposes, and you can export these recordings to others.

<comment><USER27> I just looked it up on the internet archive and saw the old website. I think they should have kept the old one, since the new website has almost no information at all.

[https://web.archive.org/web/20191128111509/https://firefox-r...](https://web.archive.org/web/20191128111509/https://firefox- replay.com/)

<comment><USER4> That gives me "The Wayback Machine has not archived that URL."

I also get the same for all the other snapshots, maybe Mozilla applied for a takedown?

Edit: I found it on archive.is: [http://archive.is/0ei35](http://archive.is/0ei35) Though it seems a bit broken.

</comment></comment></comment></comment><comment><USER29> The biggest benefit for me (I think) would be if the product/design people I work with could find issues and send their recordings to me. Don't think I'll be able to convince them to switch to FF though.

<comment><USER30> [https://birdeatsbug.com](https://birdeatsbug.com) is great for that kind of thing

<comment><USER16> Very cool. The product looks great!

<comment><USER31> Thanks a ton from the Bird team!

</comment></comment></comment></comment><comment><USER32> Regarding Mac OS: looks like, on Windows FF Developer Edition I can access it's UI from creating a boolean in about:config named devtools.recordreplay.enabled

A new option in settings will be added to enable a Toolbox Button named "Enable WebReplay", but pressing that button will replace the entire tab content with an about:blank

</comment><comment><USER33> My first thought is I'm mildly skeptical that this will end up being granular enough or detailed enough to actually be useful in practice, but if it does, it could be _very_ useful.

I'm pretty happy to see Firefox pushing its dev tools in this direction. They've done a really great job with layout and styling tools, but their JS dev tools have lagged behind Chrome's. So even if this particular effort doesn't pan out for some reason, it's still very encouraging.

They're not just carbon-copying Chrome, and they're not just sitting back and ignoring the dev tools; they're trying to push them forward in some interesting ways.

</comment><comment><USER6> Is there any way to make this work in automation? This could really help with debugging failed e2e firefox tests.

</comment><comment><USER34> This is quiet cool! They did far better job then I would have imagined in doing myself! Ha!

[Link to the editor]([https://github.com/abdusamed91/realtime- codeeditor](https://github.com/abdusamed91/realtime-codeeditor))

I implemented it in my real time code editor coursework project where I made use of [Ace Editor]([https://ace.c9.io/)'s](https://ace.c9.io/\)'s) CRDT. The time machine slider does the job and looked remarkable when it ran.

</comment><comment><USER35> No Linux support :(

<comment><USER36> Not Linux support _yet_ I hope :)

</comment></comment><comment> ga-vu For those interested into how this works, look into Time-Travel Debugging and the WebReplay API

</comment><comment><USER37> This didn't work for me.

1\. I installed the nightly build as told.

2\. Open nightly build

3\. Went to the "Save Recording" option

4\. The first two times, I got a [javascript error] saying I could not record.

5\. The remaining couple of times - after I open a "New Recording Tab", whatever that is - I didn't see the javascript error but the website whose clickthru I wanted to record using this tool didn't even load in that new recording tab.

Just this morning I recorded a clickthru like caveman using Quicktime. Can't wait for FF to iron out the kinks in this feature.

<comment><USER16> Hmm, join us in [http://devtools-html.slack.com/](http://devtools- html.slack.com/) and we'd be happy to help you debug it.

If the tab crashed, you can get the report in about:crashes

<comment><USER38> What do I do if I don't have mozilla or chromium email?

</comment></comment></comment><comment><USER39> How is this different from recording in Chrome Web Dev tools?

To be clear, I use both Chrome and Firefox for development but just to the surface level, so I'm probably missing the point here.

<comment><USER40> I'm not too familiar with "recording in the Chrome devtools", but this allows you to actually step _back_ as well as forward in the debugger, e.g. for inspecting the value a variable had when code executed before.

</comment></comment><comment><USER41> This looks pretty good. Are there any other tools like this for different platforms? I'd be especially interested in something like this for the .NET ecosystem.

<comment><USER40> I'm not familiar with .NET, but I think both the Elm devtools and Redux devtools can do something similar, although limited to their own features.

</comment></comment><comment><USER42> Oh, oh, oh! This is so exciting!

I had built a poor mans version of this where I worked with puppeteer for automated tests. It'd basically record the full dim any time it changed, along with console logs, network request metadata, images and css and output it as a test recording. You could then view that and walk through it in an Electron app.

This'll blow it out of the water. I hope for e2e testing's sake that linux support comes soon.

</comment><comment><USER43> Tangentially, our Apple II emulator [1] has a recording reverse-debugger, should you want to do similar to debug 6502 code... ;) Developers of recent Apple II games have been using it to resolve pesky bugs.

[1] [https://paleotronic.com/software/microm8/help/web- debugger/](https://paleotronic.com/software/microm8/help/web-debugger/)

</comment><comment><USER44> This looks great, it's good to see that Firefox is pushing new dev features, instead of playing catch-up to Chrome.

Does Replay work on the Firefox Dev build?

<comment><USER45> Seems to be a MacOS only feature.

</comment></comment><comment><USER46> I would love to give Firefox a shot, but there's one thing I've had issues with, when working with projects using things like webpack, when there's an error, Chrome links me back to the original file and line, I never seem to be able to do this in Firefox. Makes it so much harder to debug things. Am I doing something wrong, or is there a way to fix this?

<comment><USER40> Not sure how long ago you tried, but in one of the recent Firefox versions, they greatly improved the source map support - so it might just be that you should give it another try.

<comment><USER46> I've tried it with the latest versions (as of now), but it doesn't seem to match up with how good Chrome is at it. I've tried both normal Firefox and the developer version.

Why is this something Firefox seems to be struggling with? All the Blink based browsers seem to be much better in this regard.

</comment></comment></comment><comment><USER47> I am not primarily a web developer, but I guess I don't really see it.

I suppose 'rewind' would mostly be useful for Javascript applications? But in Javascript you can already debug pretty well. It's been a while, but I suppose Javascript debuggers can drop frames, like debugging other languages, so you already have a kind of rewind?

Does anyone have a good example use case for this?

<comment><USER40> I'm not quite sure what "drop frames" means in this context, but a use case would be stepping through the debugger, realising that the problem might be in a piece of code that has already executed, and wanting to inspect the value of a variable at that point in time.

Or even more mundane: accidentally hitting "Step over" twice in a row.

<comment><USER47> In most debuggers you can drop back up the stack to the code that called the function you are currently in, and thus debug through the function call again.

Example: [https://stackoverflow.com/questions/2367816/when-using- the-j...](https://stackoverflow.com/questions/2367816/when-using-the-java- debugger-in-intellij-what-does-drop-frame-mean)

 _" Using the "Drop Frame" functionality you can "fall back" to a previous stack frame, in a sense going back in time."_

<comment><USER48> That Stack Overflow answer is poorly worded though, looking at an outer stack frame is really nothing like going back in time. Going back in time in the Firefox Replay sense means reversing execution of the program, e.g. to find the values of variables that have been mutated or gone out of scope.

<comment><USER47> But that's what drop frame does - it goes back to the state before your current function call, including resetting variables. It does not revert global state (like static variables) but it is essentially like reverting execution 95% of the times I use it.

<comment><USER48> It doesn't really "go back", it just shows a different stack frame, which is part of the current state of the program.

</comment></comment></comment></comment></comment></comment><comment><USER49> This will be an absolute game changer for web development. I am currently working on a really simplified version of this, but as a chrome extension. We deal with a lot of real time data and have been facing some timing issues (network and user input) which is really hard to reproduce.

I'm going to give this a shot today!

</comment><comment><USER50> I wonder how this is positioned compared to Bird Eats Bug and LogRocket/FullStory

<comment><USER31> Co-founder of Bird here. Firefox Replay seems to be focusing purely on developers, while we see usage also from PMs, QA and even customer support. So in the end developers can get more data from essentially anyone in the company.

Over time we will be adding more tools for developers. It will be interesting to see how Firefox will approach this compared to us.

</comment></comment><comment><USER51> I've been working on a slightly related idea - [https://speakhq.co](https://speakhq.co) \- I did submit as a Show HN, but didn't get too much traction.

</comment><comment><USER52> Just tried it out, and performance seems really bad at the moment, to the point where I couldn't tell if it was working properly. Does anyone have any suggestions of sites to try this on?

</comment><comment><USER53> It might just be me but enabling the option and clicking and the recording button just attempt to reload the page and I get a blank page. Not sure what is supposed to happen.

<comment><USER54> Yeah happens to me too, guess either I'm missing an obvious button or it's slightly broken on some machines (which is to be expected).

</comment></comment><comment><USER55> Firefox is (mostly) a wonderful, free application. Linux is a wonderful, stable, free desktop.

Strange days indeed. Just giving some thanks where it's due.

</comment><comment><USER56> So in its scope this somewhat similar to Cypress.io?

[https://www.cypress.io/](https://www.cypress.io/)

<comment><USER6> I don't use Cypress anymore as it didn't work for me but doesn't look like it. This is for debugging rather than testing.

Also the timeline in Cypress didn't actually work too well for us.

</comment></comment><comment><USER57> Must admit, I've used screen recording during web development for some edge cases; this might address those situations

</comment><comment><USER58> What would apple have to do to let us have this on iOs? I would love to have a choice of browser on my phone.

<comment><USER59> It's not going to happen; even if you could run your own browser engine on iOS this requires deep hooks into system calls and Mach messages which isn't really something that I would see Apple letting you do.

</comment></comment><comment><USER60> Is it not appearing for anyone else? I downloaded it (for MacOS), and that option does not exist.

<comment><USER60> Wait, no, its fine. You have to go to the Web Developer tools, then settings, and then turn it on via the check box.

</comment></comment><comment><USER61> I can't see it.

> An error occurred when connecting to firefox-replay.com. > PR_CONNECT_RESET_ERROR

</comment><comment><USER62> Is there a replaying debugger for reverse-engineering dotNet programs?

</comment><comment><USER63> Really hope they can get this working with WebGL

</comment><comment><USER64> Can I add a little bit of randomness to this?

</comment><comment><USER65> Is this a rebranded Firefox Focus?

</comment><comment><USER66> Macos only for now

</comment><comment><USER67> Maybe once they figure out how to monetize the data

<comment><USER68> Chrome's dev tools are so far beyond the competitions that this joke is a non- starter.

When Chrome does add this capability(strange they haven't added it to date given the prior art from years ago), I can see it being used by actual devs inside Google and thus being actually useful.

Contrast that with Firefox dev tools which seem to fall behind the priority list compared to new shiny flashy tech projects they concoct.

<comment><USER69> Don't know why you're downvoted but you're totally right. FF's dev tool is still very far behind Chrome's. IIRC things like websocket inspection aren't even in mainline FF yet.

If people want to see many examples of what Chrome's webtool can do and FF can't, just take a look at this page "What's New In DevTools" for each Chrome release.

[https://developers.google.com/web/updates/2019/10/devtools](https://developers.google.com/web/updates/2019/10/devtools)

<comment><USER70> > things like websocket inspection aren't even in mainline FF yet

Releasing with Firefox 71. [https://hacks.mozilla.org/2019/10/firefoxs-new- websocket-ins...](https://hacks.mozilla.org/2019/10/firefoxs-new-websocket- inspector/)

<comment><USER69> People have been asking for it for years though. IIRC Chrome has had it since at least 2012.

</comment></comment></comment></comment></comment><comment><USER71> As a former gnu/linux user, I see no point to have it on a desktop. Gnu is happy to live under c:/MSYS2, and 'linux' part was never good at desktop-home hardware anyway. These 1.77% are barely justified as an option, imo.

<comment><USER72> After struggling with GPU drivers, again, the last couple of days, I could not agree more!

<comment><USER73> I'm assuming these were the closed source proprietary GPU drivers.

</comment></comment></comment><comment><USER74> is this like Postman ?

<comment><USER75> No it is not. It is a browser feature that allows rewinding to a previous state of a webpage. There is much more to that than recording and replaying HTTP requests.

</comment></comment><comment><USER76> Looks interesting but too bad it only supports overpriced macs making it useless

</comment><comment><USER77> Looks potentially really useful, but is it normal for them to create a whole site just for one new feature?

<comment><USER78> If it is a killer feature, and that's a marketing move - why not. Looks like that Firefox been working hard lately to change trends in browsers' market share.

</comment></comment><comment><USER79> Very cool, but I'd much prefer they spend their time bringing Firefox's dev tools up to par with Chrome's first. I've tried several times to switch to FF completely, but every time I end up switching back on my work computer because of the dev tools.

<comment><USER80> I recently switched back to FF after many years on chrome and find the dev tools to be as good of not better this time around. Curious which tools in particular you find worse? When was the last time you tried?

<comment><USER79> You know, as I'm going back and trying to come up with specific points, I'm having a hard time.

Partly it's little usability things:

\- There was one time when an HTTP request was failing and I couldn't figure out why, and in the Network tab Firefox wouldn't show any information about it, even the request that went out (other than the URL), whereas Chrome not only showed the headers, it surfaced that it was a 404.

\- There's no way to view all source files. You have to go to "Style Editor" for stylesheets and "Debugger" for JS files. I'm not sure how to view the other files that were loaded, outside of the Network tab.

\- I do enjoy how Chrome's inspector puts the box layout directly above the computed styles, instead of in a separate tab.

Those all feel like nitpicks, though. It could just have more to do with me not being used to it. Maybe I haven't given it enough of a chance and should give it another try.

<comment><USER67> FF's tools used to be pretty bad compared to Chrome's, and while my main browser has always been FF I always keep Chrome around for development purposes.

Lately though I haven't found myself needing to switch over to Chrome for anything devtools related. This new replay feature makes FF even more compelling (once it comes to Linux that is).

So if you haven't used FF for development recently, you should definitely give it a try.

<comment><USER79> My last try was pretty recent, but it was also brief

</comment></comment></comment></comment></comment><comment><USER6> We actually have something similar for this for tests at Testim ([https://testim.io](https://testim.io)) but only for tests with screenshots and state.

Would people be interested in us open sourcing that part for regular debugging? I have considered it but I didn't think people would be interested in using this in a non-test case.

</comment><comment><USER81> While Microsoft is making great effort towards opening, it is sad to see Firefox develop a feature working on Mac OS only. This is terrible because you might argue that this is the same as a feature working on Windows only, but Windows can run on different hardware manufacturer. This is like a double closing. I am on Linux and I will uninstall Firefox as a repercussion hoping it will have an impact. Too bad for the last hope for a chrome alternative.

<comment><USER82> > Firefox develop a feature working on Mac OS only.

Looks to me like this is an experimental feature in Nightly. If it's highly system-dependent I can't blame them for testing the feedback as early as possible, before other systems are supported.

Question for Mozilla people here, if anyone sees it - is there a plan to bring this feature across all systems in time for regular Firefox release?

<comment><USER83> Last I heard, WebReplay was not on an official roadmap (in the sense that we do not yet have a target date for shipping it in release). That said, I'm pretty sure that the macOS-only restriction is just because that's what the primary developer is using, and it's a higher priority to get the system- independent parts working first. If/when WebReplay is ready to ship, I can't imagine a world where support isn't eventually added for Windows/Linux (although it could be a phased rollout, like WebRender).</comment></comment></comment>


Anyone knows what's up with Bitbucket?  - <AUTHOR>

It's been down for at least 4 hours already <comment><USER2> According to their twitter account, they are were narrowing it down to an issue with NFS: <https://twitter.com/#!/bitbucket>

They also mention they will have a blog post detailing the outage.</comment>


Tell HN: Proposal for next great leap in software developer productivity - <AUTHOR> Here's the proposal that will lead to a major global leap in developer productivity: shut down Hacker News. <comment><USER2> >BRB building Slacker News

</comment><comment><USER3> Motion supported! :-) (From irc://irc.freenode.org/#hn )

</comment><comment><USER4> Hypothesis: Whenever I'm unable to get to HN, I'm a 10x engineer (when compared to my usual self).</comment>


Oracle Brings Java to iOS Devices (and Android too) - <AUTHOR> https://blogs.oracle.com/mobile/entry/oracle_brings_java_to_ios

<comment><USER2> Very clever - lots of points for the builders of such a thing as I am sure it was not that easy but the big question would remain - why?

It sounds a mess - you don't even get to code in (quote) "low level" HTML5.

I think I will pass.

<comment><USER3> I'm not sure how the HTML5 wrapper can communicate with the java runtime in a performant way. That has been the major issue with similar ideas as no mobile platform allows direct dom access to its webview widget.

Unless I'm missing something the java ME runtime has very poor performance compared to other smartphone vms and doesn't have a JIT at all. I don't think this will fly...

<comment><USER4> It is unlikely to be a Java ME VM under this. It is most likely Java SE or CDC.

A comparison, with Android, of VM performance and battery life would be interesting. There might be some "mobilizing" of SE that they got from SavaJe and applied to this.</comment></comment></comment>


No Amount of Alcohol Is Good for Your Health, Global Study Says - <AUTHOR> https://www.npr.org/2018/08/24/641618937/no-amount-of-alcohol-is-good-for-your-health-global-study-claims <comment><USER2> Previous Discussion => [https://news.ycombinator.com/item?id=17832654](https://news.ycombinator.com/item?id=17832654)</comment>