Show HN: Free web hosting for handshake TLDs, no account required - <AUTHOR> https://github.com/realrasengan/dnslive-webhost <comment><USER2> Free centralized hosting for special TLDs that were supposed to be decentralized through the use of Blockchain. That kind of defeats the purpose of using Blockchain in the first place, doesn't it?

<comment><AUTHOR> I think this is actually what makes Handshake so unique compared to every other blockchain project. Rather than attempting to unrealistically decentralize everything, it's a drop in replacement for a centralized point within the dns system - the DNS root.

Everything else will completely work the same, but giving ownership of the dns root, and moreover, the global namespace, to the people is a huge step forward and what we were always trying to achieve with ICANN but, unfortunately, could not. Additionally, the blockchain in this circumstance also makes the legacy CA system extremely outdated — no more need to trust CAs to do the right thing [1]... the blockchain is immutable.

As for this DNS and web service, since many services currently don't support TLD level hosting (only subdomains like something.com), I put this together to ease adoption until services "upgrade" to allow TLDs! It also serves to show how names in the handshake era can authenticate without accounts which I think is simply really cool without a better way to describe it. It opens up the door for new kinds of services where people bring their own name and identity with them which I think, for HN, this has been something the whole community has been waiting for.

[1] [https://www.tcdi.com/the-threat-of-rogue-certificate- authori...](https://www.tcdi.com/the-threat-of-rogue-certificate-authorities/) (many more examples can be found with a web search)

</comment></comment><comment><USER3> I just checked the namebase site: Did I understand the website correctly, that I can only bid on whatever is up for auction, but not put something up myself?

So if I want: myfancyhandshake I have to wait, till it is up for auction, and I can not pick it? Or can I pick it, but others can potentially bid on it?

<comment><AUTHOR> This was designed to give a fair chance to all names. Each name is released on a release schedule where you can take the hash of the name % 52 to determine which week it will be released. All names will be released within a year.

When it's released, you or anyone can start the auction process!

</comment></comment><comment><AUTHOR> SS: Handshake names have addresses (and keys) associated with them. Because of this, it provides a unique method of authenticating against ownership of a domain without any interaction other than the blockchain and signature verification.

<comment><USER4> Are those free and first come first served? If I forget the key, is the TLD lost forever?

<comment><USER5> > Are those free and first come first served?

No. There's a Vickrey auction for the name. The amount paid is burned.

> If I forget the key, is the TLD lost forever?

No. If the owner doesn't extend after two years I think, the name is put back up for auction.

<comment><USER6> Under "How long are my names good for?" at the FAQ[1]:

Handshake names are registered for one year at a time. Names can be renewed annually by paying a standard network fee.

1: [https://handshake.org/faq/](https://handshake.org/faq/)

</comment></comment></comment></comment><comment><USER7> I went to the website. I read the FAQ. I didn't get it...

Then I watched the explainer video:

[https://www.youtube.com/watch?v=lOj25i_BmMQ](https://www.youtube.com/watch?v=lOj25i_BmMQ)

Then I got it!

Handshake (and other technologies like it) are very, very important to the future of a free and open internet.

Reason: Current websites are dependent on domain names, which are in turn dependent on ICANN and CA's.

If they fail -- then so does your website!

(A chain is only as strong as the weakest link, as the old expression goes...)

This, and other future technologies like it (basically, moving DNS to a blockchain) get rid of the above dependency chain (or could act to supplement it, in the case of a failure).

That's why this technology (and others in the future that will duplicate the blockchain functionality of this) are so important!

ICANN and CA's could, theoretically, accidentally or intentionally censor/redirect your site, and/or destroy your e-commerce business/livelihood!

Now, we assume Good Faith on their part (they are after all, reputable companies!), _but the ethos of the Internet has always been about routing around single points of failure, potential or otherwise._

While ICANN and CA's may use redundant servers in geographically separate regions -- that's no absolute guarantee that war/famine/zombie apocalypse or other "acts of God" \-- would not/could not render them useless in the future...

That's _why_ (if you're running or planning to run) a website, you might need this, or something like this, now or in the future...

<comment><USER8> I am running more than a website (I am also running a SMTP server, NNTP server, Gopher server, and may add a IRC server and telnet server too later); how does this affect me?

</comment></comment><comment><AUTHOR> Server posted here: [https://news.ycombinator.com/item?id=22610940](https://news.ycombinator.com/item?id=22610940)</comment>


WorkerDom – The Same DOM API and Frameworks You Know, but in a Web Worker - <AUTHOR> https://github.com/ampproject/worker-dom <comment><USER2> I worked on a similar project a few years ago: [https://github.com/canjs/worker-render](https://github.com/canjs/worker- render). It could render jQuery apps in a web worker, it was pretty neat.

The problems I ran into, and I suspect this project will run into many of the same things were:

1\. Events are synchronous so to make them async you have to preventDefault them, send to the worker, and then send back and re-dispatch them (if the worker didn't preventDefault). This works ok for many events like 'click' but not at all for things like touch events.

2\. The debugging experience in the worker is not very good. Things you take for granted like being able to do `document.querySelector('.app')` and get a pretty-printed DOM object in the debugger do not work when that object is a fake DOM-like object.

3\. There are a lot of DOM APIs and they continuously grow. Trying to implement everything is impossible. Many things can't (like events described above) be implemented 1 to 1. So it's a constant game of whack-a-mole.

Of these problems #2 is the biggest though. Devtools has a lot of _really_ nice integrations with the DOM that you just lose when you're not using the actual DOM. So users have to decide if the tradeoffs are worth it. AMP might have an advantage in this regard, since you literally have no other choice; use their worker DOM or you can't run your app at all.

<comment><USER3> When I decided to take a stab at something similar, I settled on a different approach in taking an existing asynchronous UI architecture, React Native, instead of just trying to proxy the DOM: [https://github.com/vincentriemer/react-native- dom](https://github.com/vincentriemer/react-native-dom)

I think it works better because the original framework wrestles with the same limitations you mention (though an upcoming rearchitecture doesn't), and while it is by no means perfect, some early results are promising: [https://rndom- movie-demo.now.sh](https://rndom-movie-demo.now.sh)

</comment></comment><comment><USER4> So if I'm reading it right, it looks like it's trying to replicate the DOM interface almost exactly (but in a web worker)! Which means that any UI library should be able to plug into this system and run mostly off the main thread for most of the application's life, bringing JS to parity with a lot of "native" development where you do most of your work on a "main" thread, and only touch the UI thread when you want to do UI things!

It also reads like it might have some kind of virtual-dom implementation to kind of optimize the actual renders needed in the UI thread? (although I'm not very sure about this part).

But this looks incredible from a first glance!

<comment><USER5> doesn't the added vdom lead to redundancy?

<comment><USER6> No, in fact it's likely very beneficial. Virtual DOM is meant to avoid the overhead of interacting with the real DOM (reading and writing to the DOM is slow). Being inside a web worker means that you're still interacting through the DOM, just via a web worker now. So the cost of reading and writing to and from the DOM is still present, plus there's the added overhead of communicating with the UI thread. So vdom in this case makes a meaningful difference by allowing the thread to get more work done in a shorter amount of time.

If you, for instance, blew away the whole DOM and re-rendered it (e.g., setting `innerHTML`) on every state change, the cost is going to be far higher than just tweaking the few things that might need tweaking, like on a keypress. If you're not keeping a virtual DOM around, there's no way to know what the diff is between your new and previous state to be able to make those tweaks.

<comment><USER5> I know how VDOMs work. But the WorkerDOM has an extra one to the one current frameworks bring.

So now there are two VDOMs

<comment><USER6> WorkerDOM has a DOM representation, but I wouldn't call it a "virtual DOM". It's just propagating mutations back and forth. It wouldn't, for instance, have the ability to reorder nodes in a list in linear time (like React does with the key={} prop). When a change takes place, it's not diffing anything, it's just mapping one representation of the DOM onto another. If you set innerHTML in the worker, it would set innerHTML in the main thread also.

</comment></comment></comment></comment></comment><comment><USER7> WebWorkers: Same great JavaScript, now with concurrency bugs!

<comment><USER8> Maybe your new at this but at this point, I've learned not to laugh. SPAs, Node.js, VDOM, transpilers, and many other things sounded absurd at one point.

</comment></comment><comment><USER9> If this is exposing DOM operations in a Worker and then replicating them back to the real DOM in the main thread, what happens if 2 Workers try to make incompatible changes to the DOM at the same time?

<comment><USER10> I imagine one of these DOM is "fake", i.e. it doesn't really have access to the UI. After all, the DOM is a generic API to work with structured node based documents. Changes to the DOM would still need to be serialized in order to be sent to the UI thread.

<comment><USER9> Yes I know. Which is why I asked what happens if two Workers try to make incompatible changes at the same time. How does this library resolve conflicts when applying the changes from the fake DOM to the real one?

In fact, this doesn't even require 2 Workers, you could get a conflict with a single Worker if you're also making DOM changes on the main thread.

<comment><USER11> This is like asking what happens if two different micro-services try to make incompatible changes to the same database.

Or what happens when two different users try to make incompatible changes to the same Google Doc?

Or what happens when you try to GIT Merge a commit that has incompatible changes?

It's your code, so it's in your control what happens, and also in your control how to react to what you can't control.

You can write code that avoids conflicting manipulations (let's say all the dom manipulations only ever happen on one thread) or you can write code that handles the case... It's a case by case kind of thing, there is no one answer.

<comment><USER9> All of these cases have a well-defined conflict resolution mechanism. All of these cases except for Google Docs explicitly have a way for the client to be notified that their requested change failed (I believe Google Docs just defines the editing operations such that a conflict can always be automatically resolved).

The DOM API does not have any way to even notify the client that their DOM manipulation failed.

</comment></comment></comment></comment></comment><comment><USER12> Very much appreciate the work

What's AMPs goal here, is it to have untrusted third parties write their own UI's, but still run that whole site on the google domain? I hate to be cynical but if so that's the same old walled garden approach to further centralize the web

It would be far easier to just rate the page performance specs while indexing, and provide a free google CDN for heavy assets to protect privacy so they can preload most of them

This does look exciting for things like embedding small components from untrusted third parties into the middle of an article or page though

</comment><comment><USER13> Wow, the contortions we go through trying to make HTML into a full-blown native application platform, instead of writing native applications.

I'm impressed, but good god do we spend a lot of time reinventing the wheel within the limitations of browser engines.

<comment><USER14> You're probably right, but there are no alternates, so people build what they want with what's available.

I'm no expert in native or web development, but I don't know of any native GUI framework that looks as good as browser rendering does, is free, is easy to distribute, and secure.

<comment><USER15> Like QML from Qt?

</comment></comment></comment><comment><USER16> Serious question: Could not a similar thing be implemented by running the "main thread" in an iframe using the browser's own DOM and the postMessage API? It might lack the optimizations of a virtual DOM, but would probably require a lot less code to achieve.

</comment><comment><USER17> Any idea when the jsconf us videos are planned for release? This work was apparently presented there. [1]

[1]: [https://speakerdeck.com/cramforce/workerdom-javascript- concu...](https://speakerdeck.com/cramforce/workerdom-javascript-concurrency- and-the-dom)

</comment><comment><USER18> What are the performance implications of this? Does the proxy employ a VDOM cache? How does this compare to running the DOM manipulations natively inside the main thread?

</comment><comment><USER19> I don't like this. It must be slow and bloated because it is a DOM written in JS rather than native optimized DOM implementation. And why would anyone need that?

<comment><USER20> Correct me if I'm wrong, but if you work with DOM, modify/read properties, they lead to DOM trashing and re-rendering. If you do this 100 times per event handler, it will become slow.

If you do all that work in a worker and then only update the real DOM once, it will be much faster.

Render/paint is the slowest part in a JS application.

</comment></comment><comment><USER21> Unfortunately, in my current app, the actual issuing of DOM updates seems to be what's blocking things. Inserting large tables takes some time.

<comment><USER4> That's where stuff like batch inserting the elements (split your table up into groups of 100 elements, and add one every so often to keep the UI smooth), and virtual-rendering (only show the part of the list that is actually visible) are going to be the only real solution.

Oh, and making your DOM simpler if possible, but normally there's not a ton of gains to be had there in my experience.

<comment><USER21> There's a lot of tricks you can try, but even rendering the first set of visible rows can take more than a 60fps time window will allow.

<comment><USER22> Don't pick a fixed value for the batch size; render until your time is exhausted and then wait for the next batch. Yes, this'll be slower overall, but you ensure that the app stays responsive regardless of device or CPU availability.

<comment><USER17> Are you recommending an app imposed rendering timer (say 15ms) or is there an in built API for Opportunistic scheduling of Dom updates?

<comment><USER23> You might want to check out this thread from last week[0] about scheduling tasks when the event loop is idle. The author also published a library for it[1]

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

[1]: [https://github.com/GoogleChromeLabs/idlize](https://github.com/GoogleChromeLabs/idlize)

</comment></comment></comment></comment></comment></comment><comment><USER24> my only concern with this is...with a web worker, my understanding was that any dependencies to the web worker would be loaded separately from the actual UI thread, which means you could potentially be loading your javascript twice if you have the same code being used in the UI thread as your web worker thread.

At least, that is how it worked a few years ago.

</comment><comment><USER25> Link to blog post: [https://amphtml.wordpress.com/2018/08/21/workerdom/](https://amphtml.wordpress.com/2018/08/21/workerdom/)

tldr; aim is to bring scripting to AMP pages

</comment><comment><USER26> I don't quite understand how busy your page must be if you feel that you're held back by the performance of one thread with the DOM.

You know, DOM isn't really for video games or realtime data visualization.

<comment><USER27> I think this is more useful from the perspective of, if you have some busy task and you need to get the data back into the DOM, what can you do? You either need to build a messaging layer, which was the defacto way, or use this. I have a few projects that could benefit from this, being able to put a progress bar in the DOM and have the worker update it in a clean API is pretty neat.

<comment><USER28> Often though, a better pattern for that is to have your "compute thread" not know _anything_ about the UI - it just sends back packets of result data, or serialized model updates, which the view-model layer back in the "UI thread" uses to rerender.

If React's virtual DOM diffing is epxensive enough to be a bottleneck in some applications though, I could see an advantage to moving _that_ off thread...

<comment><USER29> There's been some experiments with moving React's logic into a web worker, but the main one I know of was a couple years back : [http://blog.nparashuram.com/2016/02/using-webworkers-to- make...](http://blog.nparashuram.com/2016/02/using-webworkers-to-make-react- faster.html) . Would be interesting to try updating that.</comment></comment></comment></comment>


Show HN: Tableau-Like Data Visualizations in JavaScript - <AUTHOR> https://www.charts.com/muze <comment><AUTHOR> Hey everyone,

I'm part of the Muze team at Charts.com. Over the years I've seen lots of people who struggle to find the perfect balance between low-level visualization kernel (like d3), or black-box configurable charts (HighCharts, FusionCharts).

So we decided to build Muze taking a data-first approach, where you load your data in an in-browser DataModel, run relational algebra enabled data operators to get the right subset of data, and then just pass to Muze engine, which automatically renders the best visualization for it.

Any changes to data (including application of data operations) automatically updates the visualization, without you having to do anything else.

Couple of added benefits are : \- With other libraries, if you've to connect multiple charts (for cross-interactivity, drill-down etc.), you've to manually write the 'glue' code. With Muze, all charts rendered from the same DataModel are automatically connected (enabling cross-filtering).

\- Muze allows faceting of data out of box with multi-grid layout.

\- Composability of visualizations allow you to create any kind of cartesian visualization with Muze, without having to wait for the charting library vendor to release it as a 'new chart type'

\- Muze exposes Developer-first API for enabling interactivity and customizations. You can use the low-level API to create complex interaction

We've literally just launched this last month or so, so I'd love some feedback if you can spare the time.

Thanks for taking a look!

Website: [https://www.charts.com/muze](https://www.charts.com/muze) Github: [https://github.com/chartshq/muze](https://github.com/chartshq/muze)

<comment><USER2> > I've seen lots of people who struggle to find the perfect balance between > low-level visualization kernel (like d3), or black-box configurable charts > (HighCharts, FusionCharts)

This is the biggest pain point for me with most current solutions. Either development time is super fast (e.g., tableau, periscope) but going beyond 80% is difficult, or development time is much longer (e.g., d3 or apis thereof) but you get full customization and getting to 100% is straightforward. For me, there is certainly a need to develop an 80% solution fast, but I also am always wanting to then redo the whole thing with lower level solution. I would prefer that I can piggy back off the 80% solution to 100% in the same software. That's a huge win for me. Thanks for providing a solution to this end, will definitely play around with this.

<comment><USER3> Hey `cpsempek, Periscope Data CEO here.

In a perfect world, how would the charting in Periscope work? How would you want to go from getting 80% very fast, to going to 100%, in the same software?

<comment><USER2> Hi, thanks for the reply! Actually, apologies for throwing your name next to tableau like that. I think your product does a great job incorporating things like R/python scripting to allow more flexibility in how data can be manipulated within the product. In this sense I prefer periscope to tableau (an in many other senses actually).

A problem I encountered (granted over a year ago) was creating grouped bar charts with confidence intervals. Bars were grouped on some discrete x axis labels. The suggested solution for confidence intervals on grouped bars was to use a scatter plot to draw the confidence intervals, but this clumped them all on the xlabel position, not in the center of each bar. matplotlib for example treats the visualization as an object, in which case it makes a lot of sense that to add confidence intervals just query the bar objects for their positions and place line segments of desired widths in the center of the tops of the bars (or wherever, you have full control over this). So in general, a marriage of these two paradigms, quick development of a visualization based on data, but then the ability to switch to viewing and manipulating the visualization as a collection of instantiated objects with full control over their attributes.

I am open to revisiting over any development periscope has made to this end.

<comment><USER3> Appreciate the feedback!

Yeah, the hack you described for CIs is typical of "80% charting". We have a list of probably thousands of longtail visualization requests and we're way past the 80/20 point.

These days customers who want to go 100% use the Python/R editors and do their custom visualization there. So you do your SQL query like usual, but then pipe it to Python/R for the visualization. Have you tried that, and has it worked for you? Or do you prefer another model?

<comment><AUTHOR> Maybe try Muze to be able to build all those long tail viz :) - given that you don't have to think of any viz in Muze as a chart type - but rather compositions through layers. Would love to talk to you guys!

<comment><USER3> Always happy to talk! harry at periscopedata.com

<comment><AUTHOR> Sending you an email tomorrow

</comment></comment></comment></comment></comment></comment></comment></comment><comment><USER4> Is there a plan to create a version that generate the graphs and manage all the filtering on the server side instead of having all the data in the browser?

This will be very helpful for cases that uses large datasets...

I built visualization using dc.js, and working with large datasets was the biggest pain point for me.

[http://adilmoujahid.com/posts/2016/08/interactive-data- visua...](http://adilmoujahid.com/posts/2016/08/interactive-data- visualization-geospatial-d3-dc-leaflet-python/)

<comment><USER5> We had plans to move DataModel (manages all data ops) to serverside. We even have a half baked DataModel in Scala which we thought we would do it once we understand some usecase. But currently we have put it on hold.

We would love to know your \- use case \- number of data points \- ops on data on serverside

You can mail us to firstname.lastname@example.com

<comment><USER4> One use case could be a data visualization similar to what I built in [1]

To build the visualization in [1], I used 3 datasets in csv format from a kaggle competition [2], and I implemented the charts using dc.js and Leaflet.js. The charts were interactive and I could managed to filter the data even in the map.

The largest dataset was 284 MB, which was still ok and didn't crash my browser.

There were 2 drawbacks to my approach: 1- All the data was in the browser. If my data was bigger (~1GB), then it would crash my browser. 2- If I deploy the visualization to a server (for example AWS), then it would make the rendering extremely slowly as it has to download all the data to the browser...

[1] [http://adilmoujahid.com/posts/2016/08/interactive-data- visua...](http://adilmoujahid.com/posts/2016/08/interactive-data- visualization-geospatial-d3-dc-leaflet-python/)

[2] [https://www.kaggle.com/c/talkingdata-mobile-user- demographic...](https://www.kaggle.com/c/talkingdata-mobile-user- demographics/data)

<comment><USER6> Just had to say thanks [1] , was one of my first reads when learning dc.js and very helpful!

</comment></comment></comment></comment><comment><USER7> Holy crap that's an A-level domain. How'd you guys get it?

<comment><USER8> Interestingly enough, while this is as good as it gets, my initial reaction to domain name was negative. From previous experience I learned that domains like that are taken by squatters or companies that... Well, don't really know how to capitalize on them. Kudos to OP for actually offering something to do with charts! :)

<comment><AUTHOR> Well - we took it from squatters :) and are trying to turn it into something really useful. That's why looking for feedback on what we've built!

<comment><USER9> Took it from squatters? Do you mean legal action?

If so. I think this would definitely be worthy of a blog post on exactly how you did it.

Everytime I search for domain names, they are all taken up by squatters who want 5 to 6 figure amounts and they have been sitting on them for more than 5 years, 10 in some cases.

Of course I email them back laughing, but it does mean I have to choose something completely different.

I'm definitely not going to do a snappa.io to snappa.com lol [0].

[0]: [https://www.reddit.com/r/Entrepreneur/comments/60gnyx/how_we...](https://www.reddit.com/r/Entrepreneur/comments/60gnyx/how_we_purchased_the_snappacom_domain_for_40000/)

<comment><USER10> I really wish there was a legal limit to how long you can squat, say 5 years, before it goes to a lottery system for a pool of people who applied to be apart of the lottery and can show legitimate use for it.

</comment></comment></comment></comment></comment><comment><USER11> I've been a career data analyst for 12 ish years. At first I didn't get the reference to Tableau, because I use Tableau for about 5-8 hours every day. I've played around with every new charting library since Flex because I've always wanted to create a free version of Tableau that gets me 80% of what I use Tableau for, but with 1% the frustration of using Tableau. Problem was, I could never figure out how Tableau is able to create its visualizations so easily just by drag and drop. Every library makes you think of the chart you want to make beforehand, but as an analyst, I work on the data first then spend almost equal amount of time finding the most intuitive visualization for the trend I'm trying to convey. So I've just put that idea on hold indefinitely.

I went through the tutorial and I have to say...oh man, this is amazing. Building a Tableau clone is now possible! I hope you guys don't go under because its going to take me a while, but I'm super excited!

Does this work on mobile? Also, when I click "Play" the chart takes atleast 1-2 seconds to render. Is that just your code running engine or does every visualizations have that lag?

<comment><USER5> Hey it does work on mobile. However, remember visualizations like crosstab, splom are not meant to be displayed in a space constrained area as is. There are multiple way to handle this situation. At this point of time Muze does not changes layout based on space.

The web framework fetches data, does some additional checking on data and schema, process visible code and render it. That is probably the reason you are seeing lag.

Also there are few areas where Muze performance needs to be improved. We are doing a release to address this soon.

</comment></comment><comment><USER12> Hey, what did you guys use to build the feedback/roadmap part? ([https://feedback.muze.charts.com](https://feedback.muze.charts.com)) Is it a third-party service or something built in-house?

<comment><USER5> We have used fider [https://github.com/getfider/fider](https://github.com/getfider/fider)

<comment><USER13> Omg, I've been looking for an open source version of something like this for a long time. Thank you!

</comment></comment></comment><comment><USER14> Just saw a tweet storm of the CTO of Charts.com talking about Muze and a lot of the things make sense as to why they went with a data first model and the roadmap ahead. Link for anyone that's interested: [https://twitter.com/1dot61803/status/1047384637289500673](https://twitter.com/1dot61803/status/1047384637289500673)

</comment><comment><USER15> We currently use Plotly quite a bit where I work for a customer facing website with a wide variety of charts. Does anyone know what some of the tangible benefits might be to migrating to this instead of using Plotly?

<comment><USER16> Having only browsed both Plotly and this project, this is my understanding:

Plotly seems like its just the charting/graphing layer. A common use case (and increasingly an expectation) is that a series of graphs on a single page be responsive and cross filterable. For instance, if you click on a single element on one chart, it should filter the related charts accordingly. Additionally, these filters should build on each other and the developer/analyst should be able to define that.

Really, you're now doing a form of data modelling and in the domain of BI, and Plotly isn't going to help you figure any of this out.

Tableau and Power BI have gotten traction by building products that not only include but prioritize this form of modelling. Once you define your data model, you get the multi dimensional charting for free.

The appeal to me of this library (not having done a thorough G2) is an open source alternative to those products that integrates charts and data modelling easily.

</comment></comment><comment><USER17> Checkout [https://github.com/vega/voyager](https://github.com/vega/voyager)

<comment><USER5> Voyager is a recommendation system based on variables characteristics present in data. User is mostly limited by the offerings of voyegar (same story of [https://github.com/vega/polestar](https://github.com/vega/polestar)).

Vega is descriptive version of d3. We find it hard for debugging and creating complex viz.

Vega-lite is concise and more intuitive version of vega though.

However Muze was created to start directly from data, creating layout, composable layers, automatic cross interaction and a robust interaction mental model. Muze is inspired from VegaLite-InfoVis and Snap together viz paper.

<comment><USER18> Hi, one of the Vega-Lite author here. I'm glad you like Vega-Lite and were inspired by our Infovis paper. Vega-Lite is much more mature than when we wrote the Infovis paper so I suggest you to check it out. Compared to Muze, Vega-Lite is embracing full declarativeness.

<comment><USER5> Hey I think you are Dominik (guessed from your handle). Thanks for the reply.

Vega-Lite paper and layered grammar of graphics are the biggest motivations to write Muze. Vega-Lite is still my goto viz library for my ipython and JS work. Hence there are healthy intersections between vega-lite and muze terminologies and concepts.

Would definitely love to check new development.

<comment><USER19> How is Vegalite different from Muze?

</comment></comment></comment></comment></comment><comment><USER20> Looks promising. How does Muze integrate with React?

<comment><AUTHOR> It's well compatible with react. However we dont have a react component at this point of time. We are gonna make that happen soon.

</comment></comment><comment><USER21> I'd like to know how the team made that amazing SVG-based animated banner image. That alone looks amazing!

<comment><AUTHOR> It was a handwritten svg animation with d3 later enhanced using adobe illustrator.

</comment></comment><comment><USER22> Is it possible to have multiple scales on a single axis this is something we use a lot at my work but very few javascript charting libraries seem to support.

Example here: [https://imgur.com/a/zd5Giom](https://imgur.com/a/zd5Giom)

</comment><comment><USER23> Looks very nice at first glance. I'm just digging into each example visualization. Noticed that the "Bubble with temporal axes" seems to peg my browser (Chrome 69 on Mid 2015 2.5 GHz Intel Core i7 Macbook Pro).

<comment><USER5> yes we have also noticed that and fixing that.

</comment></comment><comment><USER24> Thanks for sharing!

A number of the charts in the examples are cut off (height-wise). [https://www.charts.com/muze/examples/view/heatmap](https://www.charts.com/muze/examples/view/heatmap) for example (in Chrome 69). Seems fine in Firefox.

[https://imgur.com/a/Dq4fiz0](https://imgur.com/a/Dq4fiz0)

<comment><USER5> Ahh. Will fix this.

For the time being, you can click on the play button on top right corner of the code section.

</comment></comment><comment><USER25> Shameless plug for a data + markup based approach, hiding some of d3.js complexity: [https://github.com/PolymerEl/multi- verse](https://github.com/PolymerEl/multi-verse).

Codebase is being migrated to Polymer 2.0, and better documentation.

<comment><AUTHOR> Looks great! Can we think of a way to integrate muze using your approach? :)

<comment><USER25> Core idea behind this approach is to expose API properties as web-component attributes so that you can compose your charts and visualization at markup level (and share/react to properties between components).

I do not see any reason why this could not work with your API. If interested, some concrete/simpler examples available from [https://github.com/PolymerEl/multi-chart](https://github.com/PolymerEl/multi- chart) (also being ported / simplified; ETA next week)

</comment></comment></comment><comment><USER26> How do you plan to support the team and project, financially, over the long haul?

<comment><AUTHOR> We intend to be an open-core company, and monetize support and tools around the product.

<comment><USER26> Cool. You might consider describing Muze as a project rather than a product. E.g., On the homepage: Our first product, Muze... -> Our first project, Muze....

<comment><AUTHOR> Thanks for this nugget. Will consider and then change! Curious question: why would you not want to call an open source library as product?

<comment><USER26> I associate "product" with something that is sold, so when I saw Muze described as a "product," but I didn't see a price, I was somewhat wary that the price was hidden or forthcoming.

"Project" is also a fairly common term to refer to open source tools and the community around them. See the nav bars for linuxfoundation.org or numfocus.org, for instance.

<comment><USER27> ^^^ I had the same thought process. I spent a few minutes clicking around the site to figure out the catch to the open-source library that is the only product of a company with a $$$$ domain.

<comment><AUTHOR> That's just the first product - open-core.

We will be making more products in future, some OS, some paid. So yes, monetization is on the cards :) - but our first goal is to create real good value!

</comment></comment></comment></comment></comment></comment></comment><comment><USER28> this was the most interesting thing for us, but it is broken in Chrome/Linux. [https://www.charts.com/muze/examples/view/microcharts-in- tab...](https://www.charts.com/muze/examples/view/microcharts-in-table-using- crosstab)

Also what is the Reactjs story here ? We went down the "tabular views" journey a while back and eventually settled on react-virtualized which i think is the best of breed.

<comment><USER5> Hey, which linux distribution are you talking about? We have checked in chrome/Ubuntu and seems it works alright.

However, will make sure it gets tested with all linux dist before next release.

Are you looking for integration? > Also what is the Reactjs story here ?

</comment></comment><comment><USER29> Is there any timeline example? Like [http://visjs.org/timeline_examples.html](http://visjs.org/timeline_examples.html)

<comment><AUTHOR> Thanks for bringing this up. It's possible to create visualization like this using Muze easily. Will create an example and keep you updated. Should we reach out to you once done (if yes, let me know how)!

</comment></comment><comment><USER30> Nice work. I see a lot of potential.

Offtopic question, apologies: Where and how one can create the start page animation ( the one in 3D , with the moving impulses and floating charts ) ?

<comment><AUTHOR> It was a handwritten svg animation with d3 later enhanced using adobe illustrator.

<comment><USER30> Thank you. Very well done!

</comment></comment></comment><comment><USER31> How does this compare to Plottable, another composable visualization library?

[http://plottablejs.org/](http://plottablejs.org/)

<comment><USER5> Just saw plottablejs. I can make an informed comparison without using it.

However [https://www.charts.com/muze/docs/composing- layers](https://www.charts.com/muze/docs/composing-layers) explains some part about muze's composability. And this is an example [https://www.charts.com/muze/examples/view/composition-of- lay...](https://www.charts.com/muze/examples/view/composition-of-layer)

Apart from composable layers Muze has \- tabular layout (visual crosstab) created from data facets [https://www.charts.com/muze/examples/view/crosstab- chart](https://www.charts.com/muze/examples/view/crosstab-chart) \- auto interactions [https://www.charts.com/muze/examples/view/crossfiltering- wit...](https://www.charts.com/muze/examples/view/crossfiltering-with-dynamic- layer-addition) \- Legend on any chart [https://www.charts.com/muze/examples/view/gradient- legend](https://www.charts.com/muze/examples/view/gradient-legend)

etc...

</comment></comment><comment><USER32> That's quite an interesting mix of HTML and SVG. Cool stuff.

The website could be a bit more responsive. The charts are overlapping if I make the browser narrower.

<comment><USER33> Seems to work properly if you inspect it at common breakpoints. Love the cross-connectivity between charts.

<comment><USER5> Yup cross connection could be configured using API to change the default behaviour Example: [https://www.charts.com/muze/examples/view/crossfiltering- wit...](https://www.charts.com/muze/examples/view/crossfiltering-with-dynamic- layer-addition)

Will upload the docs for this soon.

</comment></comment></comment><comment><USER34> The example pages all have the visualizations in an iframe.

Is that required, or is there some way to generate and display these without the iframe?

<comment><USER33> Hey tyingq, The examples are loaded in iframes due to security considerations given that the sample code is editable. For your own use you don't have to load the charts in in iframe.

</comment></comment><comment><USER35> Hi pallavn (or someone else who might know), how was the animation at the top of the page created? Beautiful work all around btw!

<comment><USER5> It was a handwritten svg animation with d3 later enhanced using adobe illustrator.

<comment><USER36> Is the person who did it available for hire? Awesome work!!

</comment></comment></comment><comment><USER37> How will this be monetized? Any pricing/licensing info?

<comment><AUTHOR> Open-core is free. We'll monetize support & tools we build around it!

</comment></comment><comment><USER38> Where did you get the cool animation? It's nice.

<comment><USER33> Animations like the one on the front page of [https://www.charts.com/muze](https://www.charts.com/muze) can be created using adobe aftereffects and exported using the bodymovi plugin as a JSON file along with keyframe images. The exported animation can be loaded using the lottie framework. [https://airbnb.io/lottie/](https://airbnb.io/lottie/)

<comment><USER38> This is great.

</comment></comment></comment><comment><USER39> thanks for sharing, but holy slowwww

<comment><USER40> Exactly what I saw. This isn't a matter of slow server, but some examples are taking way too much ressources. Freezes. In the case of many charts in the scope, as i need refresh every 10 seconds, this will turn in blocking in no time. Testing performances in firefox debugger is already freezing with one chart and no refresh, and i didn't see the garbage collector be significant. (Memory leaks..) Too bad that charts are good. But performances should be a big warning.

<comment><USER5> Hey we noticed [https://www.charts.com/muze/examples/view/bubble-with- tempor...](https://www.charts.com/muze/examples/view/bubble-with-temporal- axes) is a slow one but should not as bad as you are saying. However we are making some changes for performance and gonna release in few weeks. But i'll double check the scenarios you mentioned.

</comment></comment></comment><comment><USER41> Great Animation on the front page.

<comment><USER42> Thanks, aldoushuxley001

</comment></comment><comment><USER43> What does pseudo-immutable mean?

<comment><USER5> So we create instance of DataModel once and then we perform operation like filtering, projection of columns, sorting etc. Everytime an operation is performed a new instance of DataModel is returned. Hence its immutable. But under the hood there is only one copy of data resides in the system shared by all instance of DataModel, for every operation we just record a formula and save it on DataModel instance. The data for that particular instance is computed on demand based on the formula. Its not a pure immutability by definition. Hence pseudo-immutable.

However, every operation does not support formula storing. Operation like joining, grouping creates new data.

We are updating the docs rapidly. All this info would be on the docs soon.

</comment></comment><comment><USER44> how does this compare with fusioncharts ?

<comment><AUTHOR> FusionCharts is a configurable JS charting library. You choose your chart, define the parameters (highly configurable, though) and then render it. FusionCharts' strength is ease of use, backward compatibility, theming etc.

Muze is data-first. You start with data, apply any operations (if needed), then render. Muze automatically detects the right chart for that and then renders. Also Muze allows you to compose any kind of cartesian visualization, as it follows grammar of graphics.

So if I've to explain this in a spectrum, it goes like this:

d3 (very powerful, high learning curve, you can do anything) Muze (data-first, Grammar of graphics oriented, compose viz) FusionCharts (chart-first, lot of depth in configurations, but can't extend yourself for new chart types)

Hope this helps.</comment></comment>


Ask HN: Would you want a way to share an email via URL from Gmail? - <AUTHOR> I'm thinking about this as a way to publicly share an email thread. A future version could have you setting a password, or sharing only to a select group of people. But rather than "sending" an email, you turn an email into a link (like an archive), and then have that URL that you can reference. You could also create a list of multiple such links, to collect some archives together.
I'm just thinking email is so useful and ubiquitous, and the web and URLs are so useful, but there's not really a way to do this.
I know there are some where you can forward it to some place and then it becomes a web page. Someone this seems non ideal. But maybe I'm just imagining this. Maybe this is not useful for people at all.
Anyone want this? <comment><USER2> There are many, many problems with the idea, so it would be useful if you could lay out:

* Why you think this would be useful ... can you give a specific use case that people here would identify with?

* What problems can you see, and how would you overcome them?

* How would it work? How could you make it effectively friction-free?

You say:

> _I know there are some where you can forward it to some place and then it > becomes a web page._

I've never seen or heard of such a thing ... can you explain why this "seems non-ideal"?

In short, I'd be interested to see your thinking.

</comment><comment><USER3> You're describing a mailing lists and news groups.

If I want to share an email thread with specific people I can just forward the thread. If I want to publish it I would take the time to edit and format it, because an email thread gets messy really fast and full of repeated and irrelevant information.</comment>


Would anyone be interested in a capable (and free) apprentice? - <AUTHOR>

I'm a bootcamp graduate, with all the good and ugly parts of the experience that that status entails (Good: I learned more in ten weeks than I might ever have before in my life. Ugly: I still feel a far-cry from production-ready.) and I wanted to propose something to the population of Hacker News: A mutually beneficial, adapted-to-modern-times apprenticeship.
The problem: I have the means to contribute professionally in development, but only small, personal projects (along with my bootcamp capstone) under my belt for experience. I need hands-on experience with larger projects in order to convince anyone to make a serious bet on my future and hire me, full-time.
The solution: I help you out. I write code, refactor, do the semi-technical grunt-work and scripting that always comes with dev projects. Anything that could help me be more attractive as a developer in the future.
What I ask: A recommendation and - on a larger level - career guidance. The opportunity to code meaningful things.
Who this is great for: open-source hackers, freelancing lone wolves, senior devs who want to outsource some things. <comment><USER2> No, no, no. Don't work for free. Apprentices don't work for free in any other industry. Why should you work for free?

Go out and get a job that trains you to be "production ready." You will get to to work on bigger projects, "code, refactor", and do "grunt work". Plus you will get paid.

Nothing wrong with seeking an apprenticeship. I just don't understand why you would think that "free" is a good idea.

<comment><AUTHOR> Good advice, I know. It just feels doubly hard for me to get coding work now, because my day-job is in writing and not very technical. I suppose I envisioned it being paid eventually, when I got to the point where I was productive, but you're right: I have to value my work first before other people will, right?

</comment></comment><comment><USER3> Go to github.com, find 1 project that fancies you ( _any_ project it doesn't matter which one). Find 1 way to improve that project and publish your fix either as a pull request or a plain issue on their tracker. Doesn't matter if it's just a spelling error or something trivial. Just DO IT!

Don't think you can do it? Well, try and try hard! Think you can do it, but think the exercise is to menial? Think again!

<comment><AUTHOR> Definitely don't think it's too menial, but you're right about setting that first bar low - even spelling errors are good finds!

Thanks for the advice.

</comment></comment><comment><USER4> I'm building up a team to address this exact issue.

Most of the folks have that 'beginner' experience, but they just lack the real experience (think of this as the "next step" after learning basic stuff on Codecademy or Codeschool).

All the projects will (ideally) be open sourced and there's no charge to join either. I have about 40+ signups so far.

I will be posting a Show HN soon.

</comment><comment><USER5> Maybe find an open source project to contribute to that interests you? I'm not active in the open source community myself, so I don't have any great suggestions - but maybe someone on here can suggest some projects with a good community that could use someone w/ your skillset?

</comment><comment><USER6> If you provide a way to contact you, or I can provide a way to contact me, I am willing to offer some of that career guidance, as well as some paid intern work.

Lets get in touch, we can discuss some specifics, and my background so that you know what I bring to the table.

<comment><AUTHOR> Thank you! I didn't expect but certainly hoped for a positive reaction from the community.

My email is email@example.com and you can see more links and read a little more about me at joecmarshall.com

</comment></comment><comment><USER7> Your profile has an email field, but that is not shown to the world.

Put an email address in your profile in the about field and people can see it. (Although it's probably preferable to put your email in the post)

</comment><comment><AUTHOR> Thanks so much y'all for the response: I really value all of your input! My email, for those interested, is:

email@example.com

And my portfolio site can be found at joecmarshall.com

</comment><comment><USER8> How can I get in touch with you? :)

Also, is there something you are particularly interested in? Frontend? Backend? Databases? Specific technologies or programming languages? Specific industries?

<comment><AUTHOR> Front-end, with an emphasis on Javascript, jQuery, and JS MVCs. I audited a course recently on PHP and SQL, but I'm mostly interested in that only as far as I need to know it for front-end stuff.

My email is firstname.lastname@example.com. I'd love to chat more.

</comment></comment><comment><USER9> Why not get an internship..? Get paid, get involved in the industry, learn, and create. Plenty of them.

If not, go to some local industry meet ups and I bet you can find one quickly.

</comment><comment><USER10> Sent you a jobvite for Whitehat Security scrap the whole free idea get paid to work at a really fun place and actually "hack".

<comment><USER11> Hey sprkyco,

I have java development experience and would like to get in security domain. My full time job ended in May. I live in San Diego and the job market here is not as great as in northern CA. I would be in interested in the entry level positions advertized in the Whitehat Security career site. where should I start? Since I do not have any security experience submitting my resume may not be an effective option. Thanks, Tad

<comment><USER10> Whitehat is not really looking for extensive security backgrounds for some of their positions. The best way to get in is to show how and why your interested in security. There are many sources to do this. Damn Vulnerable Web App, WebGoat, and Guyere are some available options to see if your really interested in security. I highly reccomend applying for the static code analysis position as a Java programming background would be instrumental in identifying vulnerabilities.

</comment></comment></comment><comment><USER12> Go to hackathons, join a team, and build something. That's the fastest way to paid work.</comment>


Oh, The Humanity: My Chatroulette Experience - <AUTHOR> http://techcrunch.com/2010/02/15/oh-the-humanity-my-chatroulette-experience/ <comment><USER2> Fun fact: chatroulette exposes _to other chatroulette users_ 1) your IP address 2) the fact that you're running this random-ass network-exposed Flash app. IP addresses are geolocatable, so it's not so anonymous. Would be cool to have a helper app that geolocates the user's IP and shows you where they're from. (I found this out in 5 minutes using WireShark.)

</comment><comment><USER3> I guess I just don't have the narcism necessary to understand any tech reporter or otherwise would think anyone one would be interested in reading an entire article of them spending the morning on a social media website.

I don't think I've ever seen anyone write an article on how they sat on Facebook all Saturday night and how great it was.

I could understand if something hilarious or eventful came from it - but even then I would post it to my twitter or somewhere it would be relevant, not make it an article for my job.

</comment><comment><USER4> I figure by the end of the month most of the people on Chatroulette will be reporters doing stories about Chatroulette.

<comment><USER5> I think you underestimate how many perverts there are on the internet.

<comment><USER6> Reporters can be perverts too.

</comment></comment></comment><comment><USER7> i'm curious why anyone voted this up. is it not exactly like every other chatroulette post on here in the past few days? someone tries out the site, sees a bunch of dicks, and posts screenshots. where's the interview with the site creator or the technical information about its infrastructure or anything else hacker news-related?

<comment><AUTHOR> I just submitted(so 1 vote) to see if all my submissions were getting banned or just the ones from my blog.</comment></comment>


Show HN: Smartmockups – Create product screenshots with just a few clicks - <AUTHOR> http://smartmockups.com <comment><AUTHOR> Hello guys, I'd like to show you our new project. It's a curated collection of product mockups for all designers, marketers and developers. All mockups are free and ready for personal and commercial projects. No Photoshop needed, you just pick one mockup, upload your image and download the final image in high resolution. Everything is processing in your browser so your files are safe.

<comment><USER2> Not working on Chrome,please fix it.

<comment><USER3> Works here (48.0.2564.109 / W7) - fix your setup.

</comment></comment></comment><comment><USER4> Do you have plans to add mockups with multiple devices in a single image? I make those the most to show the flexibility of responsive design

</comment><comment><USER5> The phone is eating this man's thumbs! [http://smartmockups.imgix.net/47_bg.jpg?fit=crop&w=360&h=270...](http://smartmockups.imgix.net/47_bg.jpg?fit=crop&w=360&h=270&blend=47_fg.png&bm=normal&bf=crop&bw=360&bh=270)

<comment><AUTHOR> Well, you're right it looks like that from the small thumbnail, but the thumb is actually there, it's just weirdly bent

[https://www.dropbox.com/s/0cu50g59r7ys1ce/Screenshot%202016-...](https://www.dropbox.com/s/0cu50g59r7ys1ce/Screenshot%202016-02-25%2016.34.42.png?dl=0)

<comment><USER5> Well perhaps I should include a screenshot because when I view the link I included the screen image is clearly going over the thumbs. Your screenshot is not the same as how it appears in my browser.

<comment><AUTHOR> And did you try to refresh the browser? Sometimes there is a PNG layer (with the thumb) missing but after refresh everything should be fine :)

</comment></comment></comment></comment><comment><USER6> would be really cool if it just accepted a url and showed the rendered version of the page on all the images available...

<comment><USER7> That's a great idea! We plan to add the possibility to add screenshot from URL in near future, but capturing multiple screen sizes and rendering them all at once would be pretty cool! We're adding it to our todo list :)

</comment></comment><comment><USER8> Typo on "How It Works" page: "choose the rosultion". Also maybe change the wording of "You can also upload a new image if you were wrong." seems a bit odd as it is.

Also, it'd be nice if at Step 3 you actually showed some mockup on a device rather than the same "Your Design Here" image seeing as it's supposed to demonstrate a sample finished product.

</comment><comment><USER9> I've been thinking of creating something similar (actually more like a grunt workflow). I seem to make the same mockups for all web-apps I create.

Does this service have a Photoshop instance running in the backend? I was basically thinking of a way to pro-grammatically insert images into the smart objects of my product mockup templates.

Any suggestions from HN?

<comment><USER10> Image Magick will probably be able to do the trick: [http://www.imagemagick.org/script/index.php](http://www.imagemagick.org/script/index.php)

</comment></comment><comment><USER11> This is really great. Can you distinguish yourselves from placeit.net somehow in the long run?

<comment><USER12> What are its advantages over placeit.net?

<comment><AUTHOR> The main advantage is probably the price. Placeit is really expensive and I'm not sure if it's bearable for all freelance designers. Another may be the speed, processing in your browser and connection with already made mockups - that means we support the original authors

</comment></comment></comment><comment><USER13> Looks cool, but then as I scrolled I was bummed to see that it was only white hands (with maybe one that wasn't white? Or a good suntan?). Any plans to build up a more diverse hand collection?

<comment><AUTHOR> Sure, it's just a first collection of mockups. We're going to release 5 new mockups every week via our newsletter and social media so stay tuned!

</comment></comment><comment><USER14> It would be cool if you had transparent backgrounds.

<comment><USER7> We plan to add mockups every week and some simple devices with transparent background coming in upcoming days

</comment></comment><comment><USER15> Very nice. Does it work with animated GIFs? I'd love to upload a motion graphic to it and have it in the placeholder.

</comment><comment><USER16> Great! In the google developer console where you can configure the android play store entry for your app, some special pictures require a fixed size:

1024 x 500 (functional graphic) 180 x 120 (advertisement graphic) 1.280 x 720 (TV banner)

It would be immensely useful if I could directly download them in that size.

</comment><comment><USER17> This is great - used it right away (the white iPad mini landscape view using a screenshot taken from my own iPad mini) on agendashift.com and credited/recommended you in our LinkedIn group. Thanks for sharing!

</comment><comment><USER18> This looks really cool. I'll definitely try it again, but there is an error in the images I download.

[http://imgur.com/AdXVBDs](http://imgur.com/AdXVBDs)

Ubuntu 14.04 Chrome 46

</comment><comment><USER19> All the lowercase letters 't' on your page looks weird for me. They're a little bit smaller than all other letters.

Using Firefox on Win10.

<comment><AUTHOR> We use webfont Montserrat. The render of some letters may seem wierd on some screen resolutions :(

</comment></comment><comment><USER20> Looks nice, the only thing that I noticed is the facebook button - it's not in a language I recognise, "to se mi libi"

</comment><comment><USER21> Seems like placeit.net, very much so. Any connection?

<comment><AUTHOR> Nope, it's a free alternative available for all designers for free with less useless features and better UX.

</comment></comment><comment><USER22> Do you employ 'hand models'?

<comment><AUTHOR> Hi! We're gonna release 5 new mockups every week so there will be some hands for sure!

</comment></comment><comment><USER23> Does anyone not in the manufacturing or retail sectors ever use the term "Notebook"? I've never heard anyone utter it in normal conversation and every time I read it I have to mentally translate it to "Laptop". Is it a UK thing? Do people in the US habitually refer to portable computers as "Notebooks"?

<comment><USER24> Definitely a regional thing. In Germany both terms appear as loanwords (I don't think there is a "real" German word for it) and they're used interchangeably.

One of the two was a trademark leading to the other one being pushed as an alternative. But I can't even remember which one -- at this point I couldn't even tell you which phrase is more widely used.

EDIT: IIRC at some point "Notebook" was used to refer to laptops that were smaller and/or lighter than the regular (rather heavy and bulky) laptops at the time. There's also a major online discounter called notebooksbilliger.de (literally "cheaper notebooks"). In day to day language I would err towards "Laptop" being the more widespread term but not by much.

<comment> martin-adams You're not referring to netbooks are you?

<comment><USER24> No, netbooks were a separate category in sizes that are now common with tablets (i.e. around 10 inches). There's also "subnotebook" but I never understood the exact distinction of that category.

</comment></comment></comment></comment><comment><USER25> Brilliant! Kickstarter fraud just got even easier. Now you can fool your customers into thinking you have a working prototype in record time!</comment>


How to start with AI and machine learning? - <AUTHOR>

I've been coding for more than 14 years, but I haven't figures out how to really code AI, I've learned to code all my lufe on my own, I have made some basic AI but it's really complex full of recursuve functions, lots of ifs and complex ways of analyzing natural language, all done "handmade". I bet I'm doing it wrong, I'm doing it the way I can. How can I really start with this? <comment><USER2> There are MOOCs on Machine Learning and AI at both coursera.org and edx.org. Stanford CS224N, Natural Language Processing, will be on the web, not a MOOC. [http://web.stanford.edu/class/cs224n/](http://web.stanford.edu/class/cs224n/)</comment>


How should you deal with difficult team members? - <AUTHOR> https://www.techinasia.com/talk/deal-difficult-team-members <comment> amar-singh Hi,

Its always very difficult to handle with different team members. But yes, with proper plan and co-ordination you can handle a team with difficult members. Team management is a skill which a manager needs to have. To handle a team first you should first understand their mindset, so that it will be easy for you to handle them.</comment>


Carl Malamud Takes on WestLaw (Putting a complete database of US Case law in the public domain) - <AUTHOR> http://radar.oreilly.com/archives/2007/08/carl_malamud_ta.html <comment><USER2> As a law student, I can attest to the fact that a great deal of Westlaw's value comes from the content they add. However, almost all of that value is derived from the texts of the cases themselves (in fact, all of it other than the search engine - which is fantastic compared to the alternatives [see findlaw.com another West product]). Westlaw provides overall synopses of cases, brief summaries of a case's points of law, and the ability to easily see any cases that cite the one you are reading (and if they do so positively or negatively).

Aside from the search engine, I wonder if most of this couldn't be replicated by some sort of a wiki. Given a complete collection of the texts and enough knowledgeable, willing volunteers - could Westlaw be replicated?</comment>


Ask HN: Which laptop do you use? - <AUTHOR>

I've heard most hackers use thinkpad / macbook. Which laptop do you use? <comment><USER2> Dell Inspiron 15" dual-core 2.3GHz, 2GB RAM, 250GB HD. Purchased from Best Buy for $399 on Black Friday in 2010

</comment><comment><USER3> Lenovo W500 with 8GB RAM (the max, sadly).

Sub-17" WUXGA screen and trackpoint mouse are must-haves for me.</comment>


Apple Induced Anxiety - <AUTHOR> https://matt.sh/apple-anxiety <comment><USER2> I ran into similar large list of issues, and reported the via apple bug reporter and nearly all of them has since been resolved that were actual bugs. Rather than posting them on his site, why not submit them as individual bugs to apple bug reporter and if he has, please list the rdar number for each.

He mentions in one section every song has a "forced" 5 second delay, in another section says "routinely" 5 second delay. Since those are two very different statements might be best to clarify which is accurate. When I click play it starts from 0 to 2 seconds on each and every song. Of course this will depend on your connection speed or other factors. So he might want to clarify he is experiencing slow load times rather than his implication that each and every iOS user has to wait an aribitary 5 second delay for each song which of course is untrue.

For error 1, wasn't able to get the phone to crash doing his test.

Control center remembers my last song played. But once again there will always be scenarios where bugs may happen and when they do file a report with apple and include all the device data dumps so apple can determine under what conditions it happens and fix it.

I'd go issue by issue but it seems rather than written as thorough bug reports they are more from a frustrated user rather than written to help apple resolve the issues.

Such as "Search is useless". Which means search serves no use which of course is untrue and not a bug but rather on the apple bug reporter he should file a feature request to show more results. However I think it's worked as expected. When I search Taylor Swift it shows the top 3 Albums the top three songs, the top three playlists the top three music videos. If he wants to see all the albums all he has to do is click on the title "albums" above the three most popular in the search results. Apple's implementation of showing the top 3 of each by default makes far more sense than attempting to list all by default for many reasons.</comment>


Are foreign keys really necessary in a database design? - <AUTHOR> http://www.diovo.com/2008/08/are-foreign-keys-really-necessary-in-a-database-design/

<comment><USER2> The payoff for foreign keys and other constraints is somewhat higher when more than one application is using the same database. Otherwise, it's hard to be sure that separate applications aren't treating it in subtly inconsistent ways, and particularly difficult to track the problems down once they occur.</comment>


Tail Recursion - <AUTHOR> http://rodrigosasaki.com/2012/11/24/tail-recursion/

<comment><USER2> Decent explanation, but I have a couple quibbles.

First, the term "tail recursion" is overly narrow. This transformation should apply to all tail calls, not just recursive ones. This is useful, for example, in families of mutually recursive functions.

Second, this transformation is not really an optimization, as it changes the behavior of some programs (by preventing stack overflow or memory allocation errors). It's a documented feature of languages (or specific implementations of languages) that users rely on to write programs in a particular style.

I prefer the term "tail call elimination" to describe these transformations.

<comment><USER3> Of course, some languages only support elimination of tail calls when they're recursive. I believe that Scala suffers from this (since the JVM doesn't support tail call elimination).

<comment><USER2> Good point, I'm not very familiar with Scala. I think Clojure may also have this limitation.

</comment></comment></comment><comment><USER3> People interested in how tail call elimination is performed by the compilers of other languages may be interested in a post I wrote on the F# team blog some time ago: [http://blogs.msdn.com/b/fsharpteam/archive/2011/07/08/tail-c...](http://blogs.msdn.com/b/fsharpteam/archive/2011/07/08/tail- calls-in-fsharp.aspx).

<comment><USER2> Nice article.

This makes me wonder if Visual Studio's F# mode could help detect common errors, e.g. highlight recursive calls not made in tail position.

On the other hand, this could get annoying as such calls are often not a real problem in practice.

<comment><USER3> It would be possible to do this, but as you note it would potentially be annoying in practice. "tailcall" is a reserved (but unused) word in F#, so the compiler could be extended to issue an error if the user prefixed a non-tail call with that word. This "opt in" approach would presumably be less invasive while allowing people to indicate cases where the semantics are actually important to them. Having said that, as far as I'm aware there are no current plans to implement such a feature (and I haven't seen users clamoring for it, either).

</comment></comment></comment><comment><USER4> I've recently enjoyed the explanation of tail recursion on "learn you some Erlang":

<http://learnyousomeerlang.com/recursion>

</comment><comment><USER5> Straight out of SICP :)</comment>


The Smart Gun Doesn't Exist for the Dumbest Reasons - <AUTHOR> https://www.bloomberg.com/news/features/2019-04-15/the-smart-gun-doesn-t-exist-because-of-new-jersey-and-the-nra <comment><USER2> "If we can set it up so you can't unlock your phone unless you've got the right fingerprint," he asked in 2016, "why can't we do the same thing for our guns?"

My phone can't read my fingerprint reliably. It definitely can't do it when it's wet.

<comment><USER3> Poor reliability is a theme in IoT, self-driving cars, and here.

We are all accustomed to the fact that computers are flakey. Our computers and phones sometimes need rebooting to fix weird behavior. My printer just forgot how to connect to WiFi for no apparent reason. Everyone has stories like these.

What's tolerable for many popular products is not tolerable for others, though. Leaving aside whether having a gun actually protects you, people own guns for that reason. If your gun won't fire when your life is in danger, or if your car won't swerve when a truck is in the road, or if your thermostat won't turn on when it's bitterly cold, that's unacceptable.

Clearly there exists highly reliable technology: plane and spaceship controls, for example. My understanding is that an extreme focus and expenditure on reliability is required to achieve that.

I think that some of these consumer product categories where it's critical that the thing actually work will require the same kind of rigor before people can trust them.

</comment></comment><comment><USER4> "Smart guns" in the form of the Magna-Trigger Conversion have been available for decades:

[http://gunssavelives.net/gear/smart-guns-have-been- available...](http://gunssavelives.net/gear/smart-guns-have-been-available- for-decades-still-not-popular-the-magna-trigger-conversion/)

From the article:

 _" Magna-Trigger conversion is a custom process in which a magnetic piece is placed in the gun, preventing it from firing unless the user is also wearing a magnetic ring. Despite the simplicity in this system, it never really caught on for one simple reason. Generally people want their defensive firearms to be as simple as possible. Simple, well machined firearms make for reliable firearms._"

BTW what responsible manufacturer would sell a gun that might not shoot when you need it to? That's a lawsuit-in-waiting for manufacturers. Depending on the local political beliefs, a gun that _would_ shoot under the circumstances is _also_ a lawsuit_in_waiting! So "smart guns" are a lose-lose situation for gun manufacturers.

And when a "smart gun" mechanism fails (say, due to low battery) should it allow _anyone_ to shoot it)? That's what I would want but I think others would want a gun to be disarmed under such circumstances.

Imagine being raped/robbed/killed b/c your gun has a low battery! [the Magna- Trigger system requires no batteries]

<comment><USER5> The tricky part is getting someone to store their gun with less care than they store their ring.

Rings are also not unique to each gun.

If _any_ of these technologies worked reliably, law enforcement would be all over it, because (1) perps couldn't take officers' guns and use them and (2) the politicians who make the purchase authorizations would love to claim credit.

</comment></comment><comment><USER6> It's interesting how this is a story where to a degree, the demands of the power-user (who probably wouldn't want this product to begin with) help make the product not happen at all:

> The trouble is that fingerprint readers struggle with sweat or dirt, and > friends in law enforcement advised Stephens that cops often wear gloves. A > sensor error in a self-defense situation could prove fatal.

It's absolutely the case that (for example) fingerprint readers are flaky, and cops would not be willing to tolerate anything that could stop them from using a firearm in an emergency. But really, does the technology even matter then? Why would a cop want a smart gun? So from the beginning, looking at what cops think about your smart gun prototype means you're looking at the entirely wrong audience.

Likewise, are hunters the ones who want a smart gun? What about single mothers who need to be able to defend themselves during a home invasion? The right authentication mechanism and tradeoffs depend on each audience, and the things they want _definitely_ don't match with what cops want. If I was picking up a firearm to use on the range or for hunting, being told 'this RFID ensures nobody can use it after stealing it or taking it from you, but it has a 1% chance of not letting you fire it' might be a pretty good pitch - but if I'm a cop, there's no way I want even an 0.1% failure chance, because if I had to draw my gun a lot of stuff has already gone wrong.

Kind of a baffling place for an effort like "let's make smart guns" to end up at.

</comment><comment><USER7> And of course, the problem is, even if New Jersey fully repealed the law, it still leaves the demonstrated goal behind: That should the technology become available, liberal lawmakers will seek to outlaw traditional firearms. Why would any gun manufacturer want to jump on this trend?

<comment><USER8> Why? Because if I start the market, and the rest of the market gets shut down, then I have the market advantage for a while while the other manufacturers have to retool.

Why? Because of the guns are more expensive, then the profit margin may be higher and my profits higher, even if the overall market size decreases.

I could likely think of others if I gave it more than a few moments' thought.

<comment><USER7> It's likely any gun manufacturer could start putting out smart guns in short order if they needed to for competitive reasons, the market advantage would be very short and very small, and I would guess most gun buyers would focus on reputable brands for firearms over "first to market" with a particular flavor.

Furthermore, we have to bear in mind that there is a significant portion of gun control advocates who have already made their real goal clear: To ban all guns. So capitulating to moves like this is simply allowing them to move the goalpost, making a small quantity of firearms that are more restricted, before moving it again to restrict those even further.

You may be giving this a few moments' thought, but I'm guessing executives in the firearms industry and NRA members have spent significantly more time thinking about it.

<comment><USER8> Oh, I'm certain there are many reasons for _not_ doing it.

However, most of what you said was appropriate for a large gun manufacturer. They don't apply to a small one, which might start this sort of production for the 0.001% of the market interested in such weapons.

I am a gun control advocate. I do not want to ban all guns. I want to have gun control laws similar to what's present in Finland, which is one of the countries with the highest per capita gun ownership in the world. (#10 according to [https://en.wikipedia.org/wiki/Estimated_number_of_civilian_g...](https://en.wikipedia.org/wiki/Estimated_number_of_civilian_guns_per_capita_by_country) .) I think the large majority of gun control advocates in the US also do not want to ban all guns, and would be just fine with similar gun laws.

BTW, you have just described another reason for making such guns. If someone is against all sorts of gun ownership, then there is a short-term justification for producing these sorts of weapons. By doing so they get the foot in the door for large scale bans.

Since that hasn't happened, and since anti-gun-ownership advocates have _also_ had significantly more time thinking about it, your own logic suggests that it isn't tenable.

<comment><USER5> What Finland law differences would you want in your area?

<comment><USER8> How is your question much different than "what are the gun laws in Finland"? [https://en.wikipedia.org/wiki/Gun_laws_in_Finland](https://en.wikipedia.org/wiki/Gun_laws_in_Finland)

> no types of firearms are outright banned, and in principle a person can > apply for a licence for any type of gun

(Though some weapons like machine guns and rocket launchers are 'specially dangerous' and 'can only be granted on a very limited basis and are essentially for recognized collectors and filming purposes only'.)

> A license is always needed for possession of a firearm and all firearms are > registered. Firearms may only be carried while they are being used for a > specific purpose (e.g. hunting, shooting at the range). When transporting a > firearm to or from such activity, the firearm must be unloaded and stored in > a case or pouch. The owner of a firearm is responsible for making sure that > firearms and ammunition do not end up in unauthorized hands.

> The application process includes a check of criminal records, the police > interviewing the applicant and in some cases a computer-based personality > test or a medical health certificate. Any significant history with violence > or other crime, substance abuse or mental health issues will cause the > application to be rejected.

> Carrying a firearm licensed for hunting or sporting use outside of that > specific activity is not allowed.

Those are all differences from, I believe, anywhere in the US. And for all of the ones I listed I say, "yes, please!"

</comment></comment></comment></comment></comment></comment><comment><USER9> Gun owner here. I've owned guns for 5 decades, my father before that, his father before that. Not once have we shot at a human being. We're sporting mid-westerners.

If the technology is electronic, no thanks. Guns are fascinating mechanical marvels. The way the actions work, the trigger pulls, etc. is like a fine watch. I don't want any electronics involved.

But if the lock were mechanical-- say a 4-or-5 digit (or alpha) roller lock-- then I could see it. Your fearful types ('Keep it loaded!') could even set off just one tumbler, it'd still be very very difficult to crack.

My opinion, anyway. I don't see the appeal in the electronic version.

</comment><comment><USER10> "A sensor error in a self-defense situation could prove fatal."

I've read stories where a grip safety(a button that is pressed down when you're gripping the handgun properly) has slowed down the person just enough to let the bad guy shoot him a couple of times before he could return fire. Safety systems probably save more innocent lives than the they've hurt, but I bet anything less than perfect in a smart gun is really going to hurt popularity among gun enthusiasts.</comment>


Japan unfurls Ikaros solar sail in space - <AUTHOR> http://news.bbc.co.uk/1/hi/science_and_environment/10293284.stm

<comment><USER2> Anyone else think naming the thing _Ikaros_ is tempting fate much?

<comment><USER3> The Japanese engineers read manga based on Greek mythos. Thus, they were forewarned and left out the wax.

</comment></comment><comment><USER4> Where are they sending the spacecraft? do they have any estimates on how fast it will get up to?

</comment><comment><USER5> many more details on official blog <http://www.jaxa.jp/press/2010/06/20100611_ikaros_e.html>

</comment><comment><USER6> Perhaps an odd question, but, are there any hobby astronomers here who might've managed to digiscope images of this thing?</comment>


How Trump Is Outspending Every 2020 Democrat on Facebook - <AUTHOR> https://www.nytimes.com/interactive/2019/05/21/us/politics/trump-2020-facebook-ads.html <comment><AUTHOR> So many questions: Assuming a similar playbook to 2016, does Facebook (and Google for that matter) have "embedded" employees working in the Trump campaign? What about Biden?</comment>


Ask HN: How to pass cryptocurrency assets in a will? - <AUTHOR> Does anyone have any good ideas on how one would pass on cryptocurrencies to family in the event of death?
I imagine you just need to pass on the type of wallet used, and the mnemonic recovery words so they can access the coins.
But you can't just leave those words in a plaintext will obviously. Any thoughts? <comment><USER2> Shamir's Secret Sharing Scheme (ssss) would allow you to encrypt your recovery words in such a way that you could distribute the encrypted recovery words to N parties, and require the knowledge of K parties (n < k) to decrypt the secret.

ssss doesn't rely on any trusted party--for example, you could split into 5 "shares", and set a threshold of 3. Then distribute the shared amongst 5 of your most trusted friends (selecting them in such a way that it's unlikely they'll collude), and instruct them to only use their share of the secret when they've confirmed your death. 3 of them would have to "come together" (physically, or over a shared terminal or screen) and enter their "shares" to decrypt your recovery words. However, this would cause all 3 of them to know your recovery words.

To get around that, don't encrypt the recovery words themselves using ssss. Instead, encrypt the recovery words using a modern, strong, encryption algorithm, using a randomly generated key. Then use ssss to encrypt the randomly generated key, and share that.

Only give the ciphertext of the recovery words to the intended recipient upon death.

Instead of friends, you could also split the secret between your executor and the intended recipient/family remember, requiring consent from both.

Whatever you do, don't forget to write thorough instructions :)

<comment><USER3> To add to this, you can instead use the multisig wallet and add your family members but in this case you are not splitting the private key amongst n members but you're creating n unique keys that's required to sign before the owners can complete a transaction. When someone dies in your family, you can remove that person from the wallet.

</comment></comment><comment><USER4> It's no different from leaving any bank account to an heir. You can leave the key to a safety deposit box that the named heir has to physically be present to claim.

You should be careful about using technical solutions, like secret sharing, since this is not a technical problem. It is a legal problem, and you don't want parties to conspire to obtain the property contrary to your wishes.

<comment><USER2> There is something ironic about trusting your decentralized cryptocurrencies to a centralized institution (like a bank that offers safety deposit boxes).

Someone who keeps enough assets in cryptocurrencies to want to include them in their will, chances are that they have a preference towards decentralized systems (or a distrurst/dislike of current authority/government-based systems). Nothing stops a government from forcing a bank to turn over the contents of a safety deposit box.

I definitely know 5 people that I can trust to not collude, even in the face of a subpoena or some government-issued directive.

<comment><USER4> Do what works best in your own personal situation, secret sharing, leave a riddle that only the specific heir can answer in order to find a location, safety deposit box, etc.

Just be aware that if you are leaving anything significant, people many times act differently when seeing dollar signs. Not just collusion, but refusing to divulge their secret without themselves getting paid.

Either way, you are trusting someone to one degree or another. If the expected passing is decades away, people losing their key material is a significant risk.

</comment></comment></comment><comment><USER5> Easiest thing is to liquidate and leave those assets in a will. Anything else has a non-trivial chance of loss without recourse (unlike liquidated currency). That being said if you had that much money in crytocurrencies you probably wouldn't want to leave it to a bank.

</comment><comment><USER6> Store them in fully reconstructable deterministic wallet (the one that can be rebuilt from scratch using long enough passphrase only). Split passphrase in 3 pieces (A, B, C) and store it in an envelope with instructions in three different, unrelated legal firms to be given to your heirs in case of your death.

Firm 1: A,B

Firm 2: C,B

Firm 3: A,C

This way:

\- Your assets are protected from banks getting hold of your assets (including safety deposit boxes) in a future for whatever mayhem reasons.

\- You assets are protected in case if any of these firms gets uncooperative, hacked, robbed or blackmailed to disclose password. Single firm cannot reconstruct your wallet - it doesn't have enough information.

\- It's enough to have cooperation of 2 out of 3 firms = 2 letters to fully reconstruct the wallet.

</comment><comment><USER7> put the mnemonic on a piece of paper in a safety deposit box</comment>


If your website's full of assholes, it's your fault - <AUTHOR> https://anildash.com/2011/07/20/if_your_websites_full_of_assholes_its_your_fault-2/ <comment><USER2> (2011). But more relevant than ever, seeing as "too many assholes" now includes small asshole entities with bot armies. I think Anil's declaration that it's a "solved problem" is a bit optimistic as well. Youtube and Facebook have some variation of all his recommendations implemented, but they still get overwhelmed by all the negativity.</comment>


Ask HN: Recommendations to revive an old MacBook (2009) - <AUTHOR> I have an older macbook and want to put it to some good use and throw in new OS or something else.  Any recommendations for an OS or maybe setting it up as a server of some kind? <comment><USER2> This is fun! I use a 2007 macbook for travel since it's cheap enough to be a disposable laptop. It was my primary laptop up until last year.

The setup seems to work best if you treat it as a dumb terminal. Any compute heavy tasks will basically not work so you should network into a desktop or server to get things done.

On LAN you can use X window forwarding over SSH without problems. This works for most applications.

Over WAN you can set a raspberry pi with wake on lan and use that as a jump box. If you port forward your router to the pi, you'll be able to hit the pi off network. Then tunnel your ssh connection through the pi to the main workstation. Lots of options exist for working remotely, emacs tramp + sshfs is my go to.

Not sure if you have the 2009 Core 2 Duo macbook but getting most linux distros installed is quite a pain. It has a complicated firmware setup. No modern linux distro that I've tried supports it out of the box so you have to manually perform some of the install setup by using grub-efi-ia32 and blessing the boot partition. Debian or Lubuntu work well if you get over the install hurdle. OpenBSD is the only OS that works out of the box on this model.

For hardware getting a SSD and new battery are good ways to improve performance. The DVD drive can usually be swapped out for more storage or something if you want.

</comment><comment><USER3> Ubuntu.</comment>